8086 - Pentesting InfluxDB

Verwenden Sie Trickest, um einfach Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden. Zugang heute erhalten:

Support HackTricks

Grundinformationen

InfluxDB ist eine Open-Source Zeitseriendatenbank (TSDB), die von InfluxData entwickelt wurde. TSDBs sind optimiert für die Speicherung und Bereitstellung von Zeitseriendaten, die aus Zeitstempel-Wert-Paaren bestehen. Im Vergleich zu allgemeinen Datenbanken bieten TSDBs erhebliche Verbesserungen in Speicherplatz und Leistung für Zeitseriendatensä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

Enumeration

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.

Authentication

InfluxDB könnte eine Authentifizierung erfordern oder nicht

# 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)

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

Show tables/measurements

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.

> 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

> 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

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

Bei einigen Tests mit dem Authentifizierungs-Bypass wurde festgestellt, dass der Name der Tabelle in doppelte Anführungszeichen gesetzt werden musste, wie: select * from "cpu"

Automatisierte Authentifizierung

msf6 > use auxiliary/scanner/http/influxdb_enum
Unterstütze HackTricks

Nutze Trickest, um einfach Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden. Erhalte heute Zugang:

Last updated