
Многопоточный эксплойт для time-based blind SQL-инъекции (CVE-2026-14762), нацеленный на Hotel & Tourism Reservation 1.0. Перечисляет базы данных, таблицы, столбцы; читает файлы через LOAD_FILE; записывает PHP webshell-ы для RCE. Поддерживает прокси, пакетное сканирование и интерактивную SQL-оболочку.
Полнофункциональный, многопоточный эксплуатационный скрипт для слепой SQL-инъекции на основе времени для CVE‑2026‑14762.
Нацелен на конечную точку /admin/rooms.php приложения Code‑Projects Hotel & Tourism Reservation (версия 1.0).
Позволяет выполнять полное перечисление базы данных, чтение файловой системы (LOAD_FILE) и произвольную запись файлов (INTO OUTFILE / DUMPFILE) – что приводит к удаленному выполнению кода через развертывание веб-шелла.

requestsurllib3colorama (опционально – для цветного вывода в терминале)Установите все зависимости с помощью:
pip install requests urllib3 colorama
git clone https://github.com/tc4dy/CVE-2026-14762-PoC-Exploit.git
cd CVE-2026-14762-PoC-Exploit
chmod +x exploit.py or basic_exploit.py
Параметр delete инжектируется следующим образом:
150' AND IF(<condition>, SLEEP(<delay>), 0) AND '1'='1
Функция IF() оценивает условие; если оно истинно, база данных засыпает на секунд.
Для каждой позиции символа выполняется бинарный поиск по диапазону ASCII (32–126), который определяет правильный символ с помощью сравнений > и =. Это сокращает количество запросов с 95 на символ до ~7–8, что делает извлечение очень эффективным.
SELECT DATABASE()SELECT table_name FROM information_schema.tables WHERE table_schema='<db>' LIMIT n,1SELECT column_name FROM information_schema.columns WHERE table_schema='<db>' AND table_name='<table>' LIMIT n,1SELECT <col> FROM <table> LIMIT row,1 – извлекает построчноLOAD_FILE('/path/to/file') – требует, чтобы secure_file_priv был пустым или указывал на целевую директориюSELECT '<content>' INTO OUTFILE '/path/to/shell.php' – требует привилегии FILE и отсутствия ограничений в secure_file_privЭтот инструмент предназначен только для авторизованного тестирования безопасности, образовательных исследований и оценки уязвимостей.
Автор не несет ответственности за любое неправомерное использование, незаконные действия или ущерб, причиненный данным программным обеспечением.
Всегда получайте явное письменное разрешение от владельца системы перед началом тестирования.
| Категория | Возможность |
|---|
| Уязвимость | Слепая SQL-инъекция на основе времени (CWE‑89) |
| Вектор атаки | GET /admin/rooms.php?delete=<payload> |
| Эксплуатация | Условная инъекция SLEEP() с извлечением символов бинарным поиском |
| База данных | Извлечение имени текущей базы данных |
| Схема | Перечисление таблиц и столбцов через information_schema |
| Дамп данных | Полный экспорт таблицы (JSON) – неограниченное количество строк, настраиваемый лимит |
| Чтение файлов | LOAD_FILE() – чтение любого файла, доступного MySQL (например, /etc/passwd, конфигурационные файлы) |
| Запись файлов | INTO OUTFILE / DUMPFILE – запись PHP-шелла, бэкдора или произвольного содержимого |
| Интерактивная оболочка | Живая SQL-оболочка (извлечение на основе времени) для ручных запросов |
| Одиночный запрос | Выполнение ad‑hoc SQL и получение результатов (лимит 512 символов) |
| Пакетный режим | Сканирование нескольких целей с настраиваемым пулом потоков (ThreadPoolExecutor) |
| Поддержка прокси | HTTP/HTTPS прокси (Burp Suite, mitmproxy и т.д.) |
| Подробное логирование | Цветной вывод с временными метками отладки |
| Ноль зависимостей | Только requests, urllib3 и colorama (опционально) |
| Аргумент | Короткий | Тип | По умолчанию | Описание |
|---|
--target | -t | URL | — | URL одной цели (например, http://192.168.1.100) |
--target-file | -l | Файл | — | Файл со списком целей (по одной на строку) |
--threads | — | Int | 5 | Количество потоков для сканирования нескольких целей |
--output | -o | Путь | — | Выходной файл (JSON для дампов, обычный текст для файлов) |
--verbose | -v | Флаг | False | Включить подробное отладочное логирование |
--proxy | — | URL | — | HTTP/HTTPS прокси (например, http://127.0.0.1:8080) |
--user-agent | -ua | Строка | Mozilla/5.0... | Пользовательский заголовок User-Agent |
--delay | — | Float | 5.0 | Время задержки в секундах для слепой инъекции |
--max-retries | — | Int | 3 | Максимальное количество повторных попыток запроса |
--ssl-verify | — | Флаг | False | Включить проверку SSL-сертификата |
--webroot | — | Путь | /var/www/html | Корень веб-сервера для записи веб-шелла через INTO OUTFILE |
--dump-db | — | Флаг | False | Дамп всех таблиц из текущей базы данных |
--tables | — | Флаг | False | Только отобразить все имена таблиц |
--dump-table | — | Таблица | — | Дамп конкретной таблицы (например, --dump-table users) |
--read | — | Путь | — | Чтение файла через LOAD_FILE() |
--write-shell | — | Флаг | False | Запись PHP-шелла (shell.php) в корень веб-сервера |
--sql | — | Запрос | — | Выполнение одного SQL-запроса (макс. 512 символов) |
--interactive | -i | Флаг | False | Запустить интерактивную SQL-оболочку после эксплуатации |