Esta VM vulnerable es un divertido y simple CTF que puede descargarse desde el estupendo portal VulnHub.
Nota: Para vmware puede ser necesario configurar la dirección MAC 08:00:27:A5:A6:76 para conseguir que funcione (obtenga DHCP). Yo lo hice, ver Fig 1.
¡Que comience el juego!
En este caso ya sé la dirección IP, por lo que empezamos lanzando un escaneo nmap. Del resultado podemos ver solo 1 puerto abierto (HTTP) y el archivo robots.txt con algunos directorios.
Abrimos el sitio Web.
Nada interesante por el momento. Ahora vamos a probar abrir el robots.txt
En estos directorios solo encontramos una imagen del Jedi Obi-Wan Kenobi y nada más.
Pensando un poco en próximos pasos y teniendo en cuenta que este es el juego fristi, llegamos a la siguiente URL; un portal admin con inicio de sesión y contraseña.
Revisando el código HTML encontramos que la imagen se codifica en Base64 y también un posible nombre de usuario: eezeepz
Mirando más de cerca el código fuente HTML nos encontramos con otro texto posiblemente codificado en base64.
Vamos a poner el texto codificado en base64 en el decodificador de Burp Proxy. Vemos una cabecera PNG. ¡Suena a una imagen!
Escribamos un script en Python para obtener la imagen.
Abrimos la imagen y ¡tiene pinta de ser una contraseña!
Ahora tenemos un nombre de usuario y una contraseña. ¡Continuemos!
Genial, tenemos acceso al portal.
Podemos subir una imagen.
¿Por qué no una webshell? 🙂 Modificamos una de las que trae Kali para añadir mi dirección IP.
Subimos la webshell pero ocurre un error. ¡Algún tipo de filtro!
Abrimos Burp Proxy para intentar saltar el filtro, cambiando el nombre del archivo para agregar una extensión “.png”.
Perfecto! filtro saltado y tenemos una webshell subida.
Llamemos a nuestro webshell
Recuerda que antes de llamar a la webshell debemos poner Netcat a la escucha. Caballeros, tenemos shell 🙂
Un buen lugar para empezar es analizar el código de la aplicación web, escrita en PHP. En el directorio /var/ podemos ver un directorio llamado /fristigod/ del usuario fristigod, interesante.
Hurgando en el directorio /var/www/ encontramos un archivo llamado notes.txt.
En el directorio /home/ podemos ver varios usuarios.
Dentro del directorio /eezeepz/ encontramos otro archivo notes.txt con un mensaje interesante. Podemos ejecutar comandos, ¡genial!
Vamos a ejecutar un comando para poder acceder al directorio /admin/ utilizando el truco del archivo /tmp/runthis.
Dentro del directorio /admin/ vemos un montón de archivos interesantes.
Tenemos algunos archivos cifrados y un script de Python utilizado para cifrar los archivos.
Es hora de un poco más de Python, vamos a modificar el script de cifrar para descifrar los archivos.
Ahora que tenemos algunas contraseñas vamos a cambiar nuestro actual usuario al usuario fristigod. Recuerda que uno de los archivos cifrados se llamaba «whoisyourgodnow.txt». Necesitamos una terminal real por lo que vamos a conseguir una, una buena chuleta aquí.
El contenido del directorio /fristigod/ no revela nada.
Recordamos que en el directorio /var/ teníamos un directorio llamado /fristigod/. En este directorio podemos encontrar algunos archivos interesantes, ¡incluso ejecutar un binario con permisos root!
Al examinar el archivo. bash_history aprendemos cómo ejecutar el anterior binario root.
Es momento de examinar el contenido del directorio /root/ utilizando el binario root.
Premio! Tenemos shell de root y la bandera 🙂
¡Felicitaciones al autor por crear este divertido CTF!
¿Has conseguido root y la bandera utilizando otras tácticas?
— Simon Roses Femerling / Twitter @simonroses