轻量级 Go 工具包,附带 Docker 化的 Next.js 实验室,用于探索和初步处理 CVE-2025-55182。仅限教育和授权测试。
React2Shell_Deconstructing_a_Perfect_10_RCE.pdf 及攻击路径示意图
checker:快速并发清单扫描(单个目标、文件或标准输入),基于启发式检测 RSC 暴露,每个目标输出 JSON 格式,最终汇总,可选 -only-vuln、-no-progress,自定义 -ua。poc:发送攻击风格的 RSC 多部分请求,并返回返回的摘要;支持通过 -c 自定义命令(默认 id)。-c)、超时与进度统计。-target、-list 或 -stdin;当缺少协议时自动添加 https://。vulnlab/),包含 Next.js 15.5.6/React 19、Dockerfile 和 docker-compose.yml,默认绑定到 localhost:3000,用于安全复现。cd checker
GOCACHE=/tmp/go-cache go build -o CVE-2025-55182 ./cmd/CVE-2025-55182
如果环境存在缓存权限问题,请设置 GOCACHE。
# 扫描器
./CVE-2025-55182 checker -target https://example.com
./CVE-2025-55182 checker -list ../targets.txt -c 50 -only-vuln
cat ../targets.txt | ./CVE-2025-55182 checker -stdin -no-progress
# PoC(利用样式请求)
./CVE-2025-55182 poc -target http://localhost:3000
./CVE-2025-55182 poc -target http://localhost:3000 -c "whoami"
CVE-2025-55182 是一个不安全的反序列化漏洞,涉及 React Server Components 从 Flight 载荷加载模块的方式。在 react-server-dom-webpack 中,辅助函数 requireModule(metadata) 获取一个模块,然后返回 moduleExports[metadata[2]]。括号访问会遍历原型链,因此攻击者控制的引用(如 $1:constructor:constructor)可以从导出的函数向上爬升至其 constructor(全局 Function 构造函数),并执行任意 JS。Flight 协议允许攻击者提供这些冒号分隔的属性路径,从而将模块加载器转变为远程代码执行的 gadget。
cd vulnlab
docker compose build
docker compose up
# 应用在容器内部监听 127.0.0.1:3000;以非 root 用户运行。
Dockerfile 构建 Next.js 应用(Node 20 Alpine),安装依赖,构建,并以非 root 的 nextjs 用户运行。docker-compose.yml 默认绑定 127.0.0.1:3000:3000,仅限本地测试。Snort / Suricata(HTTP 到服务器)
alert http any any -> $LAN_NETWORK any (
msg:"Potential Next.js React2Shell / CVE-2025-66478 attempt";
flow:to_server,established;
content:"Next-Action"; http_header; nocase;
content:"multipart/form-data"; http_header; nocase;
pcre:"/Content-Disposition:\s*form-data;\s*name=\"0\"/s";
pcre:"/\"status\"\s*:\s*\"resolved_model\"/s";
pcre:"/\"then\"\s*:\s*\"\$1:__proto__:then\"/s";
classtype:web-application-attack;
sid:6655001;
rev:1;
)
查询(易受攻击的 React RSC 包)
{
"queries": {
"detect_rev2shell_react_server_components": {
"query": "SELECT name, version, path FROM npm_packages WHERE (name='react-server-dom-parcel' AND (version='19.0.0' OR (version >= '19.1.0' AND version < '19.1.2') OR version='19.2.0')) OR (name='react-server-dom-turbopack' AND (version='19.0.0' OR (version >= '19.1.0' AND version < '19.1.2') OR version='19.2.0')) OR (name='react-server-dom-webpack' AND (version='19.0.0' OR (version >= '19.1.0' AND version < '19.1.2') OR version='19.2.0'));",
"interval": 3600,
"description": "Detects vulnerable versions of React Server Components packages (react-server-dom-*) affected by CVE-2025-55182 / CVE-2025-66478 / React2Shell.",
"platform": "linux,windows,macos",
"version": "1.0"
}
}
}