Ravi-lk/CVE-2024-51482-ZoneMinder-v1.37.-1.37.64-SQL-Injection-POC
GitHub: Ravi-lk/CVE-2024-51482-ZoneMinder-v1.37.-1.37.64-SQL-Injection-POC
针对 ZoneMinder 认证后 SQL 注入漏洞(CVE-2024-51482)的高性能多线程 PoC 利用工具。
Stars: 0 | Forks: 0
# ZoneMinder 基于时间的 SQL 注入 (CVE-2024-51482)
## 📌 漏洞概述
- **CVE ID:** CVE-2024-51482
- **公告:** GHSA-qm8h-3xvf-m7j3
- **受影响版本:** ZoneMinder 1.37.* 至(包括)1.37.64
- **修复版本:** 1.37.65
## 📖 描述
本仓库包含针对 ZoneMinder 1.37.* 至 1.37.64 版本中发现的 Blind SQL 注入漏洞的高性能、并行化概念验证 (PoC) 漏洞利用脚本 (`Exploit.py`)。
### 漏洞根本原因与影响
根据 [GHSA-qm8h-3xvf-m7j3](https://github.com/ZoneMinder/zoneminder/security/advisories/GHSA-qm8h-3xvf-m7j3),该漏洞源于 `web/ajax/event.php` 在处理 `removetag` 操作时。`tid` (TagId) 参数从请求中读取并直接不安全地拼接到 SQL 语句中:
```
$tagId = $_REQUEST['tid'];
// ...
$sql = "SELECT * FROM Events_Tags WHERE TagId = $tagId";
$rowCount = dbNumRows($sql);
```
由于 `$tagId` 在传递给 `dbNumRows()` 之前未进行参数化处理,通过认证的攻击者可以利用基于布尔或基于时间的 SQL 注入技术注入任意 SQL 命令(此处展示的 PoC 利用了 `SLEEP()`)。
这允许完全控制 SQL 数据库,导致数据机密性和完整性的丧失,并可能通过持久睡眠命令导致拒绝服务。
### 缓解措施
自 1.37.65 版本起,SQL 查询已正确参数化。漏洞代码块已被修补以构建安全的查询:
```
$sql = "SELECT * FROM Events_Tags WHERE TagId = ?";
$rowCount = dbNumRows($sql, $tagId);
```
### 漏洞利用脚本
v2.0 FAST EXPLOIT 脚本通过多线程、优化的字符频率搜索和动态阈值校准,显著加快了数据提取速度(高达 5 倍),从而从 `zm.Users` 数据库表中激进地提取用户凭证 (`Username:Password`)。
## 🚀 漏洞利用详情 (`Exploit.py` v2.0 FAST EXPLOIT)
### 功能特性
- **并行提取:** 利用 ThreadPoolExecutor(默认 5 个 worker)同时提取多个字符,与传统的顺序 blind SQLi 相比,大幅减少了总体提取时间。
- **频率优化搜索:** 在回退到二分查找之前,优先检查统计上最常见的密码和英语字符,从而最大限度地减少每个字符的平均请求数。
- **指数长度检测:** 使用快速指数步进搜索,随后进行二分查找,以在并行提取开始之前确定目标字符串的确切长度。
- **动态阈值校准:** 在启动时自动校准基线响应时间(阈值),以准确区分网络延迟和合法的 SQL 执行延迟。
- **选择性转储:** 支持提取特定用户的凭证或顺序转储整个 `zm.Users` 表。
### 受影响的端点和参数
- **URL:** 默认为 `http:///zm/index.php`
- **参数:** `view=request&request=event&action=removetag`
- **漏洞参数:** `tid`
## 🛠️ 用法分析
```
python3 Exploit.py
```
执行后,脚本以交互模式运行并提示以下内容:
1. **目标 URL:** ZoneMinder `index.php` 文件的路径(例如 `http://zoneminder.local/zm/index.php`)。
2. **ZMSESSID Cookie 值:** 此漏洞利用需要认证。请提供代表活动会话的有效 `ZMSESSID` cookie。
3. **目标用户名(可选):** 输入要提取凭证的特定用户,或留空以自动检测并转储整个 `zm.Users` 表。
名为 `extracted_data.txt` 的文件将自动创建,其中包含转储的凭证(格式为 `Username:Password`)。该脚本还显示实时执行统计信息,包括总运行时间和发送的 HTTP 请求总数。
## 🔗 参考
- [GitHub Security Advisory GHSA-qm8h-3xvf-m7j3](https://github.com/ZoneMinder/zoneminder/security/advisories/GHSA-qm8h-3xvf-m7j3)
- [NVD Entry – CVE-2024-51482](https://nvd.nist.gov/vuln/detail/CVE-2024-51482)
- [ZoneMinder Official Site](https://zoneminder.com/)
**免责声明:** 此漏洞利用脚本仅供教育目的和授权渗透测试使用。请勿针对您不拥有或未获得明确测试许可的系统使用此工具。
标签:CISA项目, CVE, CVE-2024-51482, EXP, GHSA-qm8h-3xvf-m7j3, POC, Python, Web安全, ZoneMinder, 多线程, 数字签名, 数据提取, 无后门, 时间盲注, 盲注, 网络安全, 蓝队分析, 视频监控, 身份验证绕过, 逆向工具, 隐私保护, 高危漏洞