Lian_Yu
A beginner level security challenge - https://tryhackme.com/room/lianyu
Última actualización
A beginner level security challenge - https://tryhackme.com/room/lianyu
Última actualización
Antes de nada vamos a crear el directorio de trabajo para ser organizados.
Le damos el nombre de la máquina y después hacemos uso de la función mkt para crear el entorno con las demás carpetas y un archivo de texto para anotar información.
Una vez anotada la IP de la máquina en nuestro archivo info.txt, nos situamos dentro de la carpeta scans y usamos nuestro script autoscan para comenzar a enumerar puertos y servicios mediante la herramienta nmap.
Ya tenemos el resultado del scan y podemos ver lo siguiente:
Puerto
21
- Servicio
FTP
- vsftpd 3.0.2
Puerto
22
- Servicio
SSH
- OpenSSH 6.7p1
Puerto
80
- Servicio
HTTP
- Apache (http-title: Purgatory)
Estos serían los servicios más interesantes, así que vamos a empezar por el primero; el servicio FTP en el puerto 21.
Lo primero que vamos a probar es si podemos entrar como usuario:
anonymous
al servicio FTP sin proporcionar ninguna contraseña.
Aunque como ya podíamos intuir, ya que nmap no nos lo había reportado, no podemos acceder así.
No disponemos de ningún usuario que nos permita explorar entorno al servicio SSH, por lo que vamos a visitar la posible web del servicio HTTP en el puerto 80.
Al visitar la web, nos encontramos nada más que esta imagen con lo que parece lore sobre la serie Arrow y una anotación del autor de la máquina en la que nos explica que se trata de un CTF temático sobre esta serie.
Si visitamos el código fuente no encontramos ningún comentario, así como tampoco tenemos disponible un robots del que poder sacar más información por lo que vamos a comenzar con la enumeración de directorios.
Personalmente, me gusta usar la herramienta gobuster.
Nos aseguramos de que seguimos dentro de la carpeta scans y lanzamos el siguiente comando con gobuster: (recuerda estudiar los comandos y parámetros)
Tras esperar unos minutos vemos que gobuster nos ha encontrado un solo directorio:
http://<IP>
/island
Vamos a comprobar el contenido en la web:
¡Interesante! Vemos que en este directorio se continúa con la temática de la serie, haciendo la máquina muy divertida. A parte de esto, se nos da una clave:
The code word is:
vigilante
¿Será un usuario? ¿Una contraseña? ¿Y para qué servicio?
Lo apuntamos en nuestro archivo de texto por si nos sirve en un futuro.
Como gobuster no encontró ningún otro directorio desde la base de la IP, lo que vamos a hacer ahora es volver a enumerar con el mismo comando, pero esta vez partiendo del directorio que hemos encontrado: /island
De nuevo hemos encontrado un solo directorio:
http://<IP>
/island/2100
Vamos al navegador:
Esta vez nos encontramos con un vídeo insertado de Youtube que ya ni siquiera se puede reproducir y un título que sigue la misma temática de la serie.
Vamos a apuntar el nombre de Oliver por si resulta ser un usuario.
Como el vídeo no está disponible no sabemos si nos estamos perdiendo alguna pista, pero como no tenemos mucha más información vamos a seguir lanzando gobuster para enumerar sobre esta nueva ruta:
Al ver que gobuster no encontraba ningún directorio sobre IP/island/2100/ sabía que estaba pasando algo por alto, pero luego recordé que se me había olvidado comprobar el código fuente de esta página.
¡Vamos a ello!
¡Y claro que teníamos un comentario!
<!-- Puedes conseguir aquí tu .ticket, pero ¿cómo? -->
¿Se referirá a un token? ¿Cookies de sesión?
Si echamos un vistazo con las herramientas de desarrollador, vemos que no disponemos de ninguna cookie de sesión ni ningún token al que podamos recurrir, por lo que la idea de .ticket como cookie pierde un poco de sentido.
¿Podría ser una extensión?
Vamos a usar gobuster de nuevo sobre esta misma ruta pero corrigiendo el parámetro de extensión para que se ajuste a lo que buscamos: -x .ticket
¡Y tenemos un resultado! Veamos qué contiene este directorio.
Tenemos lo que parece ser una contraseña: RTy8yhBQdscX
Recordemos que ya teníamos un posible usuario: vigilante
Probamos estas posibles credenciales en el servicio FTP y SSH pero no tenemos resultado.
Tras un tiempo pensando en lo que ya tenía, se me ocurrió que el formato de esta posible contraseña era algo extraño y que podría estar codificada, aunque no reconocía el formato, ni parecía base64.
Vamos a visitar CyberChef para intentar descodificar la data:
Introducimos la data en el campo de Input y usamos la herramienta de Magic para ver si consigue descubrir qué tipo de codificación se está llevando a cabo:
Vemos que no nos aporta nada más que una posible semejanza con Base64, por lo que vamos a comprobar todas las tipo base. Filtramos por From base y probamos, que no son muchas.
Con un par de intentos ya podemos ver que se trataba de Base58
Ahora sí tenemos algo que se asemeja más a una contraseña: !#th3h00d
Con esto tendríamos unas posibles credenciales > vigilante:!#th3h00d
Probemos si son correctas en los servicios FTP y SSH
Las credenciales resultan correctas para entrar al servicio FTP como vigilante.
Listamos el contenido del directorio, incluyendo archivos ocultos:
Vamos a descargarnos los tres archivos de imagen relacionados con la máquina y también el archivo .other_user que suena bastante interesante.
Si revisamos las imágenes, vemos que una parece tener el formato corrupto. Las otras dos imágenes son simples fotografías que siguen nuevamente con la temática de la máquina.
Vamos a leer también el archivo .other_user
Parece más lore sobre otro personaje de la serie, pero nos apuntamos el nombre de slade ya que parece que podría estar presente como usuario en la máquina víctima.
Cuando se nos presentan archivos de imágenes, una práctica común es comprobar si contienen información oculta. Para ello vamos a usar dos herramientas: Steghide y Stegseek.
Comprobamos con Steghide si las tres imágenes están limpias usando el siguiente comando:
Una de las imágenes parece tener datos adjuntos pero no podemos extraerlos porque están protegidos con una contraseña que no tenemos.
Es ahora cuando vamos a usar la otra herramienta; Stegseek.
Vamos a usar Stegseek para intentar hacer brute-force a la contraseña que protege la extracción de los datos ocultos en esta imagen.
Para ello usamos el siguiente comando:
Usaremos el típico diccionario que funciona en las CTFs > rockyou
Tenemos la contraseña: password
Aunque Stegseek nos extrae automáticamente los datos y los comprime en un archivo Zip (como podemos observar en la imagen)
Descomprimimos el archivo con unzip y obtenemos dos archivos nuevos: passwd.txt y shado
Leemos ambos archivos y encontramos más lore sobre Lian_Yu y una contraseña: M3tahuman
Pensaremos que se trata de una contraseña para el servicio ssh al tener el nombre de shado-passwd, aunque no deberíamos limitarnos simplemente a eso en el caso de no ser correcto.
Probemos posibles credenciales que hayamos reunido hasta ahora:
Conseguimos entrar por el servicio SSH con las credenciales slade:M3tahuman
Listamos archivos en nuestro directorio /home y leemos la user-flag.
A la hora de comprobar posibles técnicas de escalada de privilegios, la primera que suelo hacer si disponemos de la contraseña del propio usuario es comprobar el archivo sudoers para ver los permisos de 'super usuario' en relación a nuestro usuario actual.
Mediante este comando podemos listar qué comandos están configurados para ser ejecutados con altos privilegios (root)
Vemos que en este caso tenemos permiso para ejecutar como root el binario pkexec
Cuando se trate de binarios, nuestra mejor recurso siempre será GTFObins
Abrimos el navegador y visitamos la web de GTFObins
Buscamos sobre el binario pkexec con permisos sudo:
Tal y como se nos dice, si el binario pkexec dispone de permisos de superuser, podemos utilizar el comando que se nos indíca para spawnear una shell como root y escalar así privilegios.
Comprobamos que somos root con el comando id
o whoami
Y por último listamos archivos en /home de root y leemos la root-flag.
Como resumen simplificado de esta máquina, apuntaré el conjunto de técnicas realizadas para su explotación, los conceptos que personalmente he aprendido durante la misma y, por último, añadiré otros puntos importantes, como anotaciones de los campos en los que estuve más floja u otros datos de interés en los que debería poner más atención en el futuro.
Enumeración general y específica de red, puertos y servicios - NMAP
Enumeración de directorios web - gobuster
Uso del parámetro de búsqueda por tipo de extensión - (-x)
Decodificación de datos - CyberChef
Esteganografía:
Escaneo de data escondida en imágenes - Steghide
Brute-force de passphrase - Stegseek
Escalada de privilegios mediante el binario pkexec (sudo)
Podemos encontrarnos cualquier nombre como tipo de extensión.
Uso de la herramienta Stegseek.
Es indispensable la enumeración completa tanto de directorios web sobre todos las rutas posibles, incluyendo los nuevos directorios encontrados, como de parámetros y archivos, filtrando por tipo de extensión.
Aunque una string no parezca codificada a simple vista, puede estarlo.
Comprobar siempre la posible información oculta en imágenes y verificar el tipo de archivo.