Help

Publicado: 06 de Mayo de 2025 Autor: Josรฉ Miguel Romero aka x3m1Sec Dificultad: โญ Easy
๐ Descripciรณn
Help" es una mรกquina Linux de dificultad fรกcil en HackTheBox que presenta una aplicaciรณn web vulnerable de mesa de ayuda (HelpDeskZ) y una API GraphQL. La explotaciรณn implica mรบltiples vectores: enumeraciรณn web, extracciรณn de credenciales a travรฉs de GraphQL, explotaciรณn de SQLi en la aplicaciรณn web para obtener mรกs credenciales, y finalmente una escalada de privilegios aprovechando una vulnerabilidad en el kernel de Linux.
La mรกquina es particularmente รบtil para practicar tรฉcnicas de reconocimiento web, manipulaciรณn de APIs GraphQL, explotaciรณn de SQL Injection y escalada de privilegios mediante vulnerabilidades de kernel.
๐ Metodologรญa
๐ญ Reconocimiento
Ping para verificaciรณn en base a TTL
๐ก Nota: El TTL cercano a 64 sugiere que probablemente sea una mรกquina Linux.
Escaneo de puertos
Enumeraciรณn de servicios
โ ๏ธ Importante: El servicio HTTP redirige a
help.htb. Debemos agregar este dominio a nuestro archivo hosts.
๐ Enumeraciรณn Web
El servicio HTTP del puerto 80 muestra un sitio web con apache en construcciรณn sin nada interesante:
Fuzzing de vhosts
No encontramos nada relevante.
Fuzzing de directorios
Realizando fuzzing de directorios descubrimos un directorio llamado /support

El sitio web estรก usando un servicio llamado HelpDeskZ aunque no sabemos a priori la versiรณn.
Haciendo una bรบsqueda sobre el proyecto en github encontramos que en el directorio raรญz hay un fichero llamado UPGRADING.txt
https://github.com/ViktorNova/HelpDeskZ/blob/master/UPGRADING.txt
Este fichero parece indicar entre cosas la versiรณn. Veamos si podemos enumerar la versiรณn en nuestro caso:
http://help.htb/support/UPGRADING.txt

Verificamos que es la versiรณn 1.0.2 y esta versiรณn es vulnerable a Arbitrary File Upload y a authenticated sql injection:
https://www.exploit-db.com/exploits/40300

https://www.exploit-db.com/exploits/41200

Encontramos una secciรณn que permite enviar tickets rellenando una serie de campos del formulario y ademรกs hay un mรณdulo de subida de archivos. Creo que puede valer la pena analizar estรฉ mรณdulo para ver quรฉ extensiones permite. Intentamos subir un archivo .php:
Al acceder al puerto 3000 encontramos que el servicio nos devuelve un JSON indicando el siguiente mensaje:

En la pestaรฑa "Headers" vemos que en la respuesta estรก especificando que se estรก empleando Express.

Googleando sobre ยซExpress js query languageยป nos encontramos con resultados relacionados con GraphQL.
Al navegar al recurso /graphql nos indica que falta por especificar un parรกmetro de tipo GET en la solicitud:

A continuaciรณn intentamos consultar informaciรณn. Un endpoint graphql toma objetos como entrada. Como necesitamos informaciรณn relacionada con un usuario vamos a probar con un objeto usuario. Usamos jq para formatear la salida a JSON

La respuesta nos indica que parece que la peticiรณn espera que se especifiquen subcampos. Probamos por ejemplo con el campo username o usernames:

Encontramos un usuario, ahora podemos ir mรกs allรก e intentar tambiรฉn obtener el campo contraseรฑa a ver si existe:


Parece que el campo contraseรฑa es un hash MD5. Usamos hashcat para intentar crackearlo:

Probamos estas credenciales en el panel de login anterior y logramos acceder:

Anteriormente cuando enumeramos la versiรณn de este software vimos que podรญa ser vulnerable a Arbitrary File Upload y Authenticated SQLi.

El exploit no me funcionรณ con esta mรกquina, pero tras revisar el contenido pude entender lo que hacรญa para intentar realizar la explotaciรณn de forma manual.
Lo primero que se requiere es crear un ticket adjuntando un archivo:

A continuaciรณn, copiamos la url del adjunto en el navegador e interceptamos la peticiรณn con burp:
Probamos aรฑadiendo una inyecciรณn muy sencilla y confirmamos la vulnerabilidad:

Enviando esto resulta en una condiciรณn verdadera que devuelve la imagen pero cambiรกndolo a 1=2 no lo hace porque se evalรบa a falso. Esto confirma la vulnerabilidad SQLi.
Podemos automatizar la inyecciรณn con sqlmap:
Hay bastantes tablas por lo que una vez localizamos la que nos interesa lanzamos de nuevo sqlmap indicando la misma para hacer un dump:

Obtenemos la contraseรฑa de la cuenta Administrator: Welcome1
Estas credenciales no funcionarion en el panel de /support de helpdesz. Tampoco funcionaron de primeras con ssh las combinaciones Administrator, admin, helpme, root, hasta que probรฉ con help como usuario y pude autenticarme vรญa ssh:

Escalando privilegios
Verificamos que el usuario help no puede ejecutar ningรบn comando como root:
Al enumerar la versiรณn del kernel parece que es una versiรณn vulnerable:
https://www.exploit-db.com/exploits/44298

Creamos un fichero en el directorio /tmp de la mรกquina objetivo con el nombre exploit.c y el contenido del exploit
A continuaciรณn lo compilamos
Le damos permisos de ejecuciรณn y lo lanzamos:
Last updated