PWNLAB_INIT

Hoooooooooooola a tod@as!, volvemos con una nueva entrega de CTF!, en este caso owneamos la llamada PWNLAB INIT boot2root virtual machine!

Recursos y software utilizado:

Kali Linux 2.0

Nmap

Metasploit

VirtualBox

PWNLAB_INIT Virtual Machine

Guía de explotación:

En primera instancia y muy importante ponemos nuestra máquina vulnerable en red interna a través de Virtual Box para no llevarnos ninguna sorpresita. Posteriormente realizamos nuestro primer escaneo con nmap para saber que puertos andan abiertos, sus versiones y observamos que tiene abiertos los puertos 80 (web) y otro muy apreciado el 3306 corriendo MySQL. Tambien utilizamos NIKTO para ver vulnerabilidades del servidor y vemos que nos arroja un config.php muy interesante ya que si lo podemos abrir podríamos obtener las contraseñas MYSQL de la base de datos.

escanerored016.jpg

versionesprotocolo.jpg

Conectamos mediante el navegador al puerto 80 y vemos que la página principal tiene dos apartados uno de login y otro de upload para subir archivos de imagen. Si nos fijamos en la URL  ¨ http://192.168.69.3/?page= ¨ practicamente simplemente verla podemos ver que puede ser susceptible de ser vulnerada mediante LFI.

puerto80webinicio.jpg

Utilizando la herramienta de Github LFI-Master no encontramos nada al efecto, buscando en GOOGLE payloads para LFI probamos bastantes y encontramos el php://filter/convert.base64-encode/ que nos devuelve el archivo codificado en base64:

http://192.168.69.3/?page=php://filter/convert.base64-encode/resource=index, http://192.168.69.3/?page=php://filter/convert.base64-encode/resource=upload, http://192.168.69.3/?page=php://filter/convert.base64-encode/resource=config.

 

configphp.jpg

Procedemos a decodear el mensaje en Base64, se adjunta captura del index.php y config.php que son los que más nos interesan, pudiendo ver como obtenemos unas claves de root para acceder a MYSQL :D. Para saber las schemas, tablas y columnas utilizaremos nuestro queridísimo METASPLOIT y su módulo scanner/mysql/mysql_schemadump, vemos que existe la base de datos Users con la tabla users, adjuntamos imagen 😉

mysqlschemametasploit.jpg

Ahora que tenemos el nombre de la base de datos mediante el comando que se ve en la imagen inferior accederemos con el usuario root y la contraseña que obtuvimos del config.php.

DENTROMYSQL.jpg

Una vez dentro verificamos tablas y columnas, para proceder a utilizar la sentencia SELECT y obtener así los usuarios y sus passwords codificados en Base64, los decodificamos y los dejamos bien anotaditos ya que nos harán falta luego.

Entramos otra vez a la página web y logueamos con cualquier usuario, una forma rápida de conseguir acceso al servidor es creando un archivo de imagen(ya que el servidor solo permite subir imágenes) y establecer nuestra shell dentro. Aquí tuve serios problemas y estuve unos días estancado hasta que mediante el list of files signature (buscar más en wikipedia) creamos un archivo backdoorshell.gif y con msfvenom establecemos nuestro payload dentro para posteriormente conectar con el multi/handler de METASPLOIT.  Observar los comando de abajo para saber como crear el archivo.gif y establecer el payload.

listsignaturemsfvenom.jpg.jpg

Subimos el archivo y comprobamos mediante el código fuente si se ha subido correctamente, podemos observar mediante la imagen de abajo que se ha subido correctamente en la carpeta upload.

codigofuenterutashell.jpg

Con METASPLOIT abrimos el multi/handler (en el post del CTF Quaoar tienen como configurar y dejar a la espera el multi/handler) y ponemos nuestra dirección IP y el mismo puerto que pusimos en nuestro payload y lo dejamos a la espera de conexión.

