🟢Chemistry
En esta ocasión vamos a hacer el writeup de la máquina Chemistry de Hack the Box, una máquina Linux de dificultad easy.

Primer acceso
Añadimos la IP 10.10.11.38 a nuestro /etc/hosts y accedemos través del navegador.
Esta máquina no tiene abierto el puerto 80 por lo que vamos a comprobar los puertos y servicios que tiene corriendo.
Escaneo de puertos
Nos encontramos 2 puertos abiertos, el 22 típico y el 5000. Nos interesa el puerto 5000, por lo que vamos a escanearlo más en detalle con Nmap:
Encontramos que el puerto 5000 usa una versión de Werkzeug/3.0.3 que podría ser vulnerable.


Al acceder por el puerto 5000 nos encontramos un frontal con 2 CTAs: login y registro. Vamos a intentar registrarnos:

Al registrarnos en la página llegamos a un dashboard donde podríamos subir un archivo .CIF y encima nos da un link a un archivo CIF de ejemplo que nos vamos a descargar para examinarlo:


Vamos a abrir el archivo .cif a ver que contiene:
Un archivo .cif (Crystallographic Information File) es un formato de texto utilizado principalmente en la química y la cristalografía para almacenar información estructural de cristales. El archivo .cif contiene datos sobre la estructura de una molécula o un cristal, incluidos detalles como las dimensiones de la celda unitaria, los ángulos, las posiciones de los átomos y otros parámetros relacionados con la cristalografía.
Búsqueda de exploits
Haciendo un poco de research nos encontramos con este artículo explotando el CVE-2024-23346:
Según este artículo, podríamos explotar esta vulnerabilidad de subida de un archivo .cif de la siguiente manera:
Explotación
Vamos a subir el archivo .cif malicioso al servidor, pero antes vamos a brir un listener de netcat por el puerto 4444:

Una vez subido el cif malicioso lo abrimos con el botón View
Recibimos una shell como el usuario app
User flag
Haciendo un poco de enumeración encontramos el usuario rosa, dentro de la carpeta home, pero no podemos acceder a la flag, necesitamos la contraseña:
Hacemos un tratamiento de la TTY para movernos un poco mejor y encontramos un archivo interesante que parece un archivo de volcado de una base de datos:
Como es un archivo bastante grande y con muchos caracteres me lo voy a llevar a Kali Linux para analizarlo mejor. Haciendo un filtrado con grep obtenemos lo que parece un hash del usuario rosa:

En esa cadena observamos 2 hashes, separados por una comilla simple:
Al pasar el hash de Rosa por Crackstation nos da la contraseña en plano. También podríamos usar John o Hashcat pero en ocasiones Crackstation es más rápido:

Una contraseña muy propicia para el usuario Rosa... Vamos a conectarnos por ssh:
Funciona y obtenemos la user flag!
Escalada de privilegios
Lo primero comprobamos los permisos de ejecución, pero no tiene ningún permiso el usuario rosa:
Vamos a enviar un linpeas a la máquina para encontrar formas de elevar nuestros privilegios:

Lo primero que nos marca en rojo es la versión de sudo, que al parecer puede ser vulnerable:
Probamos varios exploits de esta versión de sudo pero sin éxito en la máquina. Encontramos una web corriendo en localhost por el puerto 8080:

Vamos a hacer un tunneling por SSH desde nuestro Kali Linux para ver de que se trata esta aplicación:
Ahora podríamos acceder a través del navegador en nuestro Kali Linux en localhost por el puerto 7000:

Parece un portal en desarrollo ya que no funciona ninguna de las funcionalidades que tiene implementadas. No encontramos información relevante y Wappalizer no es capaz de analizar la tecnología del sitio. Con curl extraemos algo más de información:
Buscando Python/3.9 aiohttp/3.9.1 exploit nos encontramos con que es vulnerable al CVE-2024-23334, que explota una vulnerabilidad Path Traversal en la librería de python AioHTTP =< 3.9.1
Podemos utilizar el siguiente script en bash para explotar este path traversal y que nos devuelva la root flag:
Funcionamiento
El script iterativamente sube un nivel (../) y prueba concatenando payload y file. Por ejemplo, si el servidor tiene configurado el directorio raíz en /var/www/html, las rutas que intentará serían:
/assets/root/root.txt/assets/../root/root.txt/assets/../../root/root.txt/assets/../../../root/root.txt... (hasta 15 niveles).
Si una de las rutas es válida y el servidor devuelve un 200 OK, se asume que el archivo es accesible y se imprime su contenido.
Ejecución del exploit
Necesitamos darle permisos de ejecución con chmod +x:
Como vemos eso nos vuelva la root flag (que estaré censurando una parte para evitar spoilers) y con esta técnica podríamos hacernos con cualquier archivo del sistema modificando el script, como por ejemplo /etc/shadow, donde se almacenan las contraseñas hasheadas en Linux e intentar crackear la contraseña del usuario root:
Última actualización
¿Te fue útil?
