CTF Wakanda 1


Hoy traigo una máquina vulnerable con la que pasar un buen rato y como siempre aprender algo sobre seguridad. En este caso la máquina se llama wakanda 1 y está disponible en el sitio de vulnhub.com

El reto consta en descubrir 3 flags ocultas en el sistema, flag1.txt, flag2.txt y root.txt que es la última y que nos permitirá completar el reto.

Fase de enumeración

En esta fase vamos a tratar de recopilar del máximo de información para disponer del máximo de información para afrontar la fase de intrusión.

nmap.

Ejecutamos nmap sobre la ip de la máquina virtual para descubrir el máximo de puertos abiertos y servicios disponibles.



Dirbuster.

Ejecutamos dirbuster para tratar de descubrir archivos, rutas etc...



Navegación Web.

Revisamos las diferentes páginas disponibles, código fuente etc..., vemos que el autor es mamadou.




Código fuente.




Interesante, descubrimos un parámetro "lang" probemos a ver si es vulnerable a Local File Include (LFI).




Utilizamos php://filter/convert.base64-encode y obtenemos como resultado la página web codificada en base64. Decodifiquemos ahora lo obtenido a ver que pasa.




Obtenemos una porción de código fuente php donde descubrimos un password. Tenemos un usuario "mamadou" y tenemos un password "Niamey4Ever227!!!" y por otro lado tenemos el puerto 3333 descubierto con nmap con el servicio ssh corriendo bajo este puerto. Provemos acceder a ver que pasa.

Obteniendo flag1.




Bingo, accedemos a algo que puede ser una shell o algo parecido.




Se trata de una consola de python versión 2.7. Ahora tratemos de obtener una shell desde python.




Con pty.spawn obtenemos una shell, vemos que somos el usuario "mamadou", lanzamos un ls para ver que hay por aquí, vemos el archivo flag1.txt. Ejecutamos un cat y flag1 conseguida!!!. Seguimos investigando carpetas, etc... podemos llegar a ver la flag2 pero lamentablemente no podemos acceer a ella.

Obteniendo flag2.


Ahora también podemos navegar por el sistema y tratar de descubrir nuevas cosas interesantes.




Ejecutamos find / -user devops que hemos descubierto simplemente navegando por la carpeta home del sistema.




Descubrimos algo interesante, el archivo antivirus.py al cual tenemos acceso. con nano lo editamos para ver que tiene. Vemos que abre un archivo y que graba el texto 'test'. Vamos a tratar de incluir una reverse shell de python ya que se trata de un archivo python. No sabemos aun si podremos ejecutar el archivo pero parece una buena opción.

En http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet disponemos de una reverse shell para python así que la tomamos para tratar de conseguir nuestro objetivo. Debemos adaptarlo para poner la ip de nuestra máquina atacante.




Tratamos de dar permisos de ejecución para tratar de ejecutar el script.




Lamentablemente no tenemos permisos para realizar este cambio. Ejecutamos netcat en la terminal de nuestra máquina atacante y nos ponemos a la escucha en el puerto 1234 que es el que hemos puesto en el script de python para la obtención de la shell reverse. Reiniciamos la máquina "wakanda 1" por si el script se ejecutará cuando se inicia la máquina.




Bingo, el script de python se ejecuta cuando se inicia la máquina vulnerable y conseguimos ser el usuario "devops". Ahora estamos en disposición de obtener la flag2.txt que ya habíamos descubierto y a la que el usuario "devops" tenía acceso.




Ahí la tenemos, conseguida la flag2.txt.

Obteniendo flag3 root.


Ahora tratemos de conseguir nuestra última flag, root.txt para llegar al final del reto. Ejecutamos sudo -l  y descubrimos que el usuario "devops" tiene permisos de ejecución de proceso de instalación de python "pip".




Podemos tratar de escalar privilegios ejecutando el script de python "fakepip".




Hay que modificar el host que debe apuntar a nuestra máquina atacante y un puerto en este caso el 4444 y pasar de pasar el archivo setup.py de "fakepip" a la máquina vulnerable, para ello, en la máquina atacante, levantamos el servicio de apache. "service apache2 start", copiamos el archivo setup.py a la carpeta /var/wwww de la máquina atacante y con wget desde la máquina vulnerable nos traemos el archivo setup.py en una carpeta dentro de /tmp/fakepip por ejemplo.




En la máquina atacante ponemos netcat a la escucha en el puerto 4444 que hemos establecido en el script de "fakepip". Podemos encontrarlo en github en  https://github.com/0x00-0x00/FakePip. Esta muy claro el procedimiento y los pasos a seguir.





En la máquina vulnerable procedemos a ejecutar el script como se indica en las instrucciones del script. "sudo pip install . --upgrade --force-reinstall"




Una vez ejecutado el script "fakepip" el resultado será que hemos conseguido escalar privilegios y ahora ya somos root. El final se acerca ahora nada nos puede parar.




Una vez localizada nuestra última flag solo nos queda realizar un cat y ver cual es la sorpresa.



Bingo!!! y Game Over !!!

Thanks to



Etiquetas