Titulo: HackTheBox - Forge |
Fecha: 29-09-2021 |
Descripcion: Enumeracion - Fuzzing - SSRF |
Hack The Box - Forge Writeup
## Ping:
ping -c1 10.10.11.111
Mediante el comando ping vamos a trazar una ruta ICMP para ver si la maquina esta activa y ante que tipo de sistema operativo estamos
Podemos ver que la respuesta del ttl es 63 , el TTL en maquinas Linux es 64 y en maquinas Windows 128 , en este caso es 63 porque pasa por un nodo intermediario.
## Enumeracion :
Ahora vamos a proceder a ver que servicios tiene esta maquina abiertos para ello vamos a realizar una enumeracion de puertos:
Mediante el parametro --min-rate 5000 va a emitir paquetes no mas lento que 5000 paquetes por segundo
Ahora vamos aplicar scripts basicos de Nmap para descubrir la version y servicios que trabajan bajo esos puertos y vamos a poder ver que nos reporta un dominio
Puede ser que se este aplicando VirtualHosting que es la tecnica de tener varios dominios bajo una misma direccion IP , por lo que para que nos resuelva el dominio correctamente vamos a tener que guardarlo en /etc/hosts
Ahora si enviamos una traza ICMP , vamos a ver que nos resuelve el dominio bajo la direccion IP 10.10.11.111
## Fuzzing :
Vamos a dirigirnos al navegador y ver que nos reporta la pagina web , vamos a entrar mediante el dominio http://www.forge.htb , y nos reporta una galeria de imagenes y poca cosa mas.
Por lo que vamos aplicar la tecnica de fuzzing para buscar directorios web potenciales que nos den mas informacion , para ello usaremos la herramienta Wfuzz
Nos reporta varios directorios web que parecen interesantes
Vamos abrir el directorio web /upload y podemos ver que tenemos un panel para subir ficheros que podemos suponer que tienen que ser imagenes desde nuestro equipo o desde una URL
Podemos ver que pasa si subimos una imagen de nuestro equipo
Si la subimos nos reporta una ruta con una especie de hash que convierte la imagen
Con la ruta que nos reporta podemos ver la imagen desde el navegador , podemos pensar en subir una shell reversa que se conecte a nuestro equipo de atacante para poder acceder a la maquina , podemos cambiarle la extension por imagen.php.jpg , pero esta tecnica no funciona
Por lo que , voy aplicar fuzzing en subdominios para ver si tenemos algun subdominio de forge.htb que sea potencial
Y nos vamos a encontrar con un subdominio de admin: http://www.admin.forge.htb , por lo que vamos a guardarlo en /etc/hosts
Si abrimos este subdominio , nos va a decir que solo tenemos acceso si estamos dentro de la maquina
## Tecnica Ataque SSRF
Si pensamos en un ataque al directorio /upload , podemos darnos cuenta que podemos intentar usar el ataque SSRF (Server Side Request Forgery)
Es una vulnerabilidad ocurre cuando una aplicacion web permite hacer consultas HTTP de lado del servidor hacia un dominio arbitrario elegido por el atacante , lo que le permite al atacante hacer una conexion con los servicios de la infraestructura interna donde se aloja la web y exfiltrar informacion sensible
Para usar esta tecnica es tan facil , como pasarle una URL al panel que teniamos en /upload y que nos de la URL junto con el hash que crea
Cuando nos de la URL para ver la "imagen" desde el navegador , vamos a proceder a hacer un Curl desde la consola y asi vamos a poder ver la informacion que contiene el subdominio admin,forge.htb
Podemos ver que nos reporta 2 directorios web
Si volvemos hacer la misma tecnica pero ahora en el formulario para introducir la URL de la imagen , ponemos http://admin.forge.htb/announcements , vamos a poder ver el contenido de este directorio que no tenemos acceso mediante el navegador
Nos reporta la credenciales del servicio FTP , pero el servicio ftp externamente lo tenemos cerrado , por lo que mediante el ataque SSRF vamos a poder tener acceso
http://ADMIN.FORGE.HTB/upload?u=ftp://user:heightofsecurity123!@FORGE.HTB
Introducimos esa URL , donde le pasamos el servicio junto con el usuario y la contraseƱa que nos reporta , nos deberia crear la URL con el hash
Si realizamos el curl sobre la URL que nos a creado , podemos ver que el contenido del FTP del usuario user es el flag del user.txt
Podemos seguir utilizando esta tecnica para intentar coger el id_rsa del servicio SSH que si esta abierto externamente
http://ADMIN.FORGE.HTB/upload?u=ftp://user:heightofsecurity123!@FORGE.HTB/.ssh/id_rsa
Y volvemos a utilizar la misma tecnica de utilizar CURL para ver el contenido y ya podemos ver el id_rsa
Por lo que vamos a entrar mediante el servicio SSH con el usuario user y con el id_rsa que nos permite no tener que introducir credenciales
## Escalada de Privilegios :
Para poder escalar privilegios vamos a tener que buscar permisos SUID o capabilities , si usamos el comando sudo -l , vamos a ver que tenemos un script con permisos SUID que nos va a permitir ejecutar el script como el usuario Root
Si le echamos un vistazo al script vamos a poder ver que es un script que se ejecuta en local que para poder acceder tenemos que proporcionarle la contraseƱa que nos muestra en texto plano que es "secretadminpassword" y este script nos permite:
Podemos ejecutar el script y ver los diferentes opciones que nos proporciona
Si hemos estado atentos al codigo del script podemos ver que si logramos crear algun error entonces vamos al except handler dentro del python debugger y hay es cuando vamos a ejecutar una shell como Root
Por lo que vamos a volver a conectarnos al servicio SSH por segunda vez dejando el script ejecutandose y vamos a crear un error introduciendo por ejemplo cualquier letra aleatoria y mientras tanto vamos a ejecutar el script con pdb en la segunda consola de SSH que hemos abierto
Vamos a importar el SO y nos vamos a crear una shell de root y una vez la tengamos creado con pdb solo tenemos que salirnos del debugger de python y ejecutar el fichero que hemos creado y ya seremos Root
Y ya tendriamos la Maquina FORGE con un nivel de dificultad Medio explotada!!