
CMS Made Simple CVE-2019-9053 Эксплойт (Python 3)
Порт на Python 3 эксплойта для слепой SQL-инъекции на основе времени, нацеленного на CMS Made Simple <= 2.2.9.
Оригинальный эксплойт от Daniele Scanu @ Certimeter Group.
| Поле | Описание |
|---|---|
| CVE | CVE-2019-9053 |
| Уязвимое ПО | CMS Made Simple <= 2.2.9 |
| Тип уязвимости | Неаутентифицированная слепая SQL-инъекция на основе времени |
| Вектор атаки | Сеть (аутентификация не требуется) |
| Параметр | m1_idlist в модуле News |
Модуль News не выполняет очистку GET-параметра m1_idlist, что позволяет неаутентифицированному атакующему извлекать конфиденциальные данные из базы данных посимвольно с использованием временных задержек.
pip install requests termcolor
python3 CVE-2019-9053_py3.py -u http://target/cms
python3 CVE-2019-9053_py3.py -u http://target/cms --crack -w /path/to/wordlist.txt
python3 CVE-2019-9053_py3.py --help
| Флаг | Описание |
|---|---|
-u, --url | Базовый URL целевой установки CMS Made Simple |
-w, --wordlist | Путь к файлу словаря для взлома пароля |
-c, --crack | Включить режим взлома пароля (требуется -w) |
python3 CVE-2019-9053_py3.py -u http://10.49.164.146/simple/ --crack -w /usr/share/wordlists/rockyou.txt
Ожидаемый вывод:
[+] Salt for password found: 1234abcd
[+] Username found: admin
[+] Email found: [email protected]
[+] Password found: 0c01f4468bd75d7a84c7eb73846e8d96
[+] Password cracked: password123
sitemask (соль пароля) из таблицы cms_siteprefsuser_id = 1 из cms_usersuser_id = 1 из cms_usersuser_id = 1 из cms_usersMD5(salt + wordlist_entry) для каждой строки и сравнивает с полученным хешемИнъекция использует SELECT SLEEP(N) для определения каждого символа — если ответ задерживается, угаданный символ верен.
Совет: Если скрипт работает медленно или нестабильно, увеличьте переменную
TIMEвнутри скрипта, чтобы учесть сетевые задержки.
| Изменение | Описание |
|---|---|
Операторы print | Преобразованы в функции print() |
optparse | Заменён на argparse (optparse устарел в Python 3) |
hashlib.md5() | Входные данные теперь кодируются в байты через .encode('utf-8') |
| Чтение файлов | .readlines() заменён на блок with и .strip() |
Этот проект предназначен исключительно для образовательных целей. Обратитесь к условиям лицензирования оригинального эксплойта на Exploit-DB.