En este writeup vamos a ver cómo resolver la máquina Delivery de la plataforma de Hack the Box.
Conexión
Para empezar a resolver esta máquina tenemos que conectar nuestra máquina de ataque a la VPN de Hack The Box:
$ openvpn gorkamu-htb.ovpn
Enumeración
Si hacemos un ping a la IP vemos que tiene un TTL de 63 por lo que se trata de una máquina Linux.
Vamos a enumerar los puertos haciendo uso del comando nmap:
$ nmap -n -p- -sC -sV -Pn -v 10.10.10.222
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
| 2048 9c:40:fa:85:9b:01:ac:ac:0e:bc:0c:19:51:8a:ee:27 (RSA)
| 256 5a:0c:c0:3b:9b:76:55:2e:6e:c4:f4:b9:5d:76:17:09 (ECDSA)
|_ 256 b7:9d:f7:48:9d:a2:f2:76:30:fd:42:d3:35:3a:80:8c (ED25519)
80/tcp open http nginx 1.14.2
| http-methods:
|_ Supported Methods: GET HEAD
|_http-server-header: nginx/1.14.2
|_http-title: Welcome
8065/tcp open unknown
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Vemos que tiene el puerto 22, 80 y 8065 abiertos. Los dos primeros puertos son muy comunes, de hecho forman parte de los well-known ports y se trata de SSH y del protocolo HTTP. Lo raro aquí es el puerto 8065.
Si entramos al puerto 8065 desde el navegador vemos un login.
Navegando por la web del puerto 80 encontramos la url helpdesk.delivery.htb así que vamos a añadirla al fichero /etc/hosts para ver qué es lo que nos resuelve.
10.10.10.222 delivery.htb
10.10.10.222 helpdesk.delivery.htb
Nos dirigimos a la web de helpdesk y vamos a crear un ticket nuevo con cualquier asunto. Cuando enviemos el ticket llegaremos a esta página donde se nos da un correo temporal y un número de ticket:
Con este email vamos a ir a la url de Mattermost y nos registramos: http://10.10.10.222:8065/signup_email
Nos van a enviar un correo de confirmación. De vuelta en helpdesk abrimos para revisar nuestro ticket y ya tendremos ese correo de confirmación:
Una vez nos logueemos en Mattermost veremos una aplicación de mensajería. En el canal interno vemos la siguiente conversación:
Ahí nos están dando las siguientes credenciales para acceder por ssh al servidor:
- U: maildeliverer
- P: Youve_G0t_Mail!
Capturar User Flag
Con estas credenciales podemos probarlas y efectivamente comprobar que entramos sin problemas mediante SSH por el puerto 22:
Y directamente en la $HOME de este usuario tenemos el fichero user.txt con la USER Flag.
Capturar Root Flag
Si nos vamos al directorio /opt/mattermost/config veremos el fichero config.json y dentro de él la siguiente línea:
"DataSource": "mmuser:Crack_The_MM_Admin_PW@tcp(127.0.0.1:3306)/mattermost?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s",
Aquí si nos fijamos bien en este DSN nos están dando las credenciales para conectarnos a MySQL.
- U: mmuser
- P: Crack_The_MM_Admin_PW
Una vez dentro de mysql en la base de datos mattermost podemos ver la tabla Users.
Podemos conseguir la contraseña de root desde esta tabla:
MariaDB [mattermost]> select Password from Users where Username = 'root';
+--------------------------------------------------------------+
| Password |
+--------------------------------------------------------------+
| $2a$10$VM6EeymRxJ29r8Wjkr8Dtev0O.1STWb4.4ScG.anuu7v0EFJwgjjO |
+--------------------------------------------------------------+
1 row in set (0.000 sec)
En el chat de Mattermost decían que la contraseña de root se podía romper con reglas de hashcat.
Vamos a descargarnos el siguiente repositorio:
$ git clone https://github.com/stealthsploit/Optimised-hashcat-Rule.git
Nos metemos en el directorio recién clonado y vamos a generarnos el diccionario:
$ hashcat -r OneRuleToRuleThemAll.rule --stdout > wordlist.txt
Con el diccionario ya creado vamos a crackear la contraseña con John the Ripper:
$ john --wordlist=wordlists.txt hash
Al rato conseguimos la contraseña para root:
PleaseSubscribe!21
Nos logeamos por ssh y vemos el fichero /root/root.txt para capturar la Root Flag.