metasploit403/cve-2025-29927-lab
GitHub: metasploit403/cve-2025-29927-lab
一个故意存在漏洞的 Next.js 应用,用于演示和学习 CVE-2025-29927 中间件身份验证绕过漏洞。
Stars: 0 | Forks: 0
本仓库包含一个使用 **Next.js** 构建的**故意存在漏洞**的 Web 应用。旨在演示和研究被称为 CVE-2025-29927 的安全问题。
本项目的目标是帮助安全研究人员、学生和 Bug Bounty 猎人了解该漏洞在类似真实环境中的运作方式。
# **🔩目的**
- 学习漏洞的运作原理
- 练习安全地识别和利用漏洞
- 理解不安全的 middleware 处理带来的影响
- 提升 Bug Bounty 和 Web 安全技能
# **🐞漏洞**
CVE-2025-29927 与使用 Next.js 构建的应用程序(特别是在 middleware 中)对请求逻辑的不当处理有关。这可能允许攻击者:
1. 绕过身份验证或授权检查
2. 使用精心构造的 header 或输入操纵请求流
3. 访问受限资源
# **📁项目结构**
- app/ → 应用程序路由
- middleware.ts → 包含漏洞逻辑
- api/ → 后端端点(包括受保护的路由)
# ⚙️**安装与设置**
```
git clone https://github.com/metasploit403/cve-2025-29927-lab
cd cve-2025-29927-lab
npm install
npm run dev
```
# **🪲易受攻击的端点**
某些路由被故意设置为易受攻击,可能包括
```
- /api/admin/secret
- /api/internal/health
- /api/private/data
```
这些端点模拟了在未经适当授权的情况下不应被访问的受限资源。
# **🔥漏洞利用**
1.假设您已经成功克隆了仓库
2.**启动** ```npm run dev ```
3.这将在本地运行您的项目
4.打开您选择的浏览器(例如 Chrome)并输入 `http://localhost:3000`
5.尝试访问以下 3 个 **API 端点**中的任何一个
`- /api/admin/secret`
`- /api/internal/health`
`- /api/private/data`
6.现在尝试访问任何端点
`- http://localhost:3000/api/admin/secret`
`- http://localhost:3000/api/internal/health`
`- http://localhost:3000/api/private/data`
7.观察您的请求被阻止了,这是因为您的请求中未包含 `cookie`。这意味着该端点受到 **middleware** 的保护。middleware 正在检查您的请求是否包含 cookie,如果没有,它会自动被阻止。
8.现在让我们向请求中添加 `cookie`。为此,请打开 Chrome 开发者工具(我在这里使用的是 Chrome 浏览器,您可以使用任何您喜欢的浏览器)。
9.按下 **F12**,Chrome 开发者工具将会打开。
10.转到 **Console(控制台)** 选项卡。
11.在控制台选项卡中输入 `document.cookie="lab-auth=authenticated"`
12.现在**刷新**页面,观察您已经`登录`。
**请记住,middleware 正在检查请求是否包含 cookie。如果请求包含 cookie,您将成功登录;如果不包含,您将被阻止。
问题是:我们要如何在不需要提供 cookie 的情况下绕过 middleware 检查并登录?这就是 CVE-2025-29927 允许我们做的事情。**
现在让我们利用 CVE-2025-29927 绕过 middleware 身份验证检查。这里的技巧只是添加这个特定的 header:
**x-middleware-subrequest: middleware**。
这个 header 本应仅由 Framework 内部使用。如果我们添加它,`middleware` 将停止检查我们的请求是否包含 cookie,现在您应用程序中的任何敏感端点都将毫无防备。
为了利用这一点,让我们使用 cURL。
**curl 是一个命令行工具,用于向服务器发送请求并获取响应。**
1.**没有 cookie 的情况下预期返回 401**
`curl.exe -i http://localhost:3000/api/admin/secret`
观察服务器响应的状态码为 307 Temporary Redirect。因为没有 cookie,我们被重定向到主页/根页面。这意味着除非我们提供 cookie,否则无法登录。
2.`curl.exe -i http://localhost:3000/api/admin/secret -H "x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware"`
现在我们添加了 **"x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware"**
观察我们现在无需 cookie 即可访问登录。这完全是身份验证绕过。
# **🔐缓解措施**
**要在实际应用中修复此类问题:**
- 切勿盲目信任客户端控制的 header
- 在 middleware 中验证所有输入
- 在服务端实施适当的身份验证检查
- 避免依赖不安全的请求假设
- 升级到已修补的 next 版本
- 如果在某些情况下无法升级,请在反向代理处剥离 **x-middleware-subrequest** header
# **🫵适用人群?**
- Bug Bounty 猎人
- 安全研究人员
- 学习 Web 安全的学生
- 希望了解安全 middleware 设计的开发者
# **⛔免责声明**
本项目仅供教育目的。
请勿在您不拥有或未获得明确测试许可的系统上使用这些技术。
# **🤝贡献**
**欢迎:**
- 改进实验室环境
- 添加新的易受攻击场景
- 提交修复或更好的解释
# **⭐支持**
如果您觉得这个项目有用,**请考虑给仓库一个 Star。**
# **🏷️标签**
```
- Next.js
- Bug Bounty
- Web Security
- CVE-2025-29927
- Middleware Authentication
- Bypass
```
标签:Bug Bounty, CISA项目, CVE-2025-29927, Exploit, GNU通用公共许可证, MITM代理, Node.js, OPA, POC验证, React, Syscalls, Web安全, Web报告查看器, 中间件安全, 可自定义解析器, 应用层安全, 暗色界面, 消息认证码, 渗透练习平台, 漏洞复现, 绕过技术, 网络安全, 自动化攻击, 蓝队分析, 越权访问, 鉴权绕过, 隐私保护, 靶场