Netmon
Un FTP anónimo con acceso a todo el disco regala la flag de usuario y los backups de configuración de PRTG, donde aparece la contraseña con un patrón por años; cambiando 2018 por 2019 se entra al panel, y PRTG 18.1.37 cae por el RCE autenticado CVE-2018-9276 ejecutándose ya como SYSTEM.
Netmon
| Máquina | SO | Dificultad | IP |
|---|---|---|---|
| Netmon | Windows | Easy | 10.129.230.176 |
A tener en cuenta...
Resumen
Netmon es una máquina de dificultad fácil… y de las que dejan mal sabor de boca. No hay técnica que admirar: hay un FTP anónimo que te deja leer todo el disco, y un software de monitorización que guarda la contraseña de administrador en un fichero de backup accesible desde ese mismo FTP.
La flag de usuario se recoge sin explotar nada: basta conectarse por FTP como anonymous y descargarla. Para root, se leen los backups de configuración de PRTG Network Monitor, donde aparece una contraseña con un patrón por años tan descuidado que basta cambiar 2018 por 2019 para entrar al panel.
Una vez dentro, la versión de PRTG arrastra un RCE autenticado (CVE-2018-9276) y, como el servicio corre como SYSTEM, no hay ni que escalar: el exploit entrega directamente el control total. Un caso de manual de malas configuraciones más que de hacking.
Vulnerabilidad
Tres descuidos encadenados que van de lo malo a lo peor.
01 · FTP anónimo con acceso a todo el sistema de ficheros
El servicio FTP del puerto 21 permite entrar como anonymous y, lo que es grave, su directorio raíz es C:\. Cualquiera puede recorrer el disco entero: leer la flag de usuario en el escritorio público y, sobre todo, los backups de configuración de PRTG en C:\ProgramData\Paessler\.
02 · Credenciales en los backups de PRTG + patrón predecible
Los ficheros de configuración de PRTG Network Monitor guardan la contraseña de la base de datos en claro — PrTg@dmin2018 — junto al usuario prtgadmin. La contraseña del panel web está cifrada, pero el patrón canta: la del año siguiente es PrTg@dmin2019. Reutilizar una contraseña con solo el año cambiado tira por tierra todo el cifrado.
03 · RCE autenticado en PRTG 18.1.37 — CVE-2018-9276
La versión 18.1.37.13946 de PRTG es vulnerable a inyección de comandos en el sistema de notificaciones: un administrador autenticado puede crear una notificación de tipo «Execute Program» cuyo parámetro no se sanea, logrando ejecución de comandos. Como el servicio corre como NT AUTHORITY\SYSTEM, el RCE es directamente una shell con el máximo privilegio.
Reconocimiento
Caja negra: barrido completo de puertos, pidiendo de paso la detección de sistema operativo
| Puerto | Servicio |
| 21 | ftp |
| 80 | http |
| 135 | msrpc |
| 139 | netbios-ssn |
| 445 | microsoft-ds |
| 5985 | winrm |
| 47001 | winrm |
Un 21 de FTP, un 80 de web, el habitual SMB/RPC de Windows y WinRM en 5985/47001. El sistema es un Windows Server 2016.

Enumeración
Afino versión sobre los puertos abiertos


Dos cosas enormes en la misma salida. Una, el ftp-anon: el FTP acepta login anónimo. Dos, el puerto 80 es un PRTG Network Monitor 18.1.37.13946. Lo confirmo con whatweb

Wappalyzer añade al fabricante — Paessler — y un fuzzing de rutas descubre una /api/ protegida y el flujo de login



Un banner grabbing con nmap remacha las versiones de FTP y PRTG

y la propia web, en el pie de página, me regala la versión exacta de PRTG — un dato que vale oro para buscar exploits

Explotación
FTP anónimo — la flag de usuario sin esfuerzo
Lo primero, aprovechar el FTP anónimo. Me conecto como anonymous (cualquier contraseña vale) y descubro que el raíz es C:\ entero

Navego hasta el escritorio público del usuario y ahí está la primera bandera, que descargo sin más


El panel de PRTG — tanteando la entrada
Para root necesito el panel web. Pruebo las credenciales por defecto de PRTG, prtgadmin:prtgadmin

pero no cuelan

El botón de «Forgot password?» me da una enumeración de usuarios de regalo: con un usuario inexistente como peter responde «Sorry, this account is unknown»…

…pero con prtgadmin dice que ha enviado un correo, confirmando que esa cuenta sí existe

Con el usuario confirmado, intento una fuerza bruta con hydra contra el endpoint de login, pero va lentísima y no llega a nada

Los backups de configuración — la contraseña servida
El camino de verdad vuelve al FTP. PRTG guarda sus backups de configuración en una ruta fija: C:\ProgramData\Paessler\PRTG Network Monitor. Navego hasta ahí

y me encuentro dos backups antiguos: PRTG Configuration.old y PRTG Configuration.old.bak. Los descargo

Son XML enormes, así que filtro por lo que me interesa. Un grep localiza todas las etiquetas <password>

Abriendo el .old.bak con less y buscando /password, aparece el premio: la contraseña de la base de datos en claro, con el usuario comentado al lado

Ojo: esa es la contraseña de la base de datos interna, no la del panel web. La del panel aparece más adelante, pero cifrada con el formato propio de PRTG (parece base32 pero no decodifica limpio)


Existe un descifrador específico para estos hashes de PRTG

pero la solución es mucho más tonta. La contraseña de la BDD es PrTg@dmin2018, y el backup es de 2018; la máquina está en 2019, y el admin simplemente cambió el año. Así que pruebo prtgadmin:PrTg@dmin2019 en el panel… y entra. Reutilizar la contraseña cambiando solo el año es, sencillamente, criminal.
RCE autenticado — CVE-2018-9276
Ya con sesión de administrador, la versión 18.1.37.13946 arrastra el CVE-2018-9276: inyección de comandos en el sistema de notificaciones. En lugar de pelearme con el PoC a mano, tiro del módulo de Metasploit, configuro las opciones (credenciales y objetivo) y lo lanzo

PRTG corre como NT AUTHORITY\SYSTEM, así que el exploit no me deja un usuario cualquiera: me deja directamente con el máximo privilegio, sin escalada de por medio. Abro una shell y leo la última bandera

Flags
La de usuario, descargada por FTP del escritorio público
Y la de root, tras el RCE como SYSTEM
Cómo se arregla
Netmon no se cae por un fallo de software, sino por una cadena de malas configuraciones. Por capas:
- Cerrar el FTP anónimo: y, desde luego, no servir C:\ como raíz. El acceso anónimo a todo el disco es el fallo que lo desencadena todo; con desactivarlo, ni se lee la flag ni se llega a los backups.
- Proteger los backups de configuración: los ficheros de PRTG con credenciales no deben ser accesibles desde un servicio público. Permisos restrictivos sobre C:\ProgramData\Paessler cortan la fuga.
- Contraseñas únicas y sin patrones: cambiar solo el año (2018 → 2019) es tan malo como no cambiarla. Credenciales largas, aleatorias y rotadas de verdad.
- Actualizar PRTG: la versión 18.1.37 es vulnerable a CVE-2018-9276. Parchear a una versión corregida elimina el RCE autenticado.
- Mínimo privilegio para el servicio: que PRTG corra como SYSTEM convierte cualquier RCE en compromiso total. Ejecutarlo con una cuenta de servicio limitada reduce el impacto.
Conclusiones
Muy mala máquina, el tema de sacar la contraseña por la cara, configuraciones malisimas y 0 divertida, no recomendable