Help | Hack The Box

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

Help

11 de octubre de 2024

Enumeración


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

nmap puertos abiertos

Veo que se encuentran abiertos los puertos 22, 80 y 3000. Ahora voy a realizar un nuevo escaneo solo para los puertos abiertos:

nmap puertos

Voy a ingresar en la página para ver de que se trata:

web

La página muestra un mensaje predeterminado que tiene la instalación para Apache. Cómo no veo nada interesante que pueda ser útil voy a realizar una búsqueda de directorios ocultos:

gobuster

Me llamó la atención el directorio support, mas teniendo en cuenta que la máquina se llama Help, así que voy a ingresar en esa ruta:

help desk

Me encuentro con un software llamado HelpDesk que aparentemente es usado para cargar tickets de soporte.

Voy a investigar si existe alguna vulnerabilidad para este software:

searchsploit

Por lo visto el software puede ser vulnerable a la carga arbitraria de archivos, voy a investigar un poco más sobre el tema.

Por lo visto esta vulnerabilidad se produce cuando un servidor web permite a los usuarios cargar archivos sin que estos sean validados adecuadamente, entonces me permite ingresar un archivo que contenga un exploit y así poder atacar el sistema.

Voy a copiar el código de searchsploit en mi directorio /htb/help junto con el exploit php-reverse-shell.php, el cual sirve para realizar una reverse shell. El código de la reverse shell lo pueden descargar del siguiente repositorio: https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php.

searcsploit -m

Y así obtengo ambos códigos en mi directotio.

Ahora me dirijo a "sumbit ticket" y voy a enviar el archivo php-reverse-shell.php, (aunque te aparezca un error que indique la imposibilidad de cargar archivos .php no importa, en el exploit “40300.py” se indica que el archivo se carga igual).

Ahora solo resta hallar en que ruta se cargan los archivos.

Al realizar la búsqueda de directorios ocultos con gobuster vi que había una ruta llamada "/upload", es probable que ahí se almacenen los archivos enviados al servidor. Para asegurarme voy a realizar otra búsqueda de directorios, esta vez para /uploads:

gobuster tickets

Veo que hay un directorio que se llama tickets, así que voy a pasar esa ruta cuando ejecute el exploit.

Explotación


Para la explotación básicamente lo que vamos a hacer es ejecutar el exlploit "40300.py" que descargamos de searchsploit y lo que va a hacer es que va a activar el archivo php-reverse-shell.php que enviamos al servidor.

Antes de ejecutar el exploit te recomiendo ingresar al código y agregar paréntesis en todas las filas donde se encuentre la función "print", ya que sino te va a dar error.

Una vez preparado el codigo del exploit voy a abrir en una nueva terminal un puerto de escucha con netcat y en otra terminal ejecuto el exploit:

exploit

Y ahora cuando me dirijo a la terminal de netcat veo que ya tengo la reverse shell:

reverse shell

Navegando entre los archivos rápidamente encontré la bandera de usuario:

user.txt

Escalada de Privilegios


Voy a ejecutar LinEnum y ver si encuentro alguna forma de escalar privilegios. Para esto voy a montar un servidor en Python y pasarle el archivo LinEnum.sh a la máquina remota y así poder ejecutarlo.

LinEnum.sh suele venir por defecto en Kali Linux.

En una terminal abro un servidor con Python:

server python

Luego desde la máquina remota descargo el archivo usando el comando wget:

wget

Ahora el siguiente paso es ejecutarlo:

LinEnum

Una vez finalizado el escaneo me puse a investigar si la versión del sistema operativo posee alguna vulnerabilidad:

version

Busqué algún exploit para esta versión y encontré una que se ajusta a lo que necesito:

searchsploit privilege escalation

Así que nuevamente abro un servidor en mi máquina local para luego conectarme con la máquina remota y así descargar el exploit (es el mismo procedimiento que realicé para descargar LinEnum).

Antes de ejecutar el exploit lo que tengo que hacer es usar el comando gcc para compilar el código y poder ejecutarlo en la máquina:

Compliacion

Ahora si, lo ejecuto y obtengo el usuario root:

root

Y simplemente resta ingresar en el archivo root para conseguir la bandera.

Espero que este tutorial te haya sido de ayuda!