# Headless WriteUp

Primero hacemos un escaneo de puertos con nmap para ver que puertos estan abiertos, y que servicios estan corriendo en los mismos

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015214739/a200e695-8d38-4003-b035-b9369b841d81.png align="left")

Nos encontramos con que en el puerto 5000 hay una pagina web aparentemente en construccion junto con un contador y un boton para enviar preguntas sobre el sitio

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015231674/a46f98d2-1bc8-405d-ad9b-48d0a1fe4bf3.png align="left")

Tras presionar el boton de preguntas, nos envia al directorio /support en el cual hay un formulario de contacto que pide diferentes datos de contacto

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015241207/f037b560-e40c-4e05-9a40-846cd9196c3f.png align="left")

Al interceptar la solicitud al servidor tras haber llenado el formulario con datos aleatorios, vemos que hay una cookie que verifica si quien esta enviando la solicitud es el administrador

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015250558/66458f72-b58d-4737-a881-8d7697a37157.png align="left")

Si intentamos realizar un ataque XSS introduciendo un payload en la solicitud, nos aparecera una alerta del firewall del sitio avisando que han bloqueado el intento de ataque

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015259776/68cbe035-16be-4d83-a19c-5afe774f0ef5.png align="left")

Realizamos una busqueda de posibles directorios adicionales con la herramienta dirbuster, y nos encontramos con que ademas de /support el sitio cuenta con otro directorio llamado /dashboard el cual arroja el codigo 500 ya que no estamos autorizados a acceder

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015268274/28e3dd34-0fc8-4233-b52a-32160df35541.png align="left")

El sitio no puede verificar que estemos autorizados a ver el sitio ya que no poseemos las credenciales adecuadas, en este caso las de administrador

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015276506/9d207877-4a7e-4339-ab56-da4f559ce0d5.png align="left")

Si revisamos la solicitud que se envia a /dashboard nos encontramos con que la cookie que verifica si somos administradores, tambien es enviada al sitio, por lo cual, esta es la unica forma de que el sitio verifique si somos los administradores o no

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015286112/fef728a3-8cc3-4690-a767-cb30f0fce990.png align="left")

Iniciamos un servidor http con Python en el puerto 9999

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015293482/92dbd4f1-da2b-4221-8f85-c3a8237ded54.png align="left")

Probamos realizar un ataque de XSS introduciendo el payload en los parametros de User-Agent y message, con el fin de recibir la cookie de administrador en nuestro servidor http

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015309404/87cb0ad7-68f2-462f-952e-0bb1c30bd07a.png align="left")

Recibimos una solicitud del servidor al servidor http de nuestra maquina local, y nos encontramos con que el ataque fue exitoso ya que logramos obtener la cookie de administrador

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015317381/adcffce3-7b55-4388-b9d8-392c9873a997.png align="left")

10.10.11.8 - - \[27/Jun/2024 23:36:11\] "GET /?cookie=aXNfYWRtaW49SW1Ga2JXbHVJZy5kbXpEa1pORW02Q0swb3lMMWZiTS1TblhwSDA= HTTP/1.1" 200 -

Al decodear la cookie, la cual estaba en base64, vemos que esta es diferente a la que ya teniamos

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015326514/89215676-0dfb-4545-ac7b-54b8eb7a4e4d.png align="left")

is\_admin=ImFkbWluIg.dmzDkZNEm6CK0oyL1fbM-SnXpH0

Realizamos una solicitud a /dashboard pero esta vez utilizando la cookie previamente obtenida y nos encontramos con que el servidor nos arroja el codigo 200, dejandonos acceder al sitio

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015334085/fa1e6951-e361-4990-a028-5ad962754a7a.png align="left")

Nos encontramos con el panel de administrador, el cual permite generar reportes del sitio con una fecha que le indiquemos

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015344149/985da9b9-7db8-4fca-b965-fd7c0725bfea.png align="left")

Al revisar la solicitud, nos encontramos con que hay un posible RCE (Remote Command Execution o Ejecucion Remota de Comandos) ya que al introducir el comando "whoami" debajo del mensaje que los sistemas estan encendidos y funcionando, nos sale "dvir" el cual podria ser el usuario del sistema

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015353003/1d68acab-63b8-447c-bafb-0c7d99463257.png align="left")

Intentamos nuevamente enviar un comando, pero esta vez para listar los archivos, y vemos que esta vez, el mensaje de respuesta del sitio es diferente, ya que logra listar con exito los archivos del directorio en el que esta corriendo el sitio, por lo tanto se confirma la vulnerabilidad tipo RCE

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015361793/0cf721c5-2fae-4a6a-9f67-097f55f6322d.png align="left")

Abrimos una sesion de netcat y la ponemos a la escucha en el puerto 4444

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015370443/fd930e16-495c-4513-a7db-d4536447e9e8.png align="left")

Enviamos un comando para obtener una reverse shell, de forma que el servidor se conecte a nuestra maquina para lograr interactuar con la terminal del servidor

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015378541/4d5d4fce-819d-43aa-a229-283ad8736b24.png align="left")

Recibimos la conexion del servidor

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015386793/08ee7d3d-0dad-44f7-98bd-98b979690a35.png align="left")

Buscamos la flag de usuario

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015394576/58948594-b895-41ab-9744-2f7335e0b7d1.png align="left")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015402110/4c5a8f39-99ac-44b6-8141-d17ffd8b2ea7.png align="left")

Verificamos los permisos que tenemos para luego obtener la flag de root, y vemos que el unico directorio en el cual no se nos solicitara la contraseña es /usr/bin/syscheck

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015412222/098849a2-c509-4fab-98da-9e224569ee86.png align="left")

Revisamos el contenido de /usr/bin/syscheck

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015420282/e9c4988f-016d-49b0-abb9-4a0f2a2ed47f.png align="left")

Abrimos una sesion de netcat y la ponemos a la escucha en el puerto 8888

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015428285/c10ab92e-3c75-485d-803b-509dd60c4c4e.png align="left")

Ejecutamos un comando para obtener una reverse shell, de forma que el servidor se conecte a nuestra maquina para lograr interactuar con la terminal del servidor con permisos de root

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015436881/2ab0812d-392e-47c8-9d1f-1ba5209606ae.png align="left")

Recibimos la conexion del servidor y verificamos mediante el comando whoami que somos administradores del sistema

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015444913/f01ffe46-3237-4396-b7df-180aa1fea55f.png align="left")

Buscamos la flag de root

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756015452946/05b8baba-e8d3-4025-b664-5b138da916f4.png align="left")

![Nano](https://www.hackthebox.eu/badge/image/54373 align="left")
