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
| Máquina | SO | Dificultad | IP |
|---|---|---|---|
| Optimum | Windows | Easy | 10.10.10.8 |
A tener en cuenta...
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
| Puerto | Servicio | Versión |
| 80 | http | HttpFileServer 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
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
Paso 1 — leer el exploit. Antes de lanzarlo lo abro: deja claras tres cosas que hay que preparar
- Ajustar lhost a la IP de mi máquina y lport al puerto de escucha (por defecto 443).
- Levantar un servidor web en http://MI_IP:80 sirviendo nc.exe, que es lo que la víctima descargará.
- Ponerme en escucha con nc en el puerto elegido.
Paso 2 — montar la infraestructura. Sirvo el nc.exe y abro el listener
Paso 3 — disparar. Lanzo el exploit contra el HFS
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
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
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
Paso 4 — ejecutar. Lanzo el binario y la corrupción en win32k.sys hace el resto
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
Y la de root, ya como SYSTEM, en el de Administrator
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.