Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2019-20933 — Schritt-für-Schritt-Laborbericht, der CVE-2019-20933 InfluxDB-Authentifizierungsumgehung mittels gefälschter JWT-Tokens demonstriert, einschließlich Ausnutzung, Post-Exploitation und Abhilfemaßnahmen. | Kitploit
Tools/GitHubGitHub/dungsocool/cve-2019-20933
Authentifizierung & AutorisierungSchwachstellenanalyseExploitationCTFPenetrationstestsLernen & BildungDatenbanksicherheitLabs & Praxis
GitHubdungsocool/cve-2019-20933

CVE-2019-20933

Schritt-für-Schritt-Laborbericht, der CVE-2019-20933 InfluxDB-Authentifizierungsumgehung mittels gefälschter JWT-Tokens demonstriert, einschließlich Ausnutzung, Post-Exploitation und Abhilfemaßnahmen.

48vor 4 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen

LAB 5-CVE-2019-20933

I. SYSTEMANALYSE

Angriffsfläche identifizieren

Beginnend mit dem, was in der Umgebung läuft. Ich liste alle aktiven Container auf:

docker ps

image.png

Das Opfer gibt einen einzelnen Port frei: 8086.

Derzeit habe ich keine detaillierten Informationen über das Ziel. Aus der docker ps-Ausgabe geht hervor, dass das System nur einen bemerkenswerten Dienst extern an Port 8086 freigibt, der auf den Dienst im Container abgebildet ist. Dies ist die primäre Angriffsfläche, die es zu analysieren gilt.

Anstatt sofort über den Browser darauf zuzugreifen, fahren wir fort, den Dienst mit Nmap zu identifizieren, um herauszufinden, welcher Dienst auf Port 8086 läuft:

nmap -sV -sC -p 8086 192.168.3.137

image.png

Die Scan-Ergebnisse zeigen, dass Port 8086 der HTTP-Dienst von InfluxDB OSS 1.6.6 ist. Es handelt sich um eine Zeitreihendatenbank, die über eine HTTP-API verfügbar gemacht wird, nicht um eine typische Webanwendung.

Analyse nach dem Fingerprinting

InfluxDB ist eine quelloffene Zeitreihendatenbank (TSDB), die in Go geschrieben ist. Im Gegensatz zu RDBMS (optimiert für präzise Transaktionen) oder Elasticsearch (optimiert für Textsuche) wurde InfluxDB mit einem einzigen Zweck entwickelt: Bewältigung massiver Schreibvolumina (hoher Schreibdurchsatz) und Abfragen von Daten entlang der Zeitachse mit geringer Latenz.

image.png

Da der Dienst als InfluxDB identifiziert wurde, besteht der nächste Schritt darin, nachzulesen, wie InfluxDB mit Clients kommuniziert. Gemäß der InfluxDB v1 HTTP-API-Dokumentation ist Port 8086 der Standard-HTTP-API-Port. Wichtige Endpunkte sind:

  • /ping: prüft den Betriebsstatus des Servers.
  • /query: sendet InfluxQL-Abfragen zum Lesen von Metadaten oder Daten.
  • /write: schreibt Zeitreihendaten in die Datenbank.

⇒ Überlegung: Nachdem Nmap den Dienst als InfluxDB http admin 1.6.6 identifiziert hat, testen wir ihn nicht weiter wie eine Standard-Website. Bei Webanwendungen suchen wir typischerweise nach Routen, Anmeldeformularen oder Verzeichnissen. Bei InfluxDB liegt die Angriffsfläche innerhalb der HTTP-API. Daher müssen wir zum Testen auf die standardmäßigen InfluxDB-API-Endpunkte umschalten, um festzustellen, ob die API eine Authentifizierung erfordert. Folglich besteht die nächste Testrichtung nicht darin, auf / zuzugreifen, sondern direkte Anfragen an die API-Endpunkte von InfluxDB zu senden.

API-Verhalten analysieren und Authentifizierungsziele identifizieren

Überprüfen des /ping-Endpunkts

Nachdem Port 8086 als InfluxDB-HTTP-API identifiziert wurde, überprüfen Sie den /ping-Endpunkt, um zu bestätigen, dass der Dienst betriebsbereit ist:

curl -i <http://192.168.3.137:8086/ping>

image.png

Response 204 No Content bestätigt, dass InfluxDB normal arbeitet. Die Header bestätigen weiterhin die Dienstversion als InfluxDB OSS 1.6.6

Überprüfen der Authentifizierung am /query-Endpunkt

