hacktricks/src/network-services-pentesting/8086-pentesting-influxdb.md

106 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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