Sau [EASY🟢]
Dificultad: Fácil
1- Reconocimiento y escaneo
1.1 Ping
1.1 PingPodemos notar que se trata de una maquina Windows, debido al TTL:
1.2 Nmap
1.2 NmapPuerto 22 correspondiente a un servidor SSH para control remoto mediante linea de comandos y puerto 55555 correspondiente a un servidor web
Vamos a ver si esta maquina contiene puertos filtrados quitando el parámetro "--open" de Nmap :
Podemos ver 2 puertos filtrados, el 80 correspondiente a un servidor y el puerto 8338 desconocido
1.3 whatweb
1.3 whatwebVamos a realizar un reconocimiento de las tecnologías web que corren por detrás del servidor web alojado en el puerto 55555
Podemos ver que la URL "http://10.10.11.224:55555" a secas, nos redirige hacia el recurso del servidor web "web":

Podemos ver en una esquina una tecnología utilizada para crear esta aplicación web:

De resto, no encontramos tecnologías webs interesantes, quizás "Boostrap 3.3.7"
2- Explotación
2.1 Server-Side Request Forgery(SSRF)
2.1 Server-Side Request Forgery(SSRF)Investigando en internet, encontré que este sitio es vulnerable a SSRF, ósea que podemos utilizar la propia aplicación web o servidor web, además, encontré que esta SSRF la podemos utilizar para acceder al sitio web alojado en el servidor web del puerto 80 que encontramos filtrado, ya que esta configurado para acceder únicamente desde el localhost, por ende podemos aprovecharnos del SSRF para desde la misma pagina, acceder al sitio web alojado en el puerto 80 que se encuentra filtrado
Pudimos var tambien en parte del reconocimiento que una de las tecnologias utilizadas es "requests-baskests", que es una aplicación para configurar y ver solicitudes y cabeceras de solicitudes web de un sitio web que nosotros le especifiquemos y demas, asi que vamos a irnos a la pagina web:

Vamos a darle en "Create":

"Open Basket":

Vamos a darle al engranaje para entrar a la configuración:

Y aquí, podemos aplicar forwarding a la IP local de la maquina(127.0.0.1) POR EL PUERTO 80, y que nos rediriga hacia el sitio web donde lo encontrábamos filtrado e inaccesible:

"Apply":

Y ahora para enviar solicitud a "basket-requests", nos genera un link que en mi caso es el siguiente:

http://10.10.11.224:55555/u5ggyo7
Con lo cual, como aplicamos forwarding, a la hora de acceder a esta URL, nos va a redirigir al sitio web alojado en el puerto 80:

Podemos ver que no carga del todo la pagina web que esta alojada en el puerto 80, pero si bajamos, reconoceremos otra tecnologia web utilizada para este sitio web alojado en el puerto 80:

"Powered by Maltrail v0.53"
Vamos a revisar el código fuente de este sitio web:

Podemos ver que en el principio del codigo, intenta cargar archivos JavaScript:
Por ende podríamos interpretar o dar por entendido que existe un directorio "js" dentro del servidor web, en casi todos los sitios webs o a la hora de desarrollar un sitio web, es común almacenar los archivos JavaScript en una carpeta llamada "js", esos archivos JS aparentemente, parecen ser de la tecnologia "Maltrail"
Por ende si cambiamos el URL, del sitio a:
Lo unico que agregamos es una barra "/", ya que al estar aplicando forwarding y ser redirigido a otro sitio web, por lo general suele interpretarlo de diferente forma, por ejemplo, si yo tengo un "index.html" en mi pagina web, en el caso de que apliquemos forwarding, lo estaria interpretando de la siguiente manera:
Y en el navegador se veria de la siguiente forma:
De tal manera que si nostros agregamos una barra "/" al final, el recurso que esta intentando acceder, se podria leer correctamente:

Ahora si, estaríamos viendo el servicio interno del puerto 80 que la maquina tenia filtrado
2.2 RCE Maltrail v0.53
2.2 RCE Maltrail v0.53Investigando vulnerabilidades por internet, descubri que esta versión en concreta de Maltrail es vulnerable a un RCE(Remote Command Execution), por lo que vamos a utilizar un exploit de GitHub, un script en Python que mediante un curl al sitio web que realiza el forwarding, es posible que mediante el campo de "Username" del login de la aplicación web, podamos obtener ejecución remota de comandos
Créditos al creador del repositorio
Vamos a bajarnoslo con "wget":
Y vamos a ejecutar el exploit, pero antes vamos a consultar los parametros que tendriamos que pasarle:
Vemos que necesitamos pasarle la IP donde vamos a ponernos en escucha, el puerto y por ultimo la URL donde se encuentra el login de Maltrail, que en este caso vamos a pasarle la URL que realiza forwarding al servicio 80 interno de la maquina
Vamos a ponernos en escucha con netcat por el puerto 443:
Y vamos a ejecutar el exploit con el siguiente comando:
En mi caso quedaría de la siguiente manera:
Ejecutamos:
Se nos va a quedar como cargando, pero si vamos a la consola donde teniamos netcat en escucha por el puerto 443:
Ya tendremos una reverse shell
2.3 Tratamiento de la TTY
2.3 Tratamiento de la TTYVamos a realizar el tratamiento de la TTY para obtener una shell como dios manda :)
"script /dev/null -c bash":
CTRL + Z:
Y vamos a ejecutar el siguiente comando:
Ejecutamos:
Y ahora ejecutamos:
Ejecutamos y nos va a devolver a la reverse shell que obtuvimos:
Ahora vamos a exportar XTERM como TERM y BASH como consola, como variables de entorno:
Para verificar que el tratamiento de la TTY se realizo correctamente, pondremos "echo $SHELL" o "echo $TERM":
El tratamiento de la TTY corresponde hacerlo cuando debemos hacer muchas cosas con una reverse shell y necesitamos realizar algunas tareas como utilizar un editor de texto en consola, entre otras
2.4 Obtención de la flag user
2.4 Obtención de la flag userLa flag de user se encuentra dentro de la ruta absoluta "/home/puma/user.txt", vamos a visualizar la flag:
3- Escalado de privilegios
3.1 sudo -l
3.1 sudo -lPara verificar los comandos que podemos ejecutar dentro del usuario "puma" de la reverse shell que acabamos de obtener, vamos a ejecutar el comando "sudo -l":
Podemos ejecutar el comando "/usr/bin/systemctl status trail.service" como si fuésemos usuarios root, sin proporcionar la contraseña:
3.2 sudoers & paginate
3.2 sudoers & paginateVamos a ejecutar "/usr/bin/systemctl status trail.service" abusando de que podemos ejecutarlo como root, y con el formato paginado que nos lo muestra, vamos a abrirnos una bash como usuarios root
Por ejemplo:
Vamos a ejecutar "/usr/bin/systemctl status trail.service" pero con "sudo" al principio:
De tal manera que se queda esperando a que bajemos:

Pero en realidad, esto es como utilizar el editor de Vim, si nosotros escribimos "!/bin/sh":

Ejecutamos:
Obtendremos una shell como root, ahora vamos a obtener un prompt:
3.3 Obtención de la flag root
3.3 Obtención de la flag rootLa flag de root se encuentra dentro de la ruta absoluta "/root/root.txt", vamos a visualizarla:
Con esto, concluimos la maquina "Sau" de Hack The Box
Espero te haya sido de ayuda este Write Up :)
Si tuviste alguna dificultad a la hora de resolverlo, no olvides contactarme en mis redes sociales
Última actualización
