olezhaku/react2shell-toolkit
GitHub: olezhaku/react2shell-toolkit
一个用于授权环境下批量验证和调查 CVE-2025-55182(React2Shell)Next.js 远程代码执行漏洞的 Python 安全评估工具包。
Stars: 3 | Forks: 0
# Next.js RCE 评估工具包
一个用于在授权环境中验证和调查
[CVE-2025-55182](https://www.cve.org/CVERecord?id=CVE-2025-55182)(也称为
**React2Shell**)的 Python 工具包。该漏洞影响 React
Server Components,并可能使使用
Next.js 等框架构建的应用程序面临未授权的远程代码执行风险。该工具包集成了目标收集、
批量验证、交互式测试 shell、主机枚举以及
可选的验证后实用工具。
## 漏洞说明
- **CVE:** CVE-2025-55182
- **名称:** React2Shell
- **类别:** 未授权远程代码执行
- **受影响技术:** React Server Components 及其依赖框架,
包括受影响的 Next.js 配置
- **工具包验证:** `hosts_scanner.py` 在批量检测期间仅执行固定的
`echo VULN_TEST` 标记
本代码库仅作为评估辅助工具,不能替代检查
官方安全公告及应用厂商补丁。
## 功能特性
| 工具 | 用途 | 输出或效果 |
| --- | --- | --- |
| `shodan_parser.py` | 根据查询列表打开经过验证的 Shodan 搜索,并收集标准化的 HTTP(S) 源。 | 将唯一的主机追加到 `files/targets.txt`。 |
| `hosts_scanner.py` | 使用固定的 `VULN_TEST` 命令并发检查目标列表。 | 将确认的目标写入 `files/vulnerable.txt`,未成功的目标写入 `files/trash.txt`。 |
| `exploit.py` | 重新验证单个目标并提供交互式命令会话。 | 在终端打印远程命令输出。 |
| `universal_scanner.py` | 收集系统、容器、网络、文件系统、进程、凭据暴露和权限风险信息。 | 将详细的发现保存到 `scan_results.json`。 |
| `infrastructure/universal_download.py` | 通过命令通道以可恢复的 Base64 块传输远程文件。 | 创建或恢复本地文件并验证其大小。 |
| `infrastructure/mongo_proxy.py` | 将验证后的主机用作 MongoDB 清单和有限采样的网络路径。 | 列出数据库、集合、计数和一个小样本。 |
| `infrastructure/mongo_dump.py` | 导出一个 MongoDB 数据库或所有非系统数据库(具有单集合限制)。 | 在评估主机的 `/tmp` 下创建一个 JSON 文件。 |
| `infrastructure/aws_dump.py` | 清点 ECS 任务角色可用的 AWS 资源。 | 在 `/tmp` 下创建一个 JSON 文件;可能包含敏感值。 |
| `infrastructure/install_ssh_key.py` | 将公钥添加到当前远程用户的 `authorized_keys` 中。 | 修改远程 SSH 配置并建立持久化。 |
| `infrastructure/trace_cleaner.py` | 移除工具包残留,并尝试清除历史记录、缓存和日志。 | 破坏性地修改远程文件;仅在批准的清理操作中使用。 |
依赖 RCE 的工具预期目标环境为带有常见 shell 实用工具的类 Linux 系统。
一些基础设施辅助工具还预期评估主机上已经可用 Node.js 和相关的 npm
包。
## 环境要求
- Python 3.10 或更高版本
- 授权目标的网络访问权限
- 通过 Playwright 安装 Chromium(供 `shodan_parser.py` 使用)
- 用于目标收集的 Shodan 账户
## 安装说明
```
python -m venv .venv
```
激活环境:
```
# Linux 或 macOS
source .venv/bin/activate
# Windows PowerShell
.\.venv\Scripts\Activate.ps1
```
安装依赖项:
```
python -m pip install -r requirements.txt
python -m playwright install chromium
```
对于 Shodan 收集,将 `.env.example` 复制到 `.env` 并设置 `LOGIN` 和
`PASSWORD`。切勿提交 `.env`。
## 典型工作流
1. 在 `files/queries.txt` 中每行放置一个 Shodan 查询,或者将授权
目标直接放在 `files/targets.txt` 中。
2. (可选)使用 `python shodan_parser.py` 收集目标。
3. 运行固定标记的批量检查:
```
python hosts_scanner.py --file files/targets.txt --concurrency 50 --timeout 30
```
4. 在运行任何命令执行或基础设施实用工具之前,检查 `files/vulnerable.txt` 并手动验证所有权和范围。
要重置扫描仪跳过列表:
```
python hosts_scanner.py --file files/targets.txt --clear-trash
```
## 单目标工具
```
python exploit.py https://target.example
python universal_scanner.py https://target.example
```
基础设施实用工具:
```
python infrastructure/universal_download.py [LOCAL_FILE] [CHUNK_SIZE]
python infrastructure/mongo_proxy.py
python infrastructure/mongo_dump.py [OUTPUT_FILE] [LIMIT]
python infrastructure/aws_dump.py [OUTPUT_FILE]
python infrastructure/install_ssh_key.py [PUBLIC_KEY_PATH]
python infrastructure/trace_cleaner.py
```
在不带参数的情况下运行每个脚本以查看其完整的命令行帮助。
## 局限性
- 当前 HTTP 客户端调用中禁用了 TLS 证书验证。
- 检测取决于受影响的 Next.js 行为所使用的响应格式。
- 远程命令假定存在 `bash`、`base64`、`dd` 和 `timeout` 等工具。
- 云和数据库结果受远程身份权限的限制。
- 该工具包不提供补救措施,也不证明目标在范围内。
标签:HTTP工具, Python, StruQ, 插件系统, 无后门, 特征检测, 编程工具, 网络安全审计, 远程代码执行, 逆向工具