HTB{VAULT}

Después de una semana de ausencia, les comparto la solución de la máquina que hoy ha sido dada de baja en los retos de la página de Hack the Box

Con el nombre de Vault, uno de los retos que aportó mucho conocimiento en el tema de port forwarding y openvpn que no había tenido oportunidad de practicar. 

Así que manos a la obra...

Como ya es costumbre, comencemos con un escaneo de puertos abiertos:


Como podemos ver en el resultado del nmap este equipo tiene los puertos 80 y 22 abiertos, así que veo la aplicación que tiene en el puerto 80, puesto que el ssh (puerto 22) no es hasta el momento viable para un ataque, sin contar con mayor información. 


Al abrir la aplicación que reside en el puerto 80, sólo observo texto indicando que hay una aplicación en desarrollo.... 

Al correr una aplicación como un dirbuster/gobuster no me muestra ninguno de los directorios por defecto, así que añado a los diccionarios clásicos, las palabras contenidas en esta página, para este reto, la palabra clave fue Sparklays...

Así que nuevamente vuelvo a correr un dirbuster con estas palabras en el diccionario y ...


Obtengo una estructura de directorios bajo el nombre de Sparklays, dentro de las rutas relevantes están: 

* http://10.10.10.109/sparklays/design/changelogo.php
* http://10.10.10.109/sparklays/design/uploads

Comenzaremos con la primer ruta, esta página en php nos permite subir archivos sin validación correcta de extensión, por lo que nos permite subir  código en PHP con el solo hecho de cambiar la extensión a php5. 


El código de reverse shell que utilicé puede ser descargado de aqui.  Ya que lo descargue, modifiqué los parámetros de la ip y puerto a donde apuntará mi shell inverso, en este caso, la ip de mi equipo linux. 

Ya con el reverse shell cargado en la página, configuro mi equipo para que escuche en el puerto configurado por nuestro shell inverso. 


Ya con el puerto en escucha, ahora escribo la siguiente dirección en el navegador, misma que apunta al archivo que acabamos de subir. 


Hecho lo anterior, deberemos poder abrir un shell inverso hacia el servidor con IP 10.10.10.109.


Ya dentro del equipo tendremos un shell con privilegios restringidos, como en la mayoría de los retos examinamos los directorios de los usuarios para tratar de obtener la bandera del usuario. 

Tras examinar los directorios de los usuarios encontramos el de Dave con los siguientes archivos relevantes:


Haciendo un simple cat del contenido de estos archivos nos muestra información que será relevante durante el desarrollo del reto. 


De primera instancia tenemos un archivo con nombre ssh que nos muestra un conjunto de credenciales para como lo indica el servicio ssh, así que probando las credenciales que acabamos de obtener corro el comando ssh dave@10.10.10.109 desde mi equipo linux y me permite conectar directamente desde el SSH.


Regresando a la información de los archivos en el directorio de dave vemos otro con el nombre de Servers este contiene dos direcciones ips: 192.168.122.4192.168.122.5. 

Si hago un ping desde este equipo, puedo ver que me responden y están activas, así que voy a ver que puertos tiene abiertos, sin embargo como este equipo no tiene instalado ni nmap ni masscan, ejecuto la siguiente linea de comandos para hacer un escaneo de puertos hacia estas 2 ips. 

nc -zv 192.168.122.4 1-1023

nc -zv 192.168.122.5 1-1023

Como resultado del escaneo, obtengo que: 

* 192.168.122.4  --> Puertos 80 y 22
* 192.168.122.5  --> Ningún puerto abierto

Con esta información, puedo hacer un port forwarding desde mi equipo linux hasta el servidor 192.168.122.4 utilizando el servidor 10.10.10.109 como intermedio usando el protocolo ssh, así que corro el siguiente comando desde mi equipo con kali. 

ssh -L 1080:192.168.122.4:80 dave@10.10.10.109

Me pedirá una contraseña, misma que fue la que encontramos anteriormente en el archivo de ssh. (Dav3therav3123)


Ya con lo anterior, podremos tener acceso al servicio HHTP alojado en el servidor 192.168.122.4 con solamente poner lo siguiente en la barra del navegador de nuestro equipo con kali. 


Y ya podemos ver otra aplicación web que nos pide configurar un servicio de VPN, así que seleccionamos la opción de "Probar tu configuración de VPN", e introducimos el siguiente código: 

Dentro del código que estamos colocando, estamos ejecutando un reverse shell hacia nuestro primer equipo comprometido (10.10.10.109) mismo que a su vez, tiene la IP (192.168.122.1), y estará escuchando las conexiones por el puerto 1234.


Así que ponemos nuestro equipo en escucha en el puerto 1234 y damos click en la opción de "Test vpn" de nuestra aplicación web.

Con lo cual habremos obtenido un shell inverso al equipo 192.168.122.4, tal y como lo muestra la imagen anterior. 

Ya con ese acceso, revisamos nuevamente las carpetas de documentos de los usuarios y tenemos acceso a nuestra primer bandera. 


En ese mismo directorio, existe otro archivo con el nombre de SSH que nos da otro par de credenciales para utilizarse en el protocolo del mismo nombre: 



Así que pruebo las credenciales para conectarme al servicio ssh del equipo 192.168.122.4 y funciona correctamente.


Ya en este equipo, revisé la carpeta de logs, en particular el siguiente archivo: 


/var/log/auth.log

Y dentro de los logs encontré un conjunto de lineas de comandos similares al que se muestra a continuación: 


setsid ncat -l 1985 --sh-exec "ncat 192.168.5.2 987 --source-port=4444"

Lo cual indica que desde este equipo, alcanza otra ip (192.168.5.2) y que se puede iniciar sesión en el puerto 22. 


Así que realizo un nuevo port forwarding con esa instrucción y trato de iniciar una sesión ssh a través del puerto forwardeado (1985). 

Las credenciales que utilizo son las que encontré en el archivo ssh de la ip 192.168.122.4 (dave/dav3gerous567)

Y finalmente logro iniciar sesión, tras hacer un listado de directorio, veo que tenemos el archivo root.txt.gpg (la bandera con cifrado de PGP). 


A través del uso del comando SCP copio este archivo hacia el equipo con IP 192.168.122.4. 

Ya copiado el archivo en este equipo, ejecuto el siguiente comando, para descifrar el mensaje que contiene este archivo: 


gpg -d /tmp/root.txt.gpg

Pero, y que contraseña tiene este archivo??  Recuerdan que en el primer equipo comprometido teníamos un archivo con nombre key? Bueno ese archivo contiene el valor itscominghome que no es otra cosa que la contraseña de PGP para este archivo.

Y es así como se obtiene la bandera de root.  Reto completo!! 




NOT BAD FOR A LAB RAT

Comentarios

Lo mas visto