8086 - Pentesting InfluxDB

Reading time: 3 minutes

tip

Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks

Informazioni di base

InfluxDB è un database di serie temporali (TSDB) open-source sviluppato da InfluxData. I TSDB sono ottimizzati per memorizzare e servire dati di serie temporali, che consistono in coppie timestamp-valore. Rispetto ai database di uso generale, i TSDB offrono miglioramenti significativi in spazio di archiviazione e prestazioni per i dataset di serie temporali. Utilizzano algoritmi di compressione specializzati e possono essere configurati per rimuovere automaticamente i dati obsoleti. Indici di database specializzati migliorano anche le prestazioni delle query.

Porta predefinita: 8086

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

Enumerazione

Dal punto di vista di un pentester, questo è un altro database che potrebbe contenere informazioni sensibili, quindi è interessante sapere come estrarre tutte le informazioni.

Autenticazione

InfluxDB potrebbe richiedere autenticazione oppure no.

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

Se ricevi un errore come questo: ERR: unable to parse authentication credentials significa che si aspetta alcune credenziali.

influx –username influx –password influx_pass

C'era una vulnerabilità in influxdb che permetteva di bypassare l'autenticazione: CVE-2019-20933

Enumerazione Manuale

Le informazioni di questo esempio sono state prese da qui.

Mostra database

I database trovati sono telegraf e internal (troverai questo ovunque)

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

Mostra tabelle/misurazioni

La documentazione di InfluxDB spiega che le misurazioni in InfluxDB possono essere paragonate alle tabelle SQL. La nomenclatura di queste misurazioni è indicativa del loro contenuto rispettivo, ciascuna contenente dati rilevanti per un'entità particolare.

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

Mostra colonne/chiavi di campo

Le chiavi di campo sono come le colonne del database

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

E infine puoi dumpare la tabella facendo qualcosa come

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

In alcuni test con il bypass dell'autenticazione è stato notato che il nome della tabella doveva essere racchiuso tra virgolette doppie come: select * from "cpu"

Autenticazione Automatica

bash
msf6 > use auxiliary/scanner/http/influxdb_enum

tip

Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks