用于授权安全研究的本地 Docker 实验环境:React Server Components / Next.js App Router,其技术栈处于 CVE-2025-55182(React2Shell)受影响版本范围内。
仅限在您自己的机器上使用。请勿将此容器暴露在互联网上。
| 组件 | 版本 | 说明 |
|---|---|---|
| Next.js | 15.1.0 | 补丁前版本;npm 会警告已知问题 |
| React / react-dom | 19.2.0 | 属于此 CVE 影响的 19.x 版本线 |
| RSC 管道 | 随 Next 捆绑 | 通过 Next 编译后的 react-server-dom-* 实现反序列化 |
该应用是一个极简的 App Router 页面,包含一个 Server Action,因此带有 Next-Action 头的 POST / 表现得像真实目标。
git clone https://github.com/l0lsec/cve-2025-55182-lab.git
cd cve-2025-55182-lab
# 构建并在后台运行
docker compose up --build -d
打开 http://localhost:3000 —— 您应该看到“RSC lab(有意存在漏洞)”和一个小的表单。
curl -sS -o /dev/null -w "%{http_code}\n" http://127.0.0.1:3000/
# 预期:200
docker compose logs -f
docker compose down
http://localhost:3000(或通过 Burp 建立隧道)。POST /,携带 Content-Type: multipart/form-data 和您的 Flight 协议漏洞利用主体(多部分字段 0、1、2,如公开文章/您的模板所示)。Next-Action 头
Next-Action 值,或者示例头格式:
Next-Action: <action-id-from-intercepted-request>
如果通用占位符不起作用,请始终在代理历史中执行一次合法提交后优先使用实时 ID。
可直接粘贴的 POST / 多部分模板位于 burp-payloads/(例如 id、whoami、基于时间的 sleep、OOB 占位符)。请参阅 burp-payloads/README.md 了解文件索引。发送前,请将 OOB 模板中的 YOUR-COLLABORATOR-HOST 替换为实际值。
.
├── Dockerfile # 多阶段构建,Next standalone,端口 3000
├── docker-compose.yml # 将主机 3000 端口映射到容器 3000 端口
├── burp-payloads/ # 用于 Burp Repeater 的原始 *.http 文件 + 索引 README
├── app/
│ ├── layout.tsx
│ └── page.tsx # Server Action + 实验 UI
├── public/
├── package.json
├── package-lock.json
└── next.config.ts # output: "standalone"
npm install
npm run dev
# http://localhost:3000
对于 CVE 复现,建议使用 Docker 镜像,以确保技术栈与固定存在漏洞的依赖项一致。
仅用于教学/实验。您有责任遵守您所在地区的法律和政策。无任何保证。