La Estación de Investigación Volcánica del Teide (EIVT) es una instalación científica ficticia que monitoriza la actividad volcánica de las Islas Canarias. Recientemente, el Dr. Mencey Guanche, investigador principal, ha desaparecido misteriosamente junto con datos cruciales sobre una posible actividad volcánica inminente.
Los últimos logs del sistema muestran actividad sospechosa. Tu misión es infiltrarte en los sistemas de la estación, seguir las pistas dejadas por el Dr. Guanche y descubrir qué pasó realmente.
¿Fue secuestrado? ¿Huyó con información valiosa? ¿O hay algo más siniestro?
Objetivo final: Obtener acceso root y encontrar el "tesoro" oculto del Dr. Guanche.
Nivel 1: Reconocimiento
Técnicas: Enumeración de servicios, Fuzzing.
El usuario deberá realizar una enumeración de los servicios activos, para ello podrá utilizar herramientas como “nmap” para descubrir los puertos activos del sistema. Tras realizar la enumeración, encontrará que existen los siguientes servicios activos: ftp, ssh y 2 servidores web.
Al usuario se le proporciona acceso por SSH al sistema, con el usuario que tiene acceso no podrá obtener demasiado, pero sí podrá listar los usuarios del sistema.
De los servidores web, el situado en el puerto 8081 contiene simplemente una página de login no funcional, únicamente con el fin de confundir al usuario. Si se accede al servidor web situado en el puerto 80 podrá encontrar una web distintas páginas con información sobre la Estación de Investigación Volcánica del Teide, pero nada relevante para su explotación. El usuario deberá realizar una enumeración de las páginas de la web para poder encontrar información relevante.
Típicamente, las webs incluyen una página llamada “robots.txt” que contiene instrucciones para los robots de búsqueda, como los de Google, sobre qué partes del sitio pueden rastrear y cuáles no.
Al acceder a este fichero el usuario podrá encontrar la primera flag, además de dos carpetas (/admin y /mencey_private) que no eran accesibles a través de los links mostrados en la página principal. También podía encontrarse la carpeta /admin y sus ficheros haciendo enumeración o fuzzing web.
Nivel 2: Explotación Web
Técnicas: SQL Injection.
La carpeta /mencey_private anteriormente encontrada contiene un archivo que está protegido y no podremos acceder a él. En cambio, la carpeta /admin contiene el fichero login.php al cual sí que podemos acceder.
En la página admin/login.php podrá intentar vulnerar el formulario de login de varias
formas, por ejemplo, realizando un ataque de fuerza bruta, aunque no obtendrá resultado.
Para obtener resultados, el usuario deberá realizar un ataque de SQL Injection. La
inyección SQL es un tipo de ataque que consiste en insertar código malicioso en consultas SQL, aprovechando vulnerabilidades en aplicaciones web para acceder o manipular bases de datos.
El formulario no trata de manera correcta la entrada del usuario, por lo que si introduce una consulta SQL puede modificar el funcionamiento de validación del login, consiguiendo burlarlo y acceder al dashboard. Para este caso, un input básico como “‘ OR 1=1– -” será suficiente.
Una vez se consiga acceso al dashboard, podrá encontrar un link que redirige al fichero al que anteriormente no teníamos acceso, en él encontrará la segunda flag y unas credenciales.
Nivel 3: Criptografía
Técnicas: Decodificación, archivos ocultos.
Como el usuario conoce los distintos usuarios del sistema, deberá probar las credenciales que encontró anteriormente hasta acceder con uno de ellos mediante SSH, servirán para el usuario mencey.
En el directorio del usuario encontrará un fichero cuyo contenido está cifrado. Además, también se encuentra una carpeta con distintos subcarpetas y ficheros, que no contendrán nada de información relevante. Dentro de una de las subcarpetas se encuentra un fichero oculto “.secreto” que contiene la clave de desencriptado y pistas sobre el tipo de cifrado utilizado.
El cifrado utilizado es Vigenere, utilizando alguna plataforma web como “Cyberchef” se podrá descifrar el contenido del fichero, al hacerlo obtendrá otras nuevas credenciales.
Nivel 4: Esteganografía
Técnicas: Análisis de metadatos.
Con las credenciales obtenidas en el nivel anterior el usuario podrá acceder al sistema con el usuario investigador.
En el directorio del usuario encontrará un fichero de texto con historia y pistas. La pista insta al usuario a revisar TODOS los detalles de unas imágenes, como el servicio ftp está activo el usuario podría intentar acceder a este servicio con las credenciales. El servicio ftp permite el acceso con este último usuario a su directorio, por lo que el usuario será capaz de traer las imágenes a su equipo.
Para obtener información relevante, el usuario debe revisar los metadatos de las imágenes con alguna herramienta como “exiftool” para encontrar la flag número 4.
Nivel 5: Escalada de privilegios
Técnicas: Abuso de permisos SUID.
En los metadatos de las imágenes, aparte de encontrar la flag también se podrá encontrar un comentario que hace referencia a que se ha guardado un informe como usuario privilegiado además de una pista que dice “El tiempo es clave en esta investigación”.
Visto lo anterior, el siguiente paso es obtener acceso como root del sistema. Para ello, una de las técnicas que se pueden intentar es el abuso de binarios SUID. Los permisos SUID sobre un fichero permiten que un usuario no privilegiado ejecute un fichero con permisos de administración, es por ello que dependiendo de las acciones que realice el fichero pueda llegarse a obtener acceso al sistema como usuario privilegiado.
Haciendo una búsqueda de los ficheros del sistema que disponen de permisos SUID nos encontramos con varios binarios que cumplen esta condición. Entre ellos, se encuentra el binario time, que si recordamos la pista es el que el usuario deberá intentar vulnerar.
Ejecutando este binario como “/usr/bin/time /bin/bash -p” creará una shell con privilegios, obteniendo acceso al sistema como el usuario root.
Una vez se consiga acceso root al sistema, al acceder al directorio /root se encontrará un fichero con la flag final y la resolución de la historia del CTF.
SOLUCIONES POR NIVELES
1. Nivel 1
- Realizar escaneo de puertos con nmap a la IP del CTF
- Acceder mediante navegador web al puerto 80
- Mediante enumeración web o fuzzing se descubre /robots.txt
- Se obtienen directorios de la web
2. Nivel 2
- Acceder a la ruta /admin/login.php
- SQL Injection en el formulario de inicio de sesión: ‘ OR 1=1 – -
- Se obtiene acceso interno a la web
- Acceder a la sección ‘Mis Archivos’ del dashboard
- Se obtiene una clave de acceso
3. Nivel 3
- Acceder mediante SSH al sistema utilizando las credenciales compartidas al inicio
- Se descubren usuarios del sistema en /home o /etc/passwd
- Acceder mediante SSH al sistema utilizando las credenciales descubiertas en el nivel
anterior con el usuario mencey
- Fichero ‘mensaje_cifrado.txt’ ilegible al estar cifrado
- Se descubre fichero oculto ‘.secreto’ en carpeta ‘Documentos/Informes Mensuales’
mediante comando: ls -aR
- -a: lista todos los ficheros, incluso ocultos
- -R: recursivo
- Se obtiene clave de descifrado y pista del método de cifrado
- Descifrar el fichero ‘mensaje_cifrado.txt’ mediante cifrado Vigenere utilizando la
clave obtenida
- Se obtiene contraseña
4. Nivel 4
- Acceder mediante SSH al sistema utilizando la contraseña obtenida en el nivel anterior con el usuario investigador
- Examinar con la herramienta exiftool los metadatos de las imágenes de la carpeta ‘Evidencias’
- Se obtiene pista en la imagen ‘mapa_depositos.minerales.png’ que insta al usuario a obtener acceso privilegiado al sistema y proporciona pista relacionada con el tiempo.
5. Nivel 5
- Descubrir binarios SUID mediante comando: find / -perm -4000 2>/dev/null
- -perm -4000: Encontrar ficheros con permisos SUID
- De los binarios listados se encuentra /usr/bin/time
- Se obtienen permisos del binario mediante: ls -l /usr/bin/time
- El binario es propiedad del grupo investigadores, al que pertenece el usuario
investigador que utilizamos actualmente, por lo que puede ejecutar el binario con
permisos de superusuario.
- Se abusa del binario para conseguir una shell de superusuario mediante el
comando: /usr/bin/time /bin/bash -p
- Se obtiene acceso al sistema como usuario privilegiado
- Se accede a la carpeta /root donde se encuentra fichero final de resolución