Shadow Gate
MΓ‘quina Shadow Gate de la plataforma The Hackers Labs
Shadow-Gate
LINUX
Avanzado
The Hackers Labs
192.168.56.21

Reconocimiento
Comenzamos con un escaneo de nmap para encontrar los puertos abiertos de la mΓ‘quina:
-p-: Englobar el rango total de puertos (1-65535).
--open: Mostrar solo los puertos que estΓ©n abiertos.
--min-rate 5000: Enviar paquetes no mas lento que 5000 paquetes por segundo.
-sS: Indicamos el modo de escaneo TCP SYN scan.
-Pn: No aplicar descubrimiento de hosts.
-n: No aplicar resoluciΓ³n DNS.
-oG: Exportar el escaneo en un formato especΓfico.
Posteriormente, usamos extracPorts para copiarnos los puertos al clipboard y realizamos un escaneo mas exhaustivo a los puertos que nos reportaron inicalmente:
y realizamos el segundo escaneo:
-sC: Aplicar los scripts bΓ‘sicos de reconocimiento
-sV: Identificar los servicios corren en los puertos y sus versiones.
-oN: Exportarlo tal cual como se muestra por consola.
Puerto 56789
Al conectarnos con netcat al puerto 56789, vemos lo siguiente:
como dice "Some wait for n0cturne", probamos a escribir "n0cturne" y funciona:
obtenemos varios textos en base64.
Si desciframos el primero, veremos lo siguiente:
pero los otros nos darΓ‘n un texto cifrado. AdemΓ‘s de que cada vez que 'iniciamos sesiΓ³n', vemos que el primer texto siempre es igual y los que estΓ‘n cifrados siempre cambian. Sabiendo esto, podemos intuir que el primer texto es la clave de cifrado y los otros los textos cifrados, tambiΓ©n sabemos que es el modo ECB ya que no nos proporcionan un IV. Sabiendo todo esto crearemos un script que descifre cada uno de los textos:
este script nos imprime la primer letra de cada texto descifrado, ya que segΓΊn el mensaje de el puerto 56789 el "patron" se encuentra escondido en el ruido, y probando varias veces con distintos textos cifrados que nos dan, la ΓΊnica letra que nunca cambia es la primera.
Este texto no nos sirve de nada, ya que al enviarlo por el puerto 56789 nos dice que es incorrecto. Viendo esto pasaremos al puerto 8080.
Puerto 8080
Empezamos realizando fuzzing, ya que cualquier cosa que probamos nos da el cΓ³digo de estado 403.
teniendo un login, probaremos a logearnos con el usuario que encontramos:
viendo el mensaje, le agregaremos un -v de verbose para poder ver las cabeceras:
sin logear:
logeado:
Como vemos en las cabeceras, cuando estamos logeados aparece X-Shadow-MFA, con un valor (en mi caso) 382592 que serΓa el token. Luego de probar un rato con el token, se me ocurre realizar fuzzing con el mismo pero especificando el token por POST, y como todas las rutas tienen cΓ³digo de estado 403 lo hice con un script (ya que las herramientas no me funcionaban):
el script se encarga de obtener el token y luego buscar la ruta en la que usar el token:
de todos modos ya no nos sirve la ruta porque el script hizo lo ΓΊnico que tenΓamos que hacer con la ruta.
Ahora si volvemos a conectarnos al puerto 56789 nos dice lo siguiente:
IntrusiΓ³n
Ahora simplemente nos conectamos a la mΓ‘quina usando las credenciales mars:sshpassword123
Escalada de Privilegios
Mars
Estando dentro podemos leer la flag de user:
Si recordamos el mensaje de /verify, decΓa algo de servicio activo y si revisamos los puertos abiertos desde la mΓ‘quina vemos que el puerto 4444 estΓ‘ abierto:
si nos conectamos desde la propia mΓ‘quina usando netcat, veremos que nos imprime un >>>, que es el mismo prompt que al ejecutar python3:
sabiendo esto escribiremos cΓ³digo en python y veremos que pasa:
y como vemos se ejecuta y ademΓ‘s como root. Por lo que simplemente ejecutaremos el siguiente cΓ³digo para escalar a root:
y seremos root.
Root
Como usuario root podremos leer la flag de root:

Gracias por leer ;)
Γltima actualizaciΓ³n