Analytics

Analytics aloja una instancia de Metabase en un servidor web. A partir de la filtración de un token gracias a una vulnerabilidad descubierta podemos inyectarlo para ejecutar código y acceder en la máquina. Accedemos dentro de un contenedor donde nos encontramos unas variables que nos ayudan a obtener acceso a la máquina host. Desde allí podemos explotar la vulnerabilidad GameOver(Lay) para escalar privilegios hacia root.

Enumeración

Nmap

Nmap encuentra dos puertos TCP abiertos:

Podemos observar un redireccionamiento web hacia http://analytical.htb. Por lo tanto, lo incluimos en el archivo /etc/hosts.

Analytical.htb (HTTP 80)

El sitio web nos descubre una empresa relacionada con el análisis de datos:

Si nos dirigimos hacia la página de login descubrimos un subdominio data.analytical.htb:

Por lo tanto, también lo añadimos en /etc/hosts y visitamos el subdominio para descubrir una página de inicio de sesión de una aplicación llamada Metabase que sirve para el análisis de datos.

Usuario metabase

Identificación

Investigando por internet en busca de exploits de Metabase descubrimos que existen muchas referencia al CVE-2023-38646. Por lo cual decidimos investigar un poco sobre la vulnerabilidad.

Detalles

La siguiente publicación nos arroja información sobre esta vulnerabilidad. Básicamente, Metabase utiliza un token llamado setup-token para ejecutar la inicialización y configuración de la aplicación. Este token debería ser borrado una vez completada la configuración, aunque después de eso este token aún permanece disponible para los usuarios no autenticados en dos lugares:

  1. En el código fuente de la página de inicio de sesión.
  2. En la dirección: /api/session/properties.

El token nos permite la ejecución de comandos arbitrarios mediante una solicitud en la dirección: /api/setup/validate.

Entonces decidimos intentar encontrar el token en la dirección /api/session/properties:

Explotación

Como hemos conseguido encontrar el token decidimos utilizar este poc para intentar penetrar en el sistema objetivo:

En un primer intento, el exploit nos produce un error. Por tanto, miramos de inspeccionar el código y ver si podemos adaptarlo a nuestras necesidades para que no falle y nos permita el acceso al sistema.

Decidimos modificar el payload y finalmente conseguimos una shell en el sistema objetivo:

Usuario metalytics

Después de realizar el reconocimiento en lo que parece ser un contenedor, nos encontramos con unas variables que parecen ser unas credenciales:

En este caso, intentamos conectarnos vía SSH con estas credenciales encontradas y conseguimos entrar en el host del sistema y la bandera user.txt:

Escalada de privilegios

Después de realizar una enumeración inicial para intentar escalar privilegios y no encontrar nada útil, decidimos buscar en Google alguna vulnerabilidad relacionada con el kernel del sistema.

Por suerte encontramos que este kernel sufre la vulnerabilidad GameOver(lay). Observando el código de uno de los exploits encontrados vemos que simplemente se ejecuta una línea de código. Por tanto, decidimos probar suerte copiando y pegando el código en el terminal:

Con esto conseguimos escalar privilegios y la bandera root.txt.


¡Gracias por vuestro apoyo!
Sígueme para más contenido