Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2021-43798 PoC — Grafana path traversal

Source
Associated Vulnerability
Title:Grafana path traversal (CVE-2021-43798)
Description:Grafana is an open-source platform for monitoring and observability. Grafana versions 8.0.0-beta1 through 8.3.0 (except for patched versions) iss vulnerable to directory traversal, allowing access to local files. The vulnerable URL path is: `<grafana_host_url>/public/plugins//`, where is the plugin ID for any installed plugin. At no time has Grafana Cloud been vulnerable. Users are advised to upgrade to patched versions 8.0.7, 8.1.8, 8.2.7, or 8.3.1. The GitHub Security Advisory contains more information about vulnerable URL paths, mitigation, and the disclosure timeline.
Description
Exploit for grafana CVE-2021-43798
Readme
# PoC para CVE-2021-43798

Grafana es una plataforma de código abierto para monitoreo y observabilidad. Las versiones de Grafana desde 8.0.0-beta1 hasta 8.3.0 (excepto las versiones parcheadas) son vulnerables a ldirectory traversal, permitiendo el acceso a archivos locales. La URL vulnerable es: <grafana_host_url>/public/plugins//, donde es el ID del plugin para cualquier plugin instalado. En ningún momento Grafana Cloud ha sido vulnerable. Se recomienda a los usuarios que actualicen a las versiones parcheadas 8.0.7, 8.1.8, 8.2.7 o 8.3.1. 

Este script de Python es una prueba de concepto (PoC) para explotar la vulnerabilidad CVE-2021-43798 en Grafana.

## Pre-requisitos

- Python 3
- Un sistema con Grafana que sea vulnerable a CVE-2021-43798
- Docker (solo si deseas levantar el laboratorio de pruebas)

## Uso

Para ejecutar este script, primero debes clonar el repositorio y moverte al directorio del proyecto:

```bash
git clone https://github.com/FAOG99/GrafanaDirectoryScanner.git
cd GrafanaDirectoryScanner
```
## Levantar laboratorio de pruebas
Si deseas levantar un laboratorio vulnerable puedes seguir los siguientes pasos:
```bash
cd CVE-2021-43798
docker-compose up -d
```
Despues de que el servidor levante, puedes navegar a http://localhost:3000 para ingresar a la página de login. Para este exploit no se necesitan credenciales.

## Ejecución del exploit

Luego puedes ejecutar el script utilizando Python 3.

Recuerda ejecutar el exploit desde la ruta correcta (si entraste a la carpeta del laboratorio recuerda regresar a la carpeta raíz)

Los argumentos necesarios son `-d` para especificar el dominio o la IP del sitio,
`-p` para especificar el puerto y `-f` para ingresar la ruta del archivo que deseas buscar (si no usas esta opción usará /etc/passwd por defecto). Aquí dejo un ejemplo

```bash
python3 GrafanaDirectoryScanner -d dominio.com -p 80 -f /etc/passwd
```


Si el script encuentra el archivo y puede leerlo, imprimirá el contenido del archivo. Si no puede encontrar el archivo, imprimirá un mensaje de error.

## Ejemplo
![Screenshot_20230512_105018](https://github.com/FAOG99/GrafanaDirectoryScanner/assets/92898049/74b3588b-28ab-4c23-9cca-e2e2201db49f)



File Snapshot

[4.0K] /data/pocs/03b75baa1e6fbd1d2bb5e5daffb5b9fc00e5f9f1 ├── [4.0K] CVE-2021-43798 │   └── [ 93] docker-compose.yml ├── [4.0K] GrafanaDirectoryScanner.py └── [2.2K] README.md 1 directory, 3 files
Shenlong Bot has cached this for you
Remarks
    1. It is advised to access via the original source first.
    2. Local POC snapshots are reserved for subscribers — if the original source is unavailable, the local mirror is part of the paid plan.
    3. Mirroring, verifying, and maintaining this POC archive takes ongoing effort, so local snapshots are a paid feature. Your subscription keeps the archive online — thank you for the support. View subscription plans →