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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2025-55182-React2Shell-Async-Scanner — 异步 RCE 扫描器,用于 CVE-2025-55182 / CVE-2025-66478 — 原型污染 → 通过 React Server Actions 执行代码 | Kitploit
工具/GitHubGitHub/inferiorak/cve-2025-55182-react2shell-async-scanner
侦察漏洞扫描器动态分析 (沙盒)代码分析漏洞利用Web应用程序漏洞利用信息收集CTF渗透测试

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
学习与教育
Payload 开发
GitHubinferiorak/cve-2025-55182-react2shell-async-scanner

CVE-2025-55182-React2Shell-Async-Scanner

异步 RCE 扫描器,用于 CVE-2025-55182 / CVE-2025-66478 — 原型污染 → 通过 React Server Actions 执行代码

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

⚡ React2Shell

CVE-2025-55182 / CVE-2025-66478 - 异步 RCE 扫描器

Python CVE CVE License Author Visitors

原型污染 → 通过 React Server Actions 实现远程代码执行

异步、版本优先、基于输出的金丝雀检测 — 无需盲目猜测


[!WARNING] 仅限授权安全研究与渗透测试使用。 未经明确书面许可扫描系统属违法行为。 作者对此工具的滥用不承担任何责任。


目录

  • 漏洞概述
  • 受影响版本
  • 检测原理
  • 安装
  • 使用方法
  • 选项参考
  • 输出与判定
  • 浏览器模式
  • 版本检测流程

漏洞概述

React Server Actions 将操作数据以 multipart 表单数据 的形式直接传入服务器端执行上下文。由于受影响版本的 react-server-dom-webpack 对原型污染的清理不充分,攻击者可:

  1. 注入特制的 multipart 载荷,污染 Object.prototype
  2. 覆写内部响应对象的 _response._prefix
  3. 通过以下方式强制服务器执行任意 shell 命令:
    root@kitploit:~
    process.mainModule.require('child_process').execSync(cmd)
    

从而在任意使用 React Server Actions 且存在受影响 React 版本的公开可访问 Next.js 应用程序上实现 未认证的远程代码执行。

CVE-2025-55182 - 广泛影响:影响 React 19 包(react-server-dom-webpack、react-server-dom-parcel、react-server-dom-turbopack)
CVE-2025-66478 - 严格影响:通过 / Server Action 端点实现的 Next.js 特定利用路径


受影响版本


检测原理

本扫描器采用 基于输出的金丝雀验证——这是确认真实代码执行且零误报的最可靠方法:

root@kitploit:~
1.  POST /  包含 Next-Action 头 + multipart 原型污染载荷
2.  载荷执行:echo <随机金丝雀>
3.  脆弱服务器抛出 NEXT_REDIRECT,URL 中包含 base64(金丝雀)
4.  响应头:X-Action-Redirect: /login?a=<base64(金丝雀)>
5.  扫描器解码 base64 → 匹配金丝雀 → RCE 确认 ✓

allow_redirects=False 至关重要——确认信息存在于响应头中,而非重定向目标。


安装

root@kitploit:~
git clone https://github.com/InferiorAK/React2Shell
cd React2Shell

pip install -r requirements.txt

# 仅在使用 --browser 模式以改进版本检测时需要:
playwright install chromium
playwright install-deps chromium

要求: Python 3.10+


使用方法

CVE-2025-55182 扫描器 - 广义(React + Next.js)

root@kitploit:~
# 单个目标
python3 CVE-2025-55182_scanner.py -u https://target.com

# 扫描 URL 列表
python3 CVE-2025-55182_scanner.py -f urls.txt

# 静默模式 - 仅打印 RCE / Vulnerable 结果
python3 CVE-2025-55182_scanner.py -f urls.txt -q

# 浏览器模式 - 无头 Chromium 实现精确版本检测
python3 CVE-2025-55182_scanner.py -f urls.txt -b

# 完整选项 - 推荐用于大规模扫描
python3 CVE-2025-55182_scanner.py -f urls.txt -b -q -c 3 -t 20

选项参考

CVE-2025-55182 扫描器


输出与判定

每个扫描目标将获得以下判定之一:

输出文件(保存至 outputs/ 文件夹,自动创建):

  • outputs/vuln.txt — RCE 和 VULNERABLE 结果(每次运行追加)
  • outputs/unknown.txt — Unknown 版本目标;使用 -b 重试以获取精确版本检测

浏览器模式

为什么 90%+ 的站点版本显示为 unknown?