curl -i -s "http://192.168.3.137:8086/query?q=SHOW+DATABASES"

image.png

Der /query-Endpunkt erlaubt keine direkten Abfragen ohne Authentifizierungsnachweise. Dies bestätigt, dass InfluxDB die Authentifizierung aktiviert hat und alle anonymen Abfragen an das System blockiert.

Ich wechsle zur Überlegung: Hat InfluxDB Version 1.6.6 eine Schwachstelle, die das Umgehen des Authentifizierungsmechanismus erlaubt?

image.png

Durch Bezugnahme auf öffentliche Schwachstellendatenbanken sind InfluxDB-Versionen vor 1.7.6 von CVE-2019-20933 betroffen. Dies ist eine Schwachstelle zur Umgehung der Authentifizierung innerhalb der Authentifizierungsfunktion von InfluxDB, die mit der Verarbeitung von JWT-Tokens mit einem leeren gemeinsamen Geheimnis zusammenhängt.

Da das Ziel InfluxDB 1.6.6 ausführt, was niedriger als die gepatchte Version 1.7.6 ist, fällt der Dienst in den betroffenen Versionsbereich.

Es kann gefolgert werden:

Dienst: InfluxDB OSS
Version: 1.6.6
Authentifizierung: Aktiviert
CVE-Zuordnung: CVE-2019-20933
Auswirkung: Umgehung der Authentifizierung
Status: Version angreifbar

⇒ Überlegung: Anfangs gibt der /query-Endpunkt 401 Unauthorized zurück, was anzeigt, dass der Authentifizierungsmechanismus aktiv ist. Das Vorhandensein einer Authentifizierung bedeutet jedoch nicht absolute Sicherheit. Wenn die Version als 1.6.6 identifiziert wurde, müssen wir sie mit bekannten CVEs korrelieren. Die Ergebnisse zeigen, dass diese Version in den von CVE-2019-20933 betroffenen Bereich fällt, was bedeutet, dass es möglich ist, den Authentifizierungsmechanismus zu umgehen, der den /query-Endpunkt schützt. Basierend auf diesen Identifikationsergebnissen wird sich die Ausbeutungsphase darauf konzentrieren, CVE-2019-20933 zu verifizieren, indem ein geeignetes JWT-Token generiert wird, um die Authentifizierung zu umgehen und Abfragen gegen den /query-Endpunkt auszuführen.

Analyse des Schwachstellenmechanismus (CVE-2019-20933)

Die Schwachstelle CVE-2019-20933 tritt in der authenticate-Funktion innerhalb der Datei services/httpd/handler.go von InfluxDB vor Version 1.7.6 auf.

JWT-Authentifizierungsmechanismus in InfluxDB

InfluxDB unterstützt die Authentifizierung mittels JSON Web Tokens (JWT) für HTTP-API-Anfragen. Beim Empfang einer Anfrage mit dem Header:

Authorization: Bearer <token>

InfluxDB führt die folgenden Schritte aus:

  1. Dekodieren des Tokens, um Header und Payload zu extrahieren.
  2. Auslesen des Wertes shared-secret aus der Konfigurationsdatei influxdb.conf, um als geheimer Schlüssel für die Signaturprüfung des Tokens zu dienen.
  3. Wenn die Signatur gültig ist, das Feld username aus den Claims abrufen, um den Benutzer zu bestimmen, der die Abfrage ausführt.

Der Fehler

In den betroffenen Versionen kann der geheime Wert als leerer String ("") verarbeitet werden, wenn die JWT-Authentifizierung aktiviert, der Parameter shared-secret jedoch nicht konfiguriert ist.

Das System validiert die Sicherheitsstärke des Geheimnisses nicht ausreichend, bevor es die JWT-Signatur überprüft. Dies ermöglicht einem Angreifer, ein benutzerdefiniertes JWT zu erstellen, es mit einem leeren Geheimnis zu signieren und dann den username-Claim auf ein gültiges Konto im System zu setzen, wie z.B. admin, falls dieses Konto im Labor existiert.

Wenn dieses Token über den Authorization: Bearer <token>-Header übermittelt wird, verwendet InfluxDB dasselbe leere Geheimnis, um die Signatur zu überprüfen. Wenn die Signatur übereinstimmt und der Benutzername existiert, wird die Anfrage autorisiert, ohne dass das tatsächliche Passwort des Benutzers erforderlich ist.

Der Verarbeitungsablauf kann wie folgt zusammengefasst werden:

Tool herunterladen