8086 - Pentesting InfluxDB

Reading time: 3 minutes

tip

Lernen & ĂŒben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & ĂŒben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

UnterstĂŒtzen Sie HackTricks

Grundlegende Informationen

InfluxDB ist eine Open-Source Zeitreihendatenbank (TSDB), die von InfluxData entwickelt wurde. TSDBs sind optimiert fĂŒr die Speicherung und Bereitstellung von Zeitreihendaten, die aus Zeitstempel-Wert-Paaren bestehen. Im Vergleich zu allgemeinen Datenbanken bieten TSDBs erhebliche Verbesserungen in Speicherplatz und Leistung fĂŒr ZeitreihendatensĂ€tze. Sie verwenden spezialisierte Kompressionsalgorithmen und können so konfiguriert werden, dass alte Daten automatisch entfernt werden. Spezialisierte Datenbankindizes verbessern ebenfalls die Abfrageleistung.

Standardport: 8086

PORT STATE SERVICE VERSION 8086/tcp open http InfluxDB http admin 1.7.5

AufzÀhlung

Aus der Sicht eines Pentesters ist dies eine weitere Datenbank, die sensible Informationen speichern könnte, daher ist es interessant zu wissen, wie man alle Informationen dumpen kann.

Authentifizierung

InfluxDB könnte eine Authentifizierung erfordern oder auch nicht.

bash
# Try unauthenticated influx -host 'host name' -port 'port #' > use _internal

Wenn Sie einen Fehler wie diesen erhalten: ERR: unable to parse authentication credentials, bedeutet das, dass es einige Anmeldeinformationen erwartet.

influx –username influx –password influx_pass

Es gab eine Schwachstelle in InfluxDB, die es ermöglichte, die Authentifizierung zu umgehen: CVE-2019-20933

Manuelle Enumeration

Die Informationen dieses Beispiels stammen von hier.

Datenbanken anzeigen

Die gefundenen Datenbanken sind telegraf und internal (diese werden Sie ĂŒberall finden).

bash
> show databases name: databases name ---- telegraf _internal

Tabellen/Messungen anzeigen

Die InfluxDB-Dokumentation erklĂ€rt, dass Messungen in InfluxDB mit SQL-Tabellen parallelisiert werden können. Die Nomenklatur dieser Messungen ist indikativ fĂŒr ihren jeweiligen Inhalt, wobei jede Daten relevant fĂŒr eine bestimmte EntitĂ€t enthĂ€lt.

bash
> show measurements name: measurements name ---- cpu disk diskio kernel mem processes swap system

Zeige Spalten/FeldschlĂŒssel

Die FeldschlĂŒssel sind wie die Spalten der Datenbank

bash
> show field keys name: cpu fieldKey fieldType -------- --------- usage_guest float usage_guest_nice float usage_idle float usage_iowait float name: disk fieldKey fieldType -------- --------- free integer inodes_free integer inodes_total integer inodes_used integer [ ... more keys ...]

Dump Table

Und schließlich können Sie die Tabelle dumpen, indem Sie etwas wie

bash
select * from cpu name: cpu time cpu host usage_guest usage_guest_nice usage_idle usage_iowait usage_irq usage_nice usage_softirq usage_steal usage_system usage_user ---- --- ---- ----------- ---------------- ---------- ------------ --------- ---------- ------------- ----------- ------------ ---------- 1497018760000000000 cpu-total ubuntu 0 0 99.297893681046 0 0 0 0 0 0.35105315947842414 0.35105315947842414 1497018760000000000 cpu1 ubuntu 0 0 99.69909729188728 0 0 0 0 0 0.20060180541622202 0.10030090270811101

warning

Bei einigen Tests mit dem Authentifizierungsumgehung wurde festgestellt, dass der Name der Tabelle in doppelte AnfĂŒhrungszeichen gesetzt werden musste, wie: select * from "cpu"

Automatisierte Authentifizierung

bash
msf6 > use auxiliary/scanner/http/influxdb_enum

tip

Lernen & ĂŒben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & ĂŒben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

UnterstĂŒtzen Sie HackTricks