使用 App Router 架构的现代 Next.js 13+ 永远不会在静态 HTML 中嵌入框架版本。版本仅在 JavaScript 执行的真实浏览器上下文中存在于 window.next.version。

不使用 --browser:

  • 版本检测依赖 HTTP 头、__NEXT_DATA__、内联脚本和哈希后的 chunk 文件
  • App Router 站点几乎总是返回 unknown —— 基于版本的过滤被绕过

使用 --browser(-b):

  • Playwright 启动无头 Chromium
  • 页面 JavaScript 完全执行
  • 扫描器直接从活跃 DOM 中读取 window.next.version
  • 在现代化 Next.js 站点上,版本检测准确率从约 10% 提升至接近 100%
root@kitploit:~
# 建议配合浏览器模式使用 —— 降低并发数(浏览器页面资源消耗大)
python3 CVE-2025-55182_scanner.py -f urls.txt -b -c 3

版本检测流程

扫描器最多执行 7 个阶段,一旦找到版本即停止:

root@kitploit:~
阶段 1 │ HTTP 响应头
        │  X-Powered-By: Next.js X.Y.Z
        │  x-nextjs-*, x-next-version

阶段 2 │ 内联 <script> 块(逐块扫描)
        │  window.next = { version: "X.Y.Z", ... }
        │  version:"X.Y.Z", router: ...      ← 压缩包相邻键模式
        │  "nextVersion":"X.Y.Z"
        │  Next.js vX.Y.Z                    ← meta / HTML 注释中的纯文本
        │  __NEXT_VERSION__ = "X.Y.Z"

阶段 3 │ __NEXT_DATA__ JSON 数据块
        │  仅限 Pages Router - 该上下文中 "version":"X.Y.Z" 安全

阶段 4 │ 哈希 chunk URL(从 <script src> 提取)
        │  /_next/static/chunks/*, /_next/static/app/*, /_next/static/runtime/*
        │  获取多达 12 个真实包文件,扫描版本字符串

阶段 5 │ 固定名称回退 chunk
        │  main.js, framework.js, webpack.js, _app.js, pages/_app.js

阶段 6 │ /package.json 端点
        │  开发模式/配置错误服务器直接暴露此端点

阶段 7 │ Playwright 无头浏览器  [仅 --browser / -b]
        │  在完整 JS 执行后评估 window.next.version
        │  仅当阶段 1–6 返回 "unknown" 时触发

免责声明

本工具发布仅用于教育和授权安全研究目的。
作者 InferiorAK 不对因滥用造成的任何损害负责。
在测试任何您不拥有的系统前,请始终获得书面许可。


由 InferiorAK 制作


我的链接

Github Facebook Messenger Twitter YouTube

下载工具
组件受影响版本修补版本
React react-server-dom-*19.0.0, 19.1.0, 19.1.1, 19.2.019.0.1, 19.1.2, 19.2.1+
Next.js 16.x16.0.0 – 16.0.616.0.7+
Next.js 15.x15.0.0-15.0.4, 15.1.0-15.1.8, 15.2.0-15.2.5, 15.3.0-15.3.5, 15.4.0-15.4.7, 15.5.0-15.5.615.0.5+, 15.1.9+, 15.2.6+, 15.3.6+, 15.4.8+, 15.5.7+
Next.js 14.x仅限 14.3.0-canary.77+ 开发版本所有稳定版 14.x - 不受影响
Next.js 13.x-不受影响
标志长形式默认值描述
-u--url-单个目标 URL
-f--file-每行一个 URL 的文件
-o--outputoutputs/vuln.txt脆弱目标的输出文件
-U--unknown-outputoutputs/unknown.txt未知版本目标的输出文件
-c--concurrency5并发 HTTP 连接数
-t--timeout15每请求超时(秒)
-q--quiet关闭仅打印 RCE / VULNERABLE 行
-b--browser关闭使用 Playwright 无头 Chromium 进行版本检测回退
判定颜色含义
RCE🔴 红色在 X-Action-Redirect 中确认金丝雀 - 已证明远程代码执行
VULNERABLE🟠 橙色版本在受影响范围内;RCE 载荷未回显(WAF/修补配置/错误端点)
Unknown🟡 黄色确认 Next.js 但无法检测版本;仍尝试 RCE;保存至 outputs/unknown.txt 供浏览器模式重试
Not Vulnerable🟢 绿色版本确认为已修补,或 RCE 明确返回安全
Skipped⚪ 白色确认修补版本或非 Next.js 站点 - 未尝试 PoC
Error⚪ 白色主机不可达或连接失败