Buenas lectores, hace unos días estaba aburrido acababa de leerme el último apartado de un PDF y no tenia nada que hacer, de pronto me dieron ganas de completar algún reto, así que me dirigí a la página de Snifer (http://www.sniferl4bs.com/p/blog-page_25.html), donde sabía que iba a encontrar un divertido e interactivo reto, después de unos minutos navegando por la página me encontré con el CTF PwnLAB Boot2Root en el cuál se requeria la descarga de una maquina virtual para posteriormente conseguir privilegios root y así finalmente conseguir el ansiado "flag.txt". Sin más preámbulos comenzaré a describir como conseguí llegar a dicho archivo.
Primero de todo reconocimiento, tenia que saber a que me estaba enfrentando, así que escanee toda mi red en busca de hosts vivos.
Mi primer pensamiento fue que en el CTF tendriamos que jugar con la base de datos MySQL, por otra parte se me ocurrió que si el servicio rpcbind tenia el servicio NFS activo podriamos explotar dicha configuración, seguido hice un rpcinfo y no mostró ningún efecto de lo que buscaba. Por último accedí a la página por browser, seguidamente le pasé un Nikto, y me devolvió algo interesante.. :)
example1.php?page=php://filter/convert.base64-encode/resource=
Bingo!! Encontramos las credenciales de la bases de datos ahora podriamos proceder a conectarnos mediante la terminal.
Ahora a probar a entrar en el login de la página, al acceder al login solo nos quedaba un objetivo para poder llegar a tener una sesión en la máquina subir una shell mediante el "Upload" que teniamos con acceso restringido solo a los usuarios logeados, lo primero que hice fue insertar código de una shell en una imagen mediante la herramienta msfvenom
De esta forma logré bypassear el uploader y subir la shell, aquí estaba el primer dilema solamente accediendo a la url no podiamos obtener una sesión meterpreter ya que el directorio no ejecutaba codigo PHP, después de buscar entre directorios con el filtro en php que usamos antes para sacar el config.php me di cuenta de una función en index.php
Comparando el código extraido de index.php con un LFI, vemos que sí la cookie esta puesta, da paso a un source code vulnerable a otro LFI medainte la variable lang, eso quiere decir que si capturamos cabeceras y seteamos detrás de la cookie la variable ·"lang=" seguido del directorio que queremos ver, podria llegar a ejecutar código PHP y entonces podriamos llegar a obtener nuestra ansiada shell con el host<?php “include/”.include($_GET['filename'].“.php”); ?>
Ya tenemos sesión meterpreter ahora toca llegar escalar privilegios para tener root y así poder obtener la flag, lo primero sera hacer su a las cuentas para conocer a cuál podemos entrar y a cuál no utilizaremos el siguiente script en python para obtener una TTY porque con una conexión reversa de meterpreter no nos deja hacer uso de la funcionalidad (su).
python -c ‘import pty; pty.spawn(“/bin/sh”)’
Ahora me aparecia un nuevo archivo pero con el bit SUID también activado, así que le hice un "strings" para ver que estaba haciendo
Lo que pasaría es que podriamos cortar el string con un ";" y detrás poder poner una orden para que se pueda ejecutar/bin/echo %s >> /root/messages.txt
Y ahora que tenemos privilegios le podemos hacer un cat a la flag.txt para estar seguros que Snifer no nos ha troleado esta vez como cuando troleo a medio twitter con los PDF's de 0xWORD xD
El primer CTF tuyo y ya me hicistes tener migraña nada más empezar con la página web, por lo demás fue muy divertido y espero unos cuantos más para la colección.
Greetz Anxrchy, SuicidePanthers, d3struc70r y Zae