
Эксплойт-скрипт для CVE-2026-5147, выполняющий булеву и time-based слепую SQL-инъекцию против интерфейсов MySQL для извлечения версии, базы данных, схемы и данных. Включает калибровку, подкоманды дампа и настраиваемые полезные нагрузки.
Предназначен для авторизованной проверки уязвимостей и лабораторных практик: выполнение MySQL boolean-based blind инъекций (EXP / INSTR или ASCII) и time-based blind инъекций (if + ascii + sleep) через интерфейс с SQL-инъекцией, с возможностью извлечения версии, имени базы данных, структуры таблиц и данных (поведение аналогично --dump в sqlmap).
Не используйте на неавторизованных системах.
pip install requests
CURRENT_USER + INSTR в точку инъекции, различение ветвей «истина / ложь» по бизнес-полю в JSON-ответе (по умолчанию code).-p instr или ascii).--skip-calibrate: пропуск указанной калибровки; по-прежнему используется boolean + JSON-поле для подбора, без автоматического переключения на time-based (подходит для локальной отладки).Имя JSON-поля и значение для определения «истины» можно настроить через --json-code-field, --json-code-true (должны соответствовать целевому API).
# Только домен: путь подставляется по умолчанию (см. DEFAULT_API_PATH в скрипте)
python cve-2026-5147.py -u target.example.com
# Указание HTTPS, пользовательского пути и имени параметра инъекции
python cve-2026-5147.py -u target.example.com --https --path /api/foo --param id
# Полный dump базы данных (очень много запросов, использовать с осторожностью)
python cve-2026-5147.py -u target.example.com dump
# Только имена таблиц, без выгрузки данных
python cve-2026-5147.py -u target.example.com dump --schema-only
Прогресс и диагностическая информация выводятся в stderr, итоговая сводка — в stdout.
| Параметр | Описание |
|---|---|
-u / --url | Цель (домен, host:port или полный URL), обязательный |
--path | Путь, добавляемый к хосту, если не указан (по умолчанию путь интерфейса тенанта) |
--https | Использовать https, если схема не указана (по умолчанию добавляется http://) |
--param | Имя параметра инъекции (по умолчанию website) |
-p / --payload | Boolean-фрагмент: instr или ascii (для time-based фиксировано if+ascii+sleep) |
--timeout | HTTP-таймаут (сек); при переходе в time-based автоматически не ниже sleep+5 |
--sleep | Количество секунд для sleep() в time-based |
--time-floor | Порог «истины»: общее время ≥ этого значения (сек); по умолчанию около sleep - 1 |
--json-code-field / --json-code-true | JSON-поле и значение «истины» для boolean-канала |
--skip-calibrate | Пропустить калибровку проб |
--only | version / database / both: только версия, только имя БД или оба |
-H / -P | Дополнительные заголовки запроса, дополнительные параметры запроса, можно повторять |
Подкоманда dump также поддерживает --schema-only, --dump-out, --dump-row-limit, --dump-select и др. — см. python cve-2026-5147.py -h.
| Подкоманда | Значение |
|---|---|
info (по умолчанию) | Получение VERSION(), имени текущей БД DATABASE() (зависит от --only) |
dump | Дополнительно получение имён таблиц текущей БД, имён столбцов по каждой таблице и данных строк (или только schema, см. --schema-only) |
main() сначала выполняется calibrate_sqli_oracle; при неудаче effective_detect = "time" и bind_time_payload; в time-режиме дополнительно calibrate_time_oracle.--json-code-field (больше не захардкожено code).command исправлена: подкоманда по умолчанию — info, а не dump.Скрипт предназначен только для исследований в области безопасности и авторизованного тестирования. Пользователь обязан самостоятельно убедиться в соответствии с местным законодательством и объёмом авторизации целевой среды.