Page cover

🟢Titanic

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

Primer acceso

Añadimos la IP 10.10.11.55 a nuestro /etc/hosts y accedemos través del navegador.

Parece una web de experiencias de lujo en un barco estilo titanic. No funciona ningún link de la cabecera menos el CTA de Book Now, que abre un formulario que podría ser vulnerable:

Escaneo de puertos

Solo encontramos 2 puertos abiertos, el 22 y el 80, los típicos.

Fuzzing

Haciendo fuzzing con dirsearch nos encontramos unos pocos directorios:

Encontramos varios archivos interesantes:

  • /axis//happyaxis.jsp → Página de prueba de Apache Axis, útil para comprobar si el servicio web está funcionando. Potencialmente vulnerable si está mal configurado.

  • /axis2//axis2-web/HappyAxis.jsp → Página de bienvenida de Axis2 Web Services, puede conducir a consola administrativa.

  • /axis2-web//HappyAxis.jsp → Redirección duplicada de Axis2, misma función que la anterior.

  • /Citrix//AccessPlatform/auth/clientscripts/cookies.js → Script JavaScript de autenticación de una posible instancia de Citrix Access Gateway.

  • /engine/classes/swfupload//swfupload_f9.swf → Archivo Flash (SWF) antiguo para subida de archivos; puede contener vulnerabilidades de ejecución de código.

  • /engine/classes/swfupload//swfupload.swf → Otro archivo SWF del mismo módulo, también candidato a explotación por vulnerabilidades en Flash.

  • /extjs/resources//charts.swf → Archivo SWF usado para visualización de datos; si está desactualizado, puede ser objetivo de ataques XSS en Flash.

  • /html/js/misc/swfupload//swfupload.swf → Tercera ubicación de swfupload.swf; indica reutilización extensa del componente vulnerable.

Prueba de formulario

Al enviar el form observamos que se nos descarga un JSON:

En principio vemos que solo se nos almacenan los datos de cada input:

Capturando la petición con BurpSuite, vemos que el json se descarga desde:

Fuzzing de parámetros

Como ticket se pasa como un parámetro de URL probamos un fuzzing de extensiones para intentar explotar un LFI (Local File Inclusion):

Bingo! Tenemos via libre hacia un LFI. Vamos a ver el etc/hosts:

El único usuario con shell además de root es el usuario developer.

Archivos con acceso LFI

Vamos a buscar otros archivos accesibles por LFI. Hemos encontrado algunos interesantes:

  • /etc/passwd – Contiene usuarios del sistema.

  • /etc/hosts – Mapeo de nombres de host locales.

  • /etc/hosts.deny / /etc/hosts.allow – Control de acceso a servicios.

  • /etc/apt/sources.list – Repositorios del sistema.

  • /etc/group – Grupos del sistema.

  • /etc/fstab – Montaje de sistemas de archivos.

  • /etc/init.d/apache2 – Script de inicio de Apache.

  • /etc/apache2/apache2.conf – Configuración principal de Apache.

  • /etc/mysql/my.cnf – Configuración de MySQL (posibles credenciales).

  • /etc/ssh/sshd_config – Configuración de SSH (posibles vectores).

  • /etc/nsswitch.conf / /etc/netconfig – Configs de resolución de nombres.

  • /etc/issue – Banner del sistema (identifica distribución).

  • /etc/resolv.conf – DNS configurados.

  • /etc/rpc – Servicios RPC disponibles.

  • /var/log/lastlog – Últimos accesos de usuarios (binario).

  • /var/log/wtmp / /var/run/utmp – Historial de sesiones/logins (binarios).

Enumeración de vhosts

Descubrimos un host de desarrollo, al que seguramente pueda acceder el usuario developer:

Con ffuf lo confirmamos:

Subdominio de desarrollo

Lo añadimos a etc/hosts y accedemos para ver que nos encontramos:

Tenemos una instancia de Gitea! Al acceder a Explore, nos encontramos con 2 repositorios que podrían contener credenciales:

En flash-app/tickets nos encontramos 2 json que contienen nombres de usuarios, que aunque son los protagonistas del titanic, podrían ser usuarios válidos:

En docker-config nos encontramos directorios interesantes de gitea y mysql:

En mysql tenemos una mina de oro: usuario y credenciales expuestas de la base de datos:

Y en Gitea encontramos un puerto expuesto para la conexión SSH que podríamos aprovechar para acceder con las credenciales que tenemos:

Y encontramos el path de las aplicaciones de Gitea y MySQL:

LFI dirigido a Gitea

Volvemos a explotar el LFI para enumerar archivos sensibles de la configuración de Gitea, y encontramos la base de datos, token y el JWT_SECRET:

La base da datos se encuentra en:

Accedemos y tenemos un dump cmpleto de la base de datos:

Filtrando por el usuario developer o el usuario root encontramos los hashes de ambos!

Le damos click derecho > Copy to file y le damos el nombre de titanic.db

Eliminarnos el encabezado de BurpSuite con este comando, que elimina las 12 primeras líneas:

Comprobamos la integridad de la base de datos:

Y extraemos los hashes de la tabla user:

También podemos usar el siguiente script en bash que automatiza el proceso de extracción de los hashes y el guardado en un archivo procesable por hashcat:

Cracking con Hashcat

Conseguimos crackear la contraseña del usuario developer!

User flag

Accedemos por SSH y conseguimos la user flag:

Escalada de privilegios

No tenemos permisos sudo:

Enumerando ejecutables en el sistema encontré uno interesante:

Vamos a ver como funciona:

Utiliza ImageMagick para identificar imágenes y escribirlas en logs rápidamente.

Al verificar la versión de ImageMagick descubrí que es vulnerable a este CVE:

Vamos al directorio /opt/app/static/assets/images/ y creamos un archivo llamado a.c con este contenido:

El comando anterior permite que el usuario developer usar sudo sin contraseña.

Ahora lo compilamos y ejecutamos con el siguiente comando:

Y leemos la root flag:

Última actualización

¿Te fue útil?