# 8086 - Pentesting InfluxDB {{#include ../banners/hacktricks-training.md}} ## Osnovne informacije **InfluxDB** je open-source **baza podataka vremenskih serija (TSDB)** koju je razvila InfluxData. TSDB-ovi su optimizovani za skladištenje i pružanje podataka vremenskih serija, koji se sastoje od parova vremenskog pečata i vrednosti. U poređenju sa bazama podataka opšte namene, TSDB-ovi pružaju značajna poboljšanja u **prostoriji za skladištenje** i **performansama** za skupove podataka vremenskih serija. Koriste specijalizovane algoritme kompresije i mogu biti konfigurisani da automatski uklanjaju stare podatke. Specijalizovani indeksi baza podataka takođe poboljšavaju performanse upita. **Podrazumevani port**: 8086 ``` PORT STATE SERVICE VERSION 8086/tcp open http InfluxDB http admin 1.7.5 ``` ## Enumeration Sa tačke gledišta pentestera, ovo je još jedna baza podataka koja može čuvati osetljive informacije, pa je zanimljivo znati kako izvući sve informacije. ### Authentication InfluxDB može zahtevati autentifikaciju ili ne ```bash # Try unauthenticated influx -host 'host name' -port 'port #' > use _internal ``` Ako dobijete grešku poput ove: `ERR: unable to parse authentication credentials`, to znači da **očekuje neka akreditivna sredstva**. ``` influx –username influx –password influx_pass ``` Postojala je ranjivost u influxdb koja je omogućila zaobilaženje autentifikacije: [**CVE-2019-20933**](https://github.com/LorenzoTullini/InfluxDB-Exploit-CVE-2019-20933) ### Ručna enumeracija Informacije iz ovog primera su preuzete [**ovde**](https://oznetnerd.com/2017/06/11/getting-know-influxdb/). #### Prikaži baze podataka Pronađene baze podataka su `telegraf` i `internal` (ovu ćete pronaći svuda) ```bash > show databases name: databases name ---- telegraf _internal ``` #### Prikaži tabele/mere The [**InfluxDB documentation**](https://docs.influxdata.com/influxdb/v1.2/introduction/getting_started/) objašnjava da se **mere** u InfluxDB mogu paralelno posmatrati sa SQL tabelama. Nomenklatura ovih **mera** je indikativna za njihov sadržaj, svaka sadrži podatke relevantne za određenu entitet. ```bash > show measurements name: measurements name ---- cpu disk diskio kernel mem processes swap system ``` #### Prikaži kolone/ključne vrednosti Ključne vrednosti su kao **kolone** baze podataka ```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 I konačno možete **dumpovati tabelu** radeći nešto poput ```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] > U nekim testiranjima sa zaobilaženjem autentifikacije primećeno je da ime tabele mora biti između dvostrukih navodnika kao: `select * from "cpu"` ### Automatizovana Autentifikacija ```bash msf6 > use auxiliary/scanner/http/influxdb_enum ``` {{#include ../banners/hacktricks-training.md}}