Sei sulla pagina 1di 8

Write-Up

Albania 2016 CTF



Información sobre la máquina:

“This was used in HackDay Albania’s 2016 CTF.

The leve is beginner to intermediate.

It uses DHCP”
Nota: 10.0.2.6 (Albania) – 10.0.2.15 (Kali)

Así de buenas a primeras no tenemos ni idea si hay una o varias flags ni de que tipo serán los
retos que debemos superar.

En primer lugar hacemos un escaneo de puertos, versiones de servicios y demás información
que nos pueda proporcionar nuestra querida herramienta nmap.

Vemos que están abiertos los puertos 22 y el 8008, en el primero hay un servicio de SSH y en
el segundo un servicio web. Nos centraremos en este último ya que los directorios del archivo
robots.txt son un tanto extraños.




Cuando accedemos a la página de la máquina en el puerto 8008 nos encontramos con una
imagen un poco troll de MR.ROBOT



Como nos ha indicado nmap, hay varios directorios en el archivo robots.txt, vamos a él.

Tiene toda la pinta que tendremos que buscar cual es
el directorio correcto, así que nos haremos un pequeño
script en bash para automatizar esto :D




Tendréis que averiguar que directorio es el correcto


Además, también lanzamos dirb con el fin de encontrar
otros directorios interesantes, pero solamente nos
reporta un directorio de archivos js y de imágenes,
nada interesante.






Una vez localizado el directorio correcto nos encontramos con el login de “Very Secure Bank”.
Estos cuadros de texto nos están pidiendo a gritos que introduzcamos una comilla para
comprobar si son vulnerables a SQL Injection.



Al introducir la comilla en el campo de texto de username salta un warning de una excepción
de MySQL y que dicho fallo esta en el archivo config.php



He de decir, que tras probar varios payloads típicos y no encontrar la solución decidí lanzar
sqlmap a ver si podía sacar algún dato de interés o tal vez, quien sabe, la base de datos.




Pero finalmente mi gozo en un pozo, el parámetro username es vulnerable sí, pero no puede
explotarlo. Así que llegados a este punto, decidí hacer fuzzing con BurpSuite a ver si conseguía
sacar algo en claro y había alguna palabras como ‘AND’ y ‘OR’ que se filtraban.

Probe con varios payloads basados en comentarios de SQL
(/* */, ---, #), pero nada no había forma. Ante lo cual, supuse
que la línea de PHP donde esta el SQLi fuera algo así.

“SELECT * FROM users WHERE username=’$username’ AND
passwords=’$password’”;

Despues de dar una par de vueltas e intentos, el payload que
me ha servido es ‘%20# , así quedaría la línea de la siguiente
forma.

“SELECT * FROM users WHERE username=’’ #‘ AND passwords=’$password’”;

¡Eureka! Estamos dentro del panel del sitio web.











Una vez dentro, vemos que hay un upload de archivos, seguramente sea para subir imágenes,
así que hacemos un par de pruebas y efectivamente admite imágenes en diferentes formatos
como por ejemplo: gif, jpeg o jpg.

Después de varios intentos para hacerle el bypass al uploader, supuse que tal vez solamente
comprueba la cabecera del archivo además de la extensión. Así que embeberemos una shell
en php dentro de un archivo jpg :-)

La cabecera de un archivo JPG/JPEG es FFD8FF1, usaremos una shell en nc2 y con un poco de
suerte tendremos acceso al sistema.



Clickamos en ver imagen y… ¡Wuala! Tenemos la shell inversa en el puerto 2337.










1
https://en.wikipedia.org/wiki/JPEG_File_Interchange_Format
2
http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet


Bueno, una vez dentro vamos a investigar un poco a ver que hay en /etc/passwd y en
/etc/group

Este es el archivo /etc/passwd, en el cual nos llama la atención el usuario ‘taviso’, vamos al
archivo de group a ver que hay.






Aquí los grupos a los que pertenece el usuario taviso, al formar parte del grupo sudo,
significa que vamos por buen camino jeje, ya quedamos para ser root.

Por casualidades de la vida, me dio por hacer un ls al archivo /etc/passwd y vi que tenia la
flag w de otros activada.



Bueno, eso significa que podemos editar el archivo passwd y modificar la contraseña del
usuario taviso.

En primer lugar, generamos una nueva contraseña con un pequeño script en Python y la
librería crypt.



Después con sed buscamos el usuario y cambiamos el contenido, lo guardamos en un
archivo temporal y lo reemplazamos por el original.




Ahora comprobaremos si funciona la passwd y podemos hacer su

















Ya estamos al final del reto, solo nos queda hacer sudo para acceder como root y leer la flag
del directorio /root.

























Write-up by @danilabs

Potrebbero piacerti anche