8086 - Pentesting InfluxDB

tip

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Informaci贸n B谩sica

InfluxDB es una base de datos de series temporales (TSDB) de c贸digo abierto desarrollada por InfluxData. Las TSDB est谩n optimizadas para almacenar y servir datos de series temporales, que consisten en pares de marca de tiempo y valor. En comparaci贸n con las bases de datos de prop贸sito general, las TSDB ofrecen mejoras significativas en espacio de almacenamiento y rendimiento para conjuntos de datos de series temporales. Emplean algoritmos de compresi贸n especializados y se pueden configurar para eliminar autom谩ticamente datos antiguos. Los 铆ndices de base de datos especializados tambi茅n mejoran el rendimiento de las consultas.

Puerto por defecto: 8086

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

Enumeraci贸n

Desde el punto de vista de un pentester, esta es otra base de datos que podr铆a estar almacenando informaci贸n sensible, por lo que es interesante saber c贸mo volcar toda la informaci贸n.

Autenticaci贸n

InfluxDB podr铆a requerir autenticaci贸n o no.

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

Si recibes un error como este: ERR: unable to parse authentication credentials significa que est谩 esperando algunas credenciales.

influx 鈥搖sername influx 鈥損assword influx_pass

Hubo una vulnerabilidad en influxdb que permiti贸 eludir la autenticaci贸n: CVE-2019-20933

Enumeraci贸n Manual

La informaci贸n de este ejemplo fue tomada de aqu铆.

Mostrar bases de datos

Las bases de datos encontradas son telegraf e internal (encontrar谩s esta 煤ltima en todas partes)

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

Mostrar tablas/mediciones

La documentaci贸n de InfluxDB explica que las mediciones en InfluxDB pueden ser paraleladas con tablas SQL. La nomenclatura de estas mediciones es indicativa de su contenido respectivo, cada una albergando datos relevantes para una entidad particular.

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

Mostrar claves de columnas/campo

Las claves de campo son como las columnas de la base de datos

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 ...]

Volcar Tabla

Y finalmente puedes volcar la tabla haciendo algo como

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

En algunas pruebas con la elusi贸n de autenticaci贸n se observ贸 que el nombre de la tabla necesitaba estar entre comillas dobles, como: select * from "cpu"

Autenticaci贸n Automatizada

bash
msf6 > use auxiliary/scanner/http/influxdb_enum

tip

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks