Analytics
Analytics es una máquina Linux de dificultad fácil con servicios HTTP y SSH expuestos. La enumeración del sitio web revela una instancia de Metabase, que es vulnerable a la ejecución remota de código de autenticación previa ([CVE-2023-38646](https://nvd.nist.gov/vuln/detail/CVE-2023-38646)), que se aprovecha para obtener un punto de apoyo dentro de un contenedor Docker.
Al enumerar el contenedor Docker, vemos que las variables de entorno establecidas contienen credenciales que se pueden usar para acceder al host mediante SSH. La enumeración posterior a la explotación revela que la versión del kernel que se ejecuta en el host es vulnerable a GameOverlay, que se aprovecha para obtener privilegios de root.

Reconnaissance
Realizaremos un reconocimiento con nmap para ver los puertos que están expuestos en la máquina Analytics. Este resultado lo almacenaremos en un archivo llamado allPorts.
A través de la herramienta de extractPorts, la utilizaremos para extraer los puertos del archivo que nos generó el primer escaneo a través de Nmap. Esta herramienta nos copiará en la clipboard los puertos encontrados.
Lanzaremos scripts de reconocimiento sobre los puertos encontrados y lo exportaremos en formato oN y oX para posteriormente trabajar con ellos. En el resultado, comprobamos que se encuentra expuesta una página web de Nginx.
Transformaremos el archivo generado targetedXML para transformar el XML en un archivo HTML para posteriormente montar un servidor web y visualizarlo.
Accederemos a http://localhost y verificaremos el resultado en un formato más cómodo para su análisis.

Añadiremos en nuestro archivo /etc/hosts la siguiente entrada.
Web Enumeration
Accederemos a http://analytical.htb y verificaremos que se trata de una página web en la cual no nos muestra gran información.

Realizaremos una enumeración de directorios y páginas del sitio web, no logramos obtener ninguna información a través de la herramienta de dirsearch.
Subdomain Enumeration
Al realizar una enumeración de subdominios en el sitio web, nos encontramos con un subdominio llamado data.
Añadiremos esta nueva entrada en nuestro archivo /etc/hosts.
Accederemos a http://data.metabase.htb y verificamos que se trata de un panel de incio de sesión de Metabase.

Initial Foothold
Metabase Exploitation - PreAuth Remote Code Execution [RCE] (CVE-2023-38646)
Buscando posibles vulnerabilidades sobre Metabase, nos encontramos con el siguiente CVE-2023-38646.
Las versiones de código abierto de Metabase anteriores a la 0.46.6.1 y Metabase Enterprise anteriores a la 1.46.6.1 permiten a los atacantes ejecutar comandos arbitrarios en el servidor, en el nivel de privilegio del servidor. No se requiere autenticación para la explotación. Las otras versiones corregidas son 0.45.4.1, 1.45.4.1, 0.44.7.1, 1.44.7.1, 0.43.7.2 y 1.43.7.2.

Nos encontramos con el siguiente repositorio con un PoC del exploit. Nos lo descargaremos el repositorio en nuestro equipo y visualizaremos el funcionamiento del exploit main.py.
En el PoC se nos requiere el setup-token del Metabase, el cual podemos localizar a través del siguiente comando.
Por otro lado, nos pondremos en escucha por un puerto para recibir la Reverse Shell.
Ejecutaremos el exploit para enviarnos una Reverse Shell hacia nuestro equipo.
Verificaremos que hemos ganado acceso al sistema, pero al parecer se trata de un Docker y no nos encontramos aún en el equipo principal.
Initial Access
Docker Container Information Leakage
Al revisar las variables que tenía dispone el usuario, nos encontramos con unas credenciales del acceso a Metabase del usuario metalytics.
Probaremos de acceder mediante SSH a través del usuario metalytics para verificar si podemos acceder con las credenciales obtenidas. Logramos el acceso y visualizar la flag de user.txt.
Privilege Escalation
Kernel Exploitation - GameOver(lay)/OverlayFS
Revisamos la versión del Kernel en busca de vulnerabilidades a través de la versión de Kernel.
Nos encontramos con el siguiente repositorio en el cual nos mencionan que la versión que dispone el equipo probablemente sea vulnerable a GameOver(lay).
Realizamosla explotación y nos convertimos en usuario root pudiendo visualizar la flag de root.txt.
Última actualización
¿Te fue útil?