CSIRT-CAN – Centro de Respuesta a Incidentes de Seguridad de Canarias

Torneo de los Tres Magos

🪄 Bienvenido a Hogwarts, Escuela de Magia 🪄
El torneo de la copa de los magos va a comenzar.

Tu objetivo será explorar este entorno encantado, descubrir secretos ocultos y encontrar varias FLAGS escondidas que prueban tu habilidad para dominar la magia digital.

Prepárate para enfrentarte a retos de escalada de privilegios y demostrar que eres digno de ser un auténtico mago o bruja.

¿Estás listo para aceptar el desafío y desvelar los misterios de Hogwarts?
¡Que la magia te acompañe!

REQUISITOS

1.    Iniciar el contenedor:
./auto_deploy.sh hogwarts-ctf.tar


2. Empezar con un nmap para comprobar que puertos estarían abiertos:

    nmap -sS -sV -Pn IP-Lab

Cuando escaneas la interfaz por defecto del host en la red bridge de Docker, estás realmente escaneando el host desde fuera del contenedor, no los puertos que tienes mapeados localmente en tu máquina por Docker.

Si quieres obtener más información puedes realizar:  nmap -sS -sV -Pn localhost

Si escaneas localhost, sí estás viendo los puertos mapeados desde Docker al host (por ejemplo 8080:80, 2222:22, etc.), porque Docker está haciendo NAT y exponiendo esos puertos localmente en tu sistema.
¡Suerte en el reto y que la magia esté contigo!

SOLUCIÓN DEL CIBEREJERCICIO

Escaneo de puertos

Lo primero que debemos hacer una vez tengamos el contenedor arrancado consiste en realizar un escaneo de puertos para saber por dónde podemos empezar a investigar.

Solución: nmap -sS -sV -Pn localhost

    Esto nos devolverá un listado de puertos que se encuentran abiertos. En este caso los puertos serían:

•    Puerto 2121
•    Puerto 2222
•    Puerto 8080
•    Puerto 8443

PISTA: Yo empezaría por orden, es decir el puerto 2121

Servicio FTP

En el puerto 2121 se encuentra nuestro servicio FTP (File Transport Protocol). Para acceder necesitarías unas credenciales, pero al no saberlas.

Una vulnerabilidad típica de este protocolo, se puede dar por una mala configuración en la que han dejado que se pueda acceder como usuario anónimo. Para ello solo tenemos que hacer:

PISTA: Prueba a entrar como usuario anónimo

•    ftp anonymous 2121 (Pulsar Enter)
•    Cuando nos pida la contraseña (Pulsar Enter)

Ahora que estamos dentro podríamos investigar si nos han dejado alguna información relevante y leerla.  En este caso hemos obtenido unas credenciales del usuario “hermione”.
•    ftp hermione 2121
•    Contraseña del usuario

Si volvemos a acceder con las nuevas credenciales, tendremos acceso al diario de Tom Riddle y obtendremos una nueva pista para el siguiente servicio (Web)

Servicio WEB Primera Parte

Si accedemos a nuestro navegador y en la URL ponemos https://localhost:8080 podremos acceder a la página web del Ministerio de magia. Y tendremos un buscador de documentos del ministerio.

Lo primero que nos aparecerá será una serie de archivos que han sido buscados recientemente, lo ideal sería que el alumno se ponga a descargarlos, para eso tiene que copiar el nombre que les aparece en los sugeridos pegándolo en el buscador y descargándolo. Esto es lo que se llama Rabbit Hole (Es decir que pierda tiempo buscando información innecesaria para despistar)

PISTA: Copia el nombre del archivo completa y luego busca.

Cuando ya se canse de buscar, se debería dar cuenta que en la parte de arriba de la web hay un botón de login para iniciar sesión. Las credenciales que debería probar serían las del usuario hermione porque son las únicas que tenemos.

Al acceder como hermione, le aparecerá un archivo nuevo en las sugerencias pero aparecerá como medio oculto y si intenta descargarlo le dirá que no tiene los permisos suficientes.

La idea de este reto es que se consiga una escalada de privilegios y llegues a ser administrador de la web.

Servicio WEB Segunda Parte

Si accedemos a nuestro navegador y en la URL ponemos https://localhost:8443 podremos acceder a la página web del Banco de Gringotts. Nos aparecerá otro buscador pero aquí ya no buscamos archivos, si no que nos mostrará información de personajes famosos o información relevantes. Para ello, tendremos que conocer de lenguaje SQL para hacer consultas a la base de datos vinculada.

PISTA: Deberías darle un repaso a las sentencias SQL y recuerda la UNION

Para este servicio tengo un usuario llamada albus_dumbledore que tiene acceso como usuario normal que ve su base de datos y quiere explotar alguna vulnerabilidad de mysql, pero quiere ver más tablas a parte de la suya.

•    Ver todos los registros de la tabla Azkaban: ' OR '1'='1

•    Ver nombre de la base de datos: ' UNION SELECT database(), null #

•    Ver otras tablas de la base de datos: 'UNION SELECT table_name, null FROM information_schema.tables WHERE table_schema = 'gringotts' #

•    Ver las columnas de la tabla que queramos (como en este caso ollivanders):
'UNION SELECT column_name, null FROM information_schema.columns WHERE table_name = 'ollivanders' #

•    Ver valores tabla ollivanders: 'UNION SELECT info, null FROM ollivanders

Esta última tabla nos dará una pista para escalar privilegios en SSH para pasar del usuario severus_snape al usuario root.

Servicio SSH Segunda Parte

    PISTA: ¿Qué debes comprobar para escalar privilegios? Lo hiciste antes

Si volvemos a nuestro usuario severus_snape y volvemos a realizar el comando sudo -l, podremos ver que el comando find se puede ejecutar como usuario root haciendo:

•    sudo find . -exec /bin/bash \;

Ahora seremos root y buscando en la carpeta del root veremos nuestra última flag y habremos terminado el CTF.