Page cover

🟠Strutted

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

Información General

  • Nombre de la máquina: Strutted

  • IP: 10.10.11.59

  • Sistema operativo: Linux

  • Dificultad: 🟡 Media

  • Fecha: DD-MM-AAAA


Reconocimiento Inicial

Escaneo de Puertos

Escaneo Simple

Solo encontramos puertos comunes (22 y 80) abiertos. Nos centraremos en el servicio web.

Añadimos la IP al /etc/hosts

Acceso Web

Accedemos a http://strutted.htb y observamos que parece ser una plataforma en la que al subir un archivo genera un link para compartirlo, estilo WeTransfer:

Al pulsar en el botón Download nos descarga el contenedor Docker de la aplicación:

El archivo tomcat-users.xml revela una contraseña en plano de admin:

El archivo pom.xml revela que usa el framework Apache Struts:

Buscando la versión de Struts encontramos que usa la 6.3.0.1:


Explotación

Investigación de CVEs / Exploits

Exploramos CVEs relacionados con Apache Struts 6.3.0.1 en fuentes como:

Descubrimos una vulnerabilidad CVE-2024-53677 en Apache Struts 6.3.0.1 que permite ejecución remota de código (RCE) a través de la subida de archivos.

Webshell JSP

Usaremos la siguiente webshell:

Localizar el endpoint de subida

Al capturar una subida de una imagen con BurpSuite vemos que hace una petición POST a /upload.action y eso nos genera un link en /uploads/FECHA_HORA/imagen.jpg:

También podemos eliminar algunas cadenas PNG, agregar el código cmd.jsp y aún así recibir un mensaje de éxito y una ruta de carga.

Ahora necesitamos manipular la carga del archivo añadiendo el parámetro top.uploadFileName para copiarlo a una ubicación sensible, como el directorio ROOT de Tomcat. Además, debemos cambiar la "u" minúscula de upload por una "U" mayúscula.

Al final de la petición añadimos:

Copiamos la URL y hacemos un forward para enviar la petición y acceder a la webshell:

Tenemos una shell como el usuario Tomcat. En el directorio /home solo encontramos un usuario: james:

No encontramos ninguna manera sencilla de obtener un reverse shell, así que revisamos los directorios y encontramos el archivo tomcat-users.xml en /var/lib/tomcat9/conf.

Como el webshell no podía mostrar el contenido de ese archivo directamente, lo solucionamos usando curl para obtener la URL y guardar su contenido en un archivo:

Al abrir el archivo encontramos la contraseña en plano de james:


User Flag

Accedemos correctamente por SSH y nos hacemos con la user flag:


Escalada de Privilegios

Enumeración de Privilegios

Observamos que podemos ejecutar tcpdump como sudo:

Con GTFO Bins encontramos que podríamos ejecutar lo siguiente para elevar privilegios:

Y lo modificaremos de la siguiente manera para conseguir una reverse shell como root:

Tenemos una shell como root!


👑 Root Flag

Última actualización

¿Te fue útil?