Include | Try Hack Me

En este tutorial voy a mostrar como logré resolver la máquina "Include" de Try Hack Me. Esta propiedad se presenta como un desafío de nivel medio.

5f9c7574e201fe31dad228fc-1718365394351

22 de noviembre de 2024

Enumeración


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

nmapnmap info puertos

Se encuentran abiertos algunos puertos, de los cuales me llamaron la atención el 4000 y el 50000 ya que, ya que contienen el protocolo http, voy a ingresar en ambos para ver con que me encuentro.

puerto 4000

En el puerto 4000 veo que hay una login el cual me da las credenciales para indicar sesión como invitado (guest / guest). Tras iniciar sesión me encuentro con una página para agregar amigos.

4000 login

Al ingresar en el perfil de cada usuario puedo ver algo de información como el nombre la edad, si es administrador, entre otros:

profile 4000

Por otro lado, también ingresé al puerto 50000 y me encontré con un mensaje el cual indica que la pagina es solo para personal autorizado y contiene un login:

login 50000

Lo primero que se me ocurre es modificar el parámetro “isAdmin” a true para poder acceder con las credenciales como admin en el puerto 50000.

Por lo que veo al recomendar una actividad, esta se agrega en el detalle del perfil, y en el caso de que quiera modificar una propiedad, es tan simple como escribir el nombre de la propiedad a modificar y en Activity Name escribir el nuevo valor. Tras realizar este procedimiento y cambiarle el valor a “isAdmin” a true se me desbloquearon 2 entradas que antes no había: API y Settings.

Al ingresar en API me encuentro con los datos de una API interna que corre en un servidor local. Esta me brinda varios datos, como los usuarios y las claves secreta de la API:

API

También ingresé en “Settings” ahí encontré un unput el cual permitía ingresar la URL de una imagen para descargarla y mostrarla en un banner.

settings

Se me ocurrió que tal vez esta petición se realizaba desde un servidor interno el cual tenga acceso a la API, así que envié la siguiente URL para obtener las credenciales: http://127.0.0.1:5000/getAllAdmins101099991

APi URL

¡Y fue un éxito! Me devolvió un base64 que tras decodificar me mostro las credenciales:

base64 decode

Tras ingresar las credenciales en el puerto 50000 logré acceder al panel de admin:

admin 5000

Y así obtuve la primera bandera.

Explotación


Tras investigar un poco el código fuente, noté que la imagen se llama desde un enlace, el cual al abrirlo me dio la sensación de que podía ser vulnerable a directory traversal:

font sourcedirectory traversal

Descargue una lista de payloads para ver si podía explotar esta posible vulnerabilidad, a su vez me cree un pequeño script en Python para poder automatizar esta tarea (también se puede usar burpsuit intruder, pero la lista de payloads era muy larga y burpsuite en su versión free demora demasiado). Tras ejecutar el srcipt encontré con un payload que funcionaba:

http://10.10.247.229:50000/profile.php?img=....%2F%2F....%2F%2F....%2F%2F....%2F%2F....%2F%2F....%2F%2F....%2F%2F....%2F%2F....%2F%2Fetc%2Fpasswd

El resultado fue el siguiente:

etc-passwd

Encontré 2 usuarios, Joshua y Charles.

Voy a utilizar la herramienta hydra para realizar un ataque de fuerza bruta y ver si puedo hallar las credenciales para conectarme mediante ssh:

credentials ssh

Ahora solo resta conectarse mediante ssh con la contraseña que obtuve y buscar la bandera:

flag

Espero que este tutorial te haya ayudado!