
ZoneMinder基于时间的SQL注入(CVE-2024-51482)漏洞利用POC
Этот репозиторий содержит высокопроизводительный, параллелизованный proof-of-concept (PoC) эксплойт (Exploit.py) для слепой SQL-инъекции, обнаруженной в ZoneMinder версий 1.37.* до 1.37.64.
Согласно 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-команды, используя техники boolean-based или time-based SQL-инъекций (представленный PoC использует SLEEP()).
Это позволяет получить полный контроль над базами данных SQL, что приводит к потере конфиденциальности и целостности данных, а также потенциально к отказу в обслуживании (DoS) с помощью постоянных команд задержки.
Начиная с версии 1.37.65, SQL-запросы были корректно параметризованы. Уязвимый блок был исправлен для построения безопасного запроса:
$sql = "SELECT * FROM Events_Tags WHERE TagId = ?";
$rowCount = dbNumRows($sql, $tagId);
Скрипт v2.0 FAST EXPLOIT значительно ускоряет извлечение данных до 5 раз за счет многопоточности, оптимизированного поиска по частоте символов и динамической калибровки порогов, чтобы агрессивно извлекать учетные данные пользователей (Username:Password) из таблицы базы данных zm.Users.
Exploit.py v2.0 FAST EXPLOIT)ThreadPoolExecutor (по умолчанию 5 рабочих потоков) для одновременного извлечения нескольких символов, что значительно сокращает общее время извлечения по сравнению с традиционной последовательной слепой SQLi.zm.Users.http://<target>/zm/index.phpview=request&request=event&action=removetagtidpython3 Exploit.py
После запуска скрипт работает в интерактивном режиме и запрашивает следующее:
index.php ZoneMinder (например, http://zoneminder.local/zm/index.php).ZMSESSID, представляющий активную сессию.zm.Users.Автоматически создается файл extracted_data.txt с извлеченными учетными данными (в формате Username:Password). Скрипт также отображает статистику выполнения в реальном времени, включая общее затраченное время и общее количество отправленных HTTP-запросов.
Отказ от ответственности: Этот скрипт эксплойта предназначен исключительно для образовательных целей и авторизованного тестирования на проникновение. Не используйте этот инструмент против систем, которыми вы не владеете или не имеете явного разрешения на тестирование.