一个针对 React Server Components 中 CVE-2025-55183(源代码泄露)和 CVE-2025-55184(拒绝服务)漏洞的全面安全测试环境。
仅用于教育和安全研究目的
此仓库包含故意留有漏洞的应用程序和利用工具。只允许在您拥有或获得明确书面授权进行测试的系统上进行测试。 未经授权的测试是非法且不道德的。
这两个漏洞影响 React Server Components 版本 19.0.0 到 19.2.2,于 2025 年 12 月 11 日披露。
| 属性 | 值 |
|---|---|
| 严重性 | 中等 (CVSS 5.3) |
| 类型 | 信息披露 |
| 影响 | 服务器源代码泄露 |
| 身份认证 | 无需认证 |
攻击者可以通过对服务器函数对象调用 .toString() 来强制 Server Action 参数泄露仅服务端可访问的源代码。这会暴露:
| 属性 | 值 |
|---|---|
| 严重性 | 高 (CVSS 7.5) |
| 类型 | 拒绝服务 |
| 影响 | 完全服务中断 |
| 身份认证 | 无需认证 |
精心构造的载荷会创建无限的 Promise 递归,导致 Node.js 服务器无限挂起。后果包括:
TL;DR:该应用确实存在漏洞(React 19.0.0),但在本演示环境中,现代防护措施可能会阻止实际崩溃。
CVE-2025-55184 是一个真实的、关键的漏洞,影响生产环境中的 React 19.0.0-19.2.2。然而,在本地演示中成功展示 DoS 崩溃可能面临以下挑战:
即使漏洞无法导致演示崩溃,您仍可通过以下方法验证漏洞:
cd vulnerable-app
npm list react react-dom
# 输出显示:
[email protected] ← 存在漏洞的版本
[email protected] ← 存在漏洞的版本
如果您看到 19.0.0 到 19.2.2,则说明应用程序确实存在漏洞。
cd scanner
python scan.py http://localhost:3000
扫描器会检查:
git clone https://github.com/StealthMoud/react-server-cve-lab.git
cd react-server-cve-lab
# 启动应用(对两个 CVE 均存在漏洞)
docker-compose up --build -d
# 应用可访问:http://localhost:3000
cd scanner
# 安装依赖
pip install -r requirements.txt
# 扫描两个漏洞
python scan.py http://localhost:3000
# 仅扫描 CVE-2025-55183
python scan.py --cve 55183 http://localhost:3000
# 仅扫描 CVE-2025-55184
python scan.py --cve 55184 http://localhost:3000
# 扫描多个目标
python scan.py --file targets.txt
react-server-cve-lab/
├── README.md # 本文件
├── DOCUMENTATION.md # 完整技术文档
├── LICENSE
├── .gitignore
├── docker-compose.yml
│
├── vulnerable-app/ # 对两个 CVE 均存在漏洞
│ ├── Dockerfile
│ ├── package.json
│ ├── next.config.js
│ └── app/
│ ├── layout.js
│ ├── page.js
│ └── actions.js # 存在漏洞的 server actions
│
├── scanner/
│ ├── requirements.txt
│ ├── scan.py # 两个 CVE 的扫描器
│ └── README.md
│
└── exploits/
├── exploit-55183.py # CVE-2025-55183 的 PoC
├── exploit-55184.py # CVE-2025-55184 的 PoC
└── README.md
该应用程序是一个运行 React 19.0.0 并启用 Server Actions 的 Next.js 应用,对两个 CVE 均存在漏洞。
# 使用 Docker Compose(推荐)
docker-compose up --build -d
# 检查是否运行
curl http://localhost:3000
# 查看日志
docker-compose logs -f
# 停止应用
docker-compose down
cd vulnerable-app
npm install
npm run build
npm start
统一扫描器可检测 CVE-2025-55183 和 CVE-2025-55184。
cd scanner
# 扫描两个 CVE
python scan.py http://localhost:3000
# 仅扫描特定 CVE
python scan.py --cve 55183 http://localhost:3000
python scan.py --cve 55184 http://localhost:3000
# 详细输出
python scan.py --verbose http://localhost:3000
# 自定义超时
python scan.py --timeout 10 http://example.com
# 从文件扫描多个 URL
python scan.py --file targets.txt
# 将结果保存为 JSON
python scan.py --output results.json http://localhost:3000
# 禁用 SSL 验证
python scan.py --no-verify https://self-signed.example.com
# 扫描所有 CVE 并输出详细信息并保存结果
python scan.py --verbose --output scan-results.json http://localhost:3000
╔═══════════════════════════════════════════════════════════╗
║ React Server Components 漏洞扫描器 ║
║ CVE-2025-55183 和 CVE-2025-55184 ║
╚═══════════════════════════════════════════════════════════╝
[*] 正在测试 http://localhost:3000
[CVE-2025-55183] 源代码泄露
[!] 存在漏洞:源代码已泄露
暴露的函数数量:3
代码长度:1247 个字符
包含秘密:✓(找到 API 密钥)
[CVE-2025-55184] 拒绝服务
[!] 存在漏洞:DoS 攻击成功
状态码:404
内容类型:text/plain
找到标记:✓
============================================================
摘要
============================================================
总共测试:1
CVE-2025-55183 存在漏洞:1
CVE-2025-55184 存在漏洞:1
两个 CVE 均存在漏洞:1
不存在漏洞:0
有关两个漏洞的全面技术分析:
DOCUMENTATION.md - 完整的技术文档,涵盖:
两个漏洞均在相同的补丁版本中修复:
更新 React 到已修补的版本:
npm install [email protected] [email protected]
# 或
npm install react@latest react-dom@latest
更新 Next.js(如果适用):
npm install next@latest
验证修复情况:
npm list react react-dom next
python scanner/scan.py http://localhost:3000
# 运行扫描器确认修复
cd scanner
python scan.py http://your-patched-app.com
# 预期输出:
# [+] CVE-2025-55183: 不存在漏洞
# [+] CVE-2025-55184: 不存在漏洞
欢迎贡献力量!可改进的领域包括:
欢迎提交 Pull Request。
本项目采用 MIT 许可证授权 - 详情请参阅 LICENSE 文件。
如果您觉得本仓库对您的安全研究有帮助,请考虑给它一个星标!
| 方面 | CVE-2025-55183 | CVE-2025-55184 |
|---|
| 严重性 | 中等 | 高 |
| 类型 | 信息披露 | 拒绝服务 |
| 影响 | 源代码泄露 | 服务器崩溃 |
| 检测方式 | 响应中包含代码 | 服务器超时/挂起 |
| 恢复 | 即时恢复 | 需要重启 |
| 包 |
|---|
| 存在漏洞的版本 |
|---|
| 已修补的版本 |
|---|
| React | 19.0.0 - 19.2.2 | 19.0.3+, 19.1.4+, 19.2.3+ |
| Next.js 15.1.x | < 15.1.4 | 15.1.4+ |
| Next.js 15.0.x | < 15.0.4 | 15.0.4+ |
| Next.js 14.x | < 14.2.24 | 14.2.24+ |