Alert | Hack The Box

En este tutorial voy a mostrar como obtuve la bandera root en la máquina Alert de Hack The Box. Esta propiedad se presenta como un desafío de nivel fácil.

Alert

5 de diciembre de 2024

Enumeración


Para comenzar voy a realizar un escaneo de puertos usando nmap:

nmap

Por lo que veo se encuentran abiertos los puertos 22 y 80, así que voy a ingresar en la página web para ver de que se trata:

alert.htb

Pareciera ser una página que permite cargar un archivo con extención .md, así que realicé la prueba y así es. Solo permite extensión markdown. También probé cargar un payload .php y .py pero no hubo forma, únicamente admite la extensión .md.

Por otro lado note que al cargar un archivo automáticamente me redirige a una página que me muestra el texto que cargue, con lo cual sospecho que puede ser vulnerable a Cross Site Scripting (XSS). Para comprobarlo cree un archivo .md con el siguiente código:

<script> alert(‘Esta es una alerta’) </script> 

Al cargarlo veo que me devuelve un cartel con el texto de la alerta. Con lo cuál la página definitivamente es vulnerable a XSS.

Ahora voy a realizar una enumeración de directorios con gobuster para ver si encuentro algo mas:

gobuster php

Acá veo varios directorios interesantes, los cuales voy a investigar más en profundidad. También realicé un análisis con FFUF para encontrar hosts virtuales:

ffuf

Encontré que se puede acceder a stadistics.alert.htb pero al intentar ingresar me aparece un login:

statistics

Explotación


Después de pensar un buen rato y realizar varios intentos fallidos llegue a la conclusión de que es posible enviar un payload en el archivo .md y que este lo habrá el administrador. Llegue a esta conclusión ya que note que al cargar un archivo me da la opción de compartir la url, así que pensé que era posible compartir la url con el administrador desde la pagina de contacto.

Tras estar un buen rato probando diferentes payloads logre dar con el correcto:

payload

Este payload lo envié a la página como un archivo .md. Luego compartí la ruta del payload por medio de la página de contacto. Paralelamente inicie una escucha con netcat así cuando el administrador abre el enlace automáticamente veo la respuesta en mi máquina.

etc-paswd

Aca encontré 3 usuarios, root, David y albert.

Recordé que había un host virtual que pedía credenciales para ingresar, así que voy a tratar de ingresar en la configuración del host virtual para ver si puedo obtener algo de utilidad.

Utilizando el mismo payload (únicamente cambie la ruta del fetch) ingrese en la configuración del servidor virtual. Gracias a la enumeración se que el servidor es apache, y en general la configuracion de los servidores apache se encuentra en el archivo /var/www/host-virtual/.htpasswd. Asi que probe con esto y me devolvió un hash:

htpasswdhash

Ahora voy a guardar el hash en un archivo llamado hash.txt y lo voy a intentar descifrar usando John the ripper.

john

Con las credenciales que obtuve de John The Ripper ya puedo ingresar mediante SSH.

ssh

Simplemente listando encuentro la bandera de usuario. Ahora voy a intentar acceder como root para obtener la bandera que falta.

Escalada de Privilegios


Ejecutando el comando netstat puedo encontrar que esta abierto el puerto 8080:

netstat

Así que lo que puedo intentar es realizar una tunelizacion SSH para acceder al localhost desde el puerto 8080.

tunelizacion

Al ingresar en la url del local host en el puerto 8080 me encuentro con una pagina que se titula “Website Monitor”, la cual parece ser utilizada para monitorear el trafico de los sitios web:

Website Monitor

No encuentro nada interesante en la página, así que me dirigí a la terminal y busque la carpeta en donde se encontraba website-monitor y note que tenía permisos de root, así que le voy a enviar una reverse Shell.

Para eso creo un archivo .php con mi código:

exploit.php

Abro un servidor con python para poder transferir el archivo:

python server

Y ahora lo envío al directorio /config:

exploit ok

Ahora para ejecutarlo voy a ingresar en 127.0.0.1:8080/config/exploit.php, paralelamente inicio un puerto de escucha con netcat:

root

Y listo! Ahora solo resta navegar hasta encontrar la bandera root.

Espero que este tutorial te haya sido de ayuda!