mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
106 lines
4.1 KiB
Markdown
106 lines
4.1 KiB
Markdown
# 8086 - Pentesting InfluxDB
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|
||
|
||
## Informations de base
|
||
|
||
**InfluxDB** est une base de données **time series (TSDB)** open-source développée par InfluxData. Les TSDB sont optimisées pour stocker et servir des données de séries temporelles, qui se composent de paires timestamp-valeur. Par rapport aux bases de données à usage général, les TSDB offrent des améliorations significatives en **espace de stockage** et en **performance** pour les ensembles de données de séries temporelles. Elles utilisent des algorithmes de compression spécialisés et peuvent être configurées pour supprimer automatiquement les anciennes données. Des indices de base de données spécialisés améliorent également la performance des requêtes.
|
||
|
||
**Port par défaut** : 8086
|
||
```
|
||
PORT STATE SERVICE VERSION
|
||
8086/tcp open http InfluxDB http admin 1.7.5
|
||
```
|
||
## Énumération
|
||
|
||
Du point de vue d'un pentester, c'est une autre base de données qui pourrait stocker des informations sensibles, donc il est intéressant de savoir comment extraire toutes les informations.
|
||
|
||
### Authentification
|
||
|
||
InfluxDB peut nécessiter une authentification ou non.
|
||
```bash
|
||
# Try unauthenticated
|
||
influx -host 'host name' -port 'port #'
|
||
> use _internal
|
||
```
|
||
Si vous **obtenez une erreur comme** celle-ci : `ERR: unable to parse authentication credentials`, cela signifie qu'il **s'attend à des identifiants**.
|
||
```
|
||
influx –username influx –password influx_pass
|
||
```
|
||
Il y avait une vulnérabilité InfluxDB qui permettait de contourner l'authentification : [**CVE-2019-20933**](https://github.com/LorenzoTullini/InfluxDB-Exploit-CVE-2019-20933)
|
||
|
||
### Énumération manuelle
|
||
|
||
Les informations de cet exemple ont été prises [**ici**](https://oznetnerd.com/2017/06/11/getting-know-influxdb/).
|
||
|
||
#### Afficher les bases de données
|
||
|
||
Les bases de données trouvées sont `telegraf` et `internal` (vous trouverez celle-ci partout)
|
||
```bash
|
||
> show databases
|
||
name: databases
|
||
name
|
||
----
|
||
telegraf
|
||
_internal
|
||
```
|
||
#### Afficher les tables/mesures
|
||
|
||
La [**documentation InfluxDB**](https://docs.influxdata.com/influxdb/v1.2/introduction/getting_started/) explique que les **mesures** dans InfluxDB peuvent être parallèles aux tables SQL. La nomenclature de ces **mesures** est indicative de leur contenu respectif, chacune abritant des données pertinentes à une entité particulière.
|
||
```bash
|
||
> show measurements
|
||
name: measurements
|
||
name
|
||
----
|
||
cpu
|
||
disk
|
||
diskio
|
||
kernel
|
||
mem
|
||
processes
|
||
swap
|
||
system
|
||
```
|
||
#### Afficher les clés de colonnes/champs
|
||
|
||
Les clés de champ sont comme les **colonnes** de la base de données
|
||
```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
|
||
|
||
Et enfin, vous pouvez **dumper la table** en faisant quelque chose comme
|
||
```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]
|
||
> Lors de certains tests avec le contournement d'authentification, il a été noté que le nom de la table devait être entre guillemets doubles comme : `select * from "cpu"`
|
||
|
||
### Authentification Automatisée
|
||
```bash
|
||
msf6 > use auxiliary/scanner/http/influxdb_enum
|
||
```
|
||
{{#include ../banners/hacktricks-training.md}}
|