Headless HackTheBox

Escaneo de puertos

nmap -p- --min-rate 5000 -sV <IP>

Puerto 5000

Cuando intentas hacer un ataque de XSS aparece lo siguiente...

Hacking Attempt Detected

Your IP address has been flagged, a report with your browser information has been sent to the administrators for investigation.

Client Request Information:

Method: POST
URL: http://10.10.11.8:5000/support
Headers: Host: 10.10.11.8:5000
User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://10.10.11.8:5000/support
Content-Type: application/x-www-form-urlencoded
Content-Length: 243
Origin: http://10.10.11.8:5000
Dnt: 1
Connection: close
Cookie: is_admin=InVzZXIi.uAlmXlTvm8vyihjNaPDWnvB_Zfs
Upgrade-Insecure-Requests: 1

Sabiendo que es vulnerable al XSS, con BurpSuit enviamos una peticion en algunos de los parametros que aparecen en la petcicion en mi caso "Accept-Encoding" lo cambio por lo siguiente...

Estando a la escucha con nuestro python:

Y cuando enviemos la peticion, reciviremos...

Por lo que tendremos su Cookie, ya que lo que le enviamos el lo envia por lo que se captura la cookie en ese momento y nosotros estando a la escucha lo capturamos...

gobuster

Te descubre "/dashboard" y si nos metemos hay con la cookie que tenemos, nos aparecera un panel visible...

Por lo que se ve envia una peticion al servidor por lo que se puede ejecutar comandos de alguna manera, si nos vamos al BurpSuit y capturamos la peticion de la pagina, donde aparece la fecha, podemos enlazarlo con otro comando, para ello nos haremos una "reverse shell"

Y entrariamos como el usuario "dvir"

En la Home del propio usuario encontraremos la primera flag...

user.txt (flag1)

Para tener una shell sanitizada haremos lo siguiente...

Hacer una pseudoconsola:

Si haces sudo -l veras que puedes hacer como sudo sin contraseña el siguiente binario:

Lo unico que hace este binario es dar informacion del sistema en pequeña medida, pero si intentamos leer el binario veremos lo siguiente...

Veremos que hay un archivo llamado initdb.sh que si se encuentra se ejecuta donde ejecutes el binario, al no existir el archivo lo creamos y dentro insertaremos lo siguiente...

Y estando a la escucha:

Ese archivo lo llevamos a /tmp/ y dentro del mismo ejecutamos el binario como sudo para que asi inicie el .sh y nos mande una shell autenticada como root

Una vez siendo root veremos la flag...

root.txt (flag2)

Last updated