This page looks best with JavaScript enabled

Walkthrough - CTF PwnLAB Boot2Root por @met30r

 ·   ·   5 min read

 Hey hoy martes y como se esta haciendo costumbre en el blog andamos iniciando la semana y esta oportunidad vengo a compartir una solucion realizada por @met3or el cual en su blog  realizo el reto de PwnLAB Boot2Root que fue realizado por @Cla0r desde el grupo de Capsulas SI les dejo con la solución y felicitar por el resultado y el paso a paso realizado. 

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 (Retos SniferL4bs), 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.. :)

Ahora sabia cual era el principal objetivo, leer el archivo “/config.php” el cu√°l mostraria las credenciales de la base de datos. Despu√©s de un tiempo navegando por la p√°gina me d√≠ cuenta que cuando intentaba lanzar alg√ļn tipo de string v√≠a url a la variable “?page=” me mostraba la pagina en blanco, as√≠ que deduje que algo me estaba escondiendo Snifer xD, as√≠ que solo tendr√≠amos que buscar alguna manera el tipo de filtro que tenia activo, buscando por google encontr√© este Wrapper

example1.php?page=php://filter/convert.base64-encode/resource=

 https://highon.coffee/blog/lfi-cheat-sheet/ 

Lo que hacia era encodear el output del source del archivo PHP, lo √ļnico que tendr√≠amos que hacer luego seria decodearlo.

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

<?php ‚Äúinclude/‚ÄĚ.include($\_GET\['filename'\].‚Äú.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

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‚ÄĚ)‚Äô

 http://pentestmonkey.net/blog/post-exploitation-without-a-tty

 

 

  

En resumen, lo que hice es hacer uso del script en python para acceder a una terminal, acced√≠ al usuario kane con la contrase√Īa de la base de datos MySQL,b√°sicamente porque en los dem√°s usuarios no habia nada interesante, luego liste todos los archivos con sus respectivos permisos en este caso contaba con el bit SUID activo as√≠ que cualquiera que lo ejecute iba a tener los mismos permisos de quien lo cre√≥, al intentar ejecutarlo me devolvi√≥ una ruta la cual es ejecutada por “cat”

 

En ese momento supe que cambiando el orden de ejecución del PATH podria crear mi propio cat y así ejecutar una shell

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

/bin/echo %s » /root/messages.txt

Lo que pasar√≠a es que podriamos cortar el string con un “;” y detr√°s poder poner una orden para que se pueda ejecutar

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.

Blog del autor de la solución. Meteor Labs

Regards,
Snifer

Share on
Support the author with

Avatar
WRITTEN BY