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


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.

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.

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

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:

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:

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.

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

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

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

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:


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:
El resultado fue el siguiente:

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:

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

Espero que este tutorial te haya ayudado!