8086 - Pentesting InfluxDB

Utiliza Trickest para construir y automatizar flujos de trabajo fácilmente, impulsados por las herramientas comunitarias más avanzadas del mundo. Obtén acceso hoy:

Apoya a 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-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 pueden configurarse 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.

# 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 –username influx –password 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)

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

> 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

> 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

Y finalmente puedes dump the table haciendo algo como

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

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

Autenticación Automatizada

msf6 > use auxiliary/scanner/http/influxdb_enum
Apoya a HackTricks

Usa Trickest para construir y automatizar flujos de trabajo fácilmente, impulsados por las herramientas comunitarias más avanzadas del mundo. Obtén acceso hoy:

Last updated