Abrimos Burpsuite y interceptamos la petición http://192.168.69.3/?page=php://filter/convert.base64-encode/resource=index, mandamos la petición al decoder de Burpsuite y lo decodificamos viendo que la cookie esta concatenada al parámetro lang por lo tanto mandaremos esta petición al repeater y probaremos en el apartado cookie a llamar nuestra shell de esta manera: Cookie:lang=../upload/156fd4abde3d1d30078ab55a398b0979.gif.

decodeycookielang.jpg

Si vamos a la conexión del multi/handler de METASPLOIT vemos que la llamada ha sido positiva y que hemos inicializado la conexión mediante nuestro payload creando una shell con meterpreter.

meterpreterconseguido.jpg

Dado que es un sistema basado en linux vamos a hacer spawn de una shell TTY, en la página web de https://netsec.ws/?p=337 , teneís varias opciones de como hacerlo, nosotros al ser un sistema linux y sabiendo casi a ciencia cierta que tendrá python instalado, haremos spawn de la misma importando la shell con dicho lenguaje de programación.

shellttyreferenciaenlaceweb.jpg

Una vez con la shell TTY ya es posible interactuar mejor con el sistema con los comandos de siempre, utilizamos un usuario y vamos navegando por las distintas carpetas de cada uno, con el usuario kane nos damos cuenta que en su carpeta tiene un archivo msgmike (un mensaje para mike) y procedemos a ver que tipo de archivo es y los permisos que tiene.

kanealfinalarchivomsgmike.jpg

permisosarchivoSUID.jpg

Comprobamos que es un archivo SUID por las ‘s’ que nos informa con el comando ls –al, lo ejecutamos y vemos ejecuta el comando cat a una ruta home de la carpeta mike. Para   proceder a la escalada de privilegios en linux, utilicé la información de esta página web, http://www.dankalia.com/tutor/01005/0100501004.htm , creando un binario propio llamado cat grabando una shell en el interior, le otorgamos permisos de ejecución +x y exportamos el PATH para tener ruta absoluta y  aprovechar la vulnerabilidad extraída de la página web anteriormente reseñada.

creamosbinariocatexportamospath.jpg

Una vez realizados los pasos anteriores ejecutamos el archivo msgmike y este archivo procede a ejecutar el binario cat que nosotros hemos creado pudiendo asi loguear una shell ya manejada con el usuario mike. Con este usuario iremos a la carpeta suya y veremos que hay otro archivo con los mismos permisos de ejecucion que el msgmike, este archivo es msg2root.

logadosconmike.jpg

carpetamikevemosotroSUID.jpg

permisosdelarchivomsg2root.jpg

Para ver dónde nos dirige este archivo utilizaremos el comando strings de linux observamos que  el mensaje de root ejecuta el bin/echo %s osea graba un string en el archivo messages.txt, hacemos varias pruebas y podemos observar que si escribimos una string seguido de ; para cerrar y luego cualquier comando, el archivo msg2root ejecuta dicho comando. Aprovecharemos esto para cargar una shell y si todo va bien se creará con el usuario root.

pruebasconmsg2rootwhoamipwd.jpgmsg2rootseñalaroot.jpg

Como vemos en la imagen anterior vemos que ya estamos logados con el usuario root, nos dirigimos a su carpeta en /home y utilizando el comando cat en flag.txt..

cdrootflag.txt.jpg

VOILAAAAAA..!, vemos que hemos llegado al final de nuestro CTF.

Este CTF ha sido un poco más complicado que el anterior tuve que buscar bastante info de como vulnerar con php://filter el LFI, como escalar privilegios en linux, de archivos SUID y SETUID, todos estos recursos los adjuntamos a continuación para que os sea de más fácil acceso:

LINKS:

ListOfFileSignatures

BITS SUID SGID

TTY SHELL

Linux Priv Esc

Espero que os haya gustado nos vemos en el próximo CTF!, MERRY CHRISTMAS AND HAPPY HACKING!

 

Anuncios

Deja un comentario