
Proof of Concept for CVE-2025-55182 ("React2Shell"). A fully dockerized environment demonstrating Remote Code Execution (RCE) via insecure deserialization in React Server Components. Includes vulnerable targets for both Vanilla React (Express) and Next.js, along with a custom Python exploit script.
⚠️ 免责声明:仅限教育用途 此仓库包含一个严重漏洞(CVSS 10.0)的功能性利用代码。其使用严格限于学术研究、安全分析和教育目的。请勿将此代码用于您不拥有或未经明确许可测试的系统。作者不对任何滥用行为负责。
本项目记录并展示了 CVE-2025-55182,这是一个存在于 React Server Components (RSC) 架构中的严重远程代码执行(RCE)漏洞,常被称为 "React2Shell"。该漏洞允许未经认证的远程攻击者通过操纵 react-server 所使用的 "Flight" 序列化协议在服务器上执行任意代码。
本实验室提供了一个受控、隔离的 Docker 环境,用于在两种不同场景下分析该漏洞:
react-server-dom-webpack 和 Express 的原始实现。该环境通过 Docker Compose 编排,由三个隔离容器组成,通过一个私有内部网络(research-net)相互连接。
| 服务 | 上下文 | 描述 | 易受攻击组件 |
|---|---|---|---|
vanilla-target | vanilla-rsc/ | 手动实现 RSC 协议的最小化 Express 服务器。 | [email protected] |
nextjs-target | nextjs-app/ | 使用 App Router 的标准 Next.js 应用程序。 | [email protected] (实现 react-server) |
attacker | exploit/ | 包含利用脚本的 Python 环境。 | 不适用 |
该漏洞源于 Flight 协议解析器中的不安全反序列化(CWE-502)。攻击者通过注入包含“伪造”块结构的特殊多部分载荷,可以:
.then 属性。$B 块)。Function() 构造函数以编译并执行任意 JavaScript(例如 child_process.execSync)。克隆仓库:
git clone https://github.com/trax69/cve-2025-55182-poc.git
cd cve-2025-55182-poc
构建并启动实验室:
docker-compose up -d --build
等待容器完全初始化。Next.js 容器可能需要几分钟时间完成首次构建。
利用逻辑封装在 exploit/exploit.py 中。您可以从宿主机(如果安装了 Python)或直接从 attacker 容器中运行攻击。
进入攻击者 shell:
docker-compose exec attacker bash
安装依赖:
pip install -r requirements.txt
攻击目标 A(原生 React):
python exploit.py http://vanilla-target:4000/rsc vanilla
攻击目标 B(Next.js):
python exploit.py http://nextjs-target:3000/ nextjs
该利用尝试在目标服务器的 /tmp 目录下创建一个名为 pwned.txt 的文件。要验证是否成功:
# 检查原生服务器
docker-compose exec vanilla-target ls -la /tmp/pwned.txt
# 检查 Next.js 服务器
docker-compose exec nextjs-target ls -la /tmp/pwned.txt
如果成功,您将看到文件列表。如果利用失败,该文件将不存在。
要在生产环境中修复此漏洞,请执行以下操作:
react-server-dom-webpack(及相关包)升级到 19.0.1、19.1.2 或 19.2.1+ 版本。"$1:__proto__" 签名或在多部分主体中异常使用 "$@" 的请求。大学项目 - 安全审计与漏洞研究