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报告查看器, 中间件安全, 可自定义解析器, 应用层安全, 暗色界面, 消息认证码, 渗透练习平台, 漏洞复现, 绕过技术, 网络安全, 自动化攻击, 蓝队分析, 越权访问, 鉴权绕过, 隐私保护, 靶场