这是一个用于测试 Fastjson + MySQL 条件下不出网利用的测试环境。该环境演示了在 Fastjson 1.2.83 开启 autotype 的情况下(对于老版本 Fastjson 不开启 autotype 的情况也能利用类似的手法),通过 MySQL JDBC 的 NamedPipe 机制实现不出网 RCE 的利用方式。
详细的技术分析和利用原理请参考:
Fastjson1.2.83(开autotype)+MySQL不出网利用
https://fushuling.com/index.php/2025/12/04/fastjson1-2-83%e5%bc%80autotypemysql%e4%b8%8d%e5%87%ba%e7%bd%91%e5%88%a9%e7%94%a8/
使用 docker-compose 启动测试环境:
docker-compose up
启动后访问:http://127.0.0.1:8080
exp.py 是利用脚本,默认利用的是 java-chains 上的 OneForAllEcho 内存马(利用的是 rce.txt)。
通过请求头 X-Authorization 可以指定执行的命令,例如:
python exp.py
脚本会自动:
1. 将 rce.txt 中的恶意数据通过 socket 发送到目标服务器
2. 通过爆破 /proc/self/fd/{fd} 的方式找到缓存的恶意文件
3. 构造 Fastjson payload 触发反序列化
4. 执行内存马,通过 X-Authorization 请求头传递命令
fastjson_mysql/
├── docker-compose.yml # Docker Compose 配置文件
├── Dockerfile # Docker 镜像构建文件
├── pom.xml # Maven 项目配置文件
├── exp.py # 利用脚本(使用 OneForAllEcho 内存马)
├── rce.txt # OneForAllEcho 内存马的恶意 pipe 文件
├── calc_5.txt # MySQL 5 版本的恶意 pipe 文件(用于弹出计算器)
├── calc_6.txt # MySQL 6 版本的恶意 pipe 文件(用于弹出计算器)
├── calc_8.txt # MySQL 8 版本的恶意 pipe 文件(用于弹出计算器)
├── src/
│ └── main/
│ └── java/
│ └── com/
│ └── suctf/
│ ├── Application.java # Spring Boot 主应用类
│ ├── Fastjson_mysql_calc_5.java # MySQL 5 条件下 Fastjson 不出网利用示例代码(需要 calc_5.txt)
│ ├── Fastjon_mysql_calc_6.java # MySQL 6 条件下 Fastjson 不出网利用示例代码(需要 calc_6.txt)
│ ├── Fastjson_mysql_calc_8.java # MySQL 8 条件下 Fastjson 不出网利用示例代码(需要 calc_8.txt)
│ ├── Mysql_calc.java # MySQL 相关测试代码
│ └── controller/
│ ├── IndexController.java # 首页控制器
│ └── JsonController.java # JSON 解析控制器(/json/parse 接口)
└── README.md # 本文件
X-Authorization 请求头传递要执行的命令rce.txt 作为恶意 pipe 文件exp.py 脚本calc_5.txt 使用演示如何通过 Fastjson 反序列化触发 MySQL JDBC 的 NamedPipe 机制
Fastjon_mysql_calc_6.java: MySQL 6 条件下 Fastjson 不出网利用的示例代码
calc_6.txt 使用使用 com.mysql.cj.jdbc.ha.LoadBalancedMySQLConnection 类
Fastjson_mysql_calc_8.java: MySQL 8 条件下 Fastjson 不出网利用的示例代码
calc_8.txt 使用/json/parse 接口,用于接收和解析 JSON 数据该利用方式的核心在于:
NamedPipeSocketFactory 可以指定一个本地文件作为数据源,而不需要真实的网络连接/proc/self/fd/{fd} 机制,通过爆破文件描述符找到缓存的恶意文件$ claude mcp add fastjson_mysql \
-- python -m otcore.mcp_server <graph>