Xmyronn/CVE-2026-10288-AUTH-BYPASS

GitHub: Xmyronn/CVE-2026-10288-AUTH-BYPASS

该项目披露了酒店与旅游预订系统 1.0 管理员登录页面的身份验证绕过漏洞,包含完整的根因分析、复现步骤和修复建议。

Stars: 0 | Forks: 0

# 酒店与旅游预订系统 - 身份验证绕过 ## 漏洞详情 | 字段 | 详情 | |-------|---------| | **标题** | 酒店与旅游预订系统 - 身份验证绕过 | | **供应商** | code-projects.org | | **产品** | 酒店与旅游预订系统 | | **版本** | 1.0 | | **漏洞类型** | 不当身份验证 | | **CWE** | CWE-287 | | **CVSS 评分** | 9.0 (严重) | | **CVSS 向量** | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H | | **受影响文件** | `/admin/login.php` | | **需要身份验证** | 否 | | **可远程利用** | 是 | ## 描述 酒店与旅游预订系统 1.0 的管理员登录功能中存在一个严重的身份验证绕过漏洞。该漏洞是由于对 `password_verify()` 的返回值进行了颠倒的条件判断所导致的,这使得应用程序在提供**错误**密码时授予访问权限,而在提供**正确**密码时拒绝访问。未经身份验证的远程攻击者可以通过提供有效的电子邮件地址和任意错误的密码来获取完全的管理员访问权限。 ## 根本原因 **文件:** `admin/login.php` — 第 39–46 行 ``` if(password_verify($password, $user['password'])){ // BUG: password_verify() returns TRUE when password is CORRECT // but the error message is placed here instead of login logic echo '
The password you entered was incorrect, please try again.
'; } else { // BUG: this block executes when password is WRONG // but login is granted here instead of showing an error $userID = $user['id']; login($userID); } ``` 当提供的密码与哈希值匹配时,`password_verify()` 返回 `true`。开发者将成功逻辑放在了 `else` 分支中(该分支在函数返回 `false` 时执行),这意味着在任何**错误**的密码下都会授予身份验证权限。 ## 影响 远程未经验证的攻击者可以: - 获取应用程序的完全管理员访问权限 - 查看、修改和删除所有房间和旅游预订 - 添加、编辑或删除房间、旅游和活动 - 访问所有注册用户数据 - 在不知道管理员密码的情况下执行所有管理员操作 ## 复现步骤 **设置:** 在 XAMPP 上安装酒店与旅游预订系统 1.0。通过 `http://localhost/ht/` 访问该应用。 **步骤 1:** 导航到管理员登录页面。 http:///ht/admin/login.php **步骤 2:** 输入有效的管理员邮箱和任意错误的密码。 邮箱: admin@admin.com 密码:wrongpassword **步骤 3:** 点击 **Login**(登录)。 **结果:** 应用程序绕过了身份验证并重定向到管理员仪表板(`index.php`)——在使用错误密码的情况下被授予了完全的管理员访问权限。 ## 概念验证 (Burp Suite) **请求:** ``` POST /ht/admin/login.php HTTP/1.1 Host: Content-Type: application/x-www-form-urlencoded email=admin%40admin.com&password=test1234&login=Login ``` **响应:** ``` HTTP/1.1 302 Found Location: index.php ``` 重定向到 `index.php` 的 `302` 响应证实了使用错误密码成功通过了身份验证。 ## 截图 ### 1. 登录页面 — 输入了错误密码 Screenshot 2026-05-11 232154 ### 2. Burp Suite — 302 重定向确认绕过 Screenshot 2026-05-11 232205 ### 3. 源代码 — 颠倒的逻辑 Screenshot 2026-05-11 232228 ## 修复建议 交换条件分支,以便在 `password_verify()` 返回 `true` 时授予登录权限: ``` // FIXED if(password_verify($password, $user['password'])){ $userID = $user['id']; login($userID); } else { echo '
The password you entered was incorrect, please try again.
'; } ``` ## 参考 - [CWE-287: 不当身份验证](https://cwe.mitre.org/data/definitions/287.html) - [酒店与旅游预订系统 — code-projects.org](https://code-projects.org/hotel-and-tourism-reservation-in-php-with-source-code/) ## 发现者 **Imad Alvi** — 独立安全研究员
标签:CISA项目, OpenVAS, PHP, Web安全, 漏洞分析, 蓝队分析, 路径探测, 身份验证绕过