
Keeper
La máquina Keeper, fue una máquina de temporada de HackTheBox de dificultad fácil declarada por la plataforma.
Fase de reconocimiento
Escaneo de la máquina
Como siempre, realizamos una traza TCP por ping para detectar si la máquina está activa y ver ante que sistema operativo nos enfrentamos mediante el TTL, el cual al ser de 63 la identificamos como una máquina Linux.
Confirmando la conexión con la máquina, procedemos a realizar un escaneo con nmap, primero comenzamos con por el protocolo TCP y luego, en el caso de no encontrar nada, usamos UDP.
Comenzamos escanenando todo el rango de puertos y le agregamos los siguientes parámetros para un escáneo rápido:
-p- # Para barcar los 65535 puertos
--open # Solo obtener los puertos con estado open
-sS # Realizar escaneo TCP SYN SCAN
--min-rate 5000 # Envío mínimo de 5000 paquetes por segundos
-v # Verbose
-n # Evitar resolución DNS
-Pn # Evitar host discovery
-oG # Exporte en formato greppeable
# para luego usar extractPorts
[!] Existen casos en los que usar 5000 paquetes es demasiado, en esos casos reducir a la mitad.
[!] ExtractPorts es un script creado por s4vitar para la rápida extracción de puertos de una captura de nmap link
Con esto ya sabemos que tiene un servicio SSH corriendo (puerto 22) y un servidor web (puerto 80), de todas formas siempre es recomendable obtener más información de estos servicios, para eso usamos los scripts básicos de reconocimiento y versionado de nmap.
-sC # Reconocimiento
-sV # Versionado
-sCV # Ambos
Adicionalmente, mientras se realiza el escaneo de nmap, podemos adelantar trabajo usando whatweb
para obtener más información del sitio web
El cual nos indica, al igual que nmap, que estamos ante un sistema ubuntu, si vemos la página desde el navegador, podemos ver que tiene virtualhosting, el cual debemos agregarlo en el archivo /etc/hosts
del sistema para poder visualizarlo
Luego de agregar el host, podemos ver en la web un panel de login de request tracker
El cual si hacemos una búsqueda rápida por credenciales por defecto, encontramos que el usuario es root
y la contraseña es password
, las cuales al probarlas en el panel, nos deja acceder sin problemas.
Accediento al usuario
Como estamos loggeados como root, lo primero que vamos a revisar son los paneles superiores, en los cuales nos llaman la atención 2:
El primero es dentro de search
, vemos un apartado de tickets, lo cual nos da a entender que pueden haber registros de errores o demás que hayan tenido los usuarios y podemos ver uno en los recien vistos
que nos indica por donde puede ir el acceso o escalada, esto lo tendremos en cuenta para más adelante
El segundo apartado es el de los usuarios, en el cual solo vemos dos, lnorgaard
y root
.
Viendo el detalle de cada uno, podemos ver un leak en el usuario lnorgaard, el cual nos deja ver su contraseña como comentario
Si probamos esta contraseña como el usuario lnorgaard mediante ssh, vemos que podemos acceder al usuario y por ende a la flag del usuario.
Fase de explotación
Además de la flag en el home del usuario, podemos ver un archivo comprimido, el cual si listamos, podemos ver un dump de KeePass, el cual, si hacemos memoria, en el ticket que habiamos visto, nos decía algo de un keepass, por lo cual entendemos que por aquí se debe seguir para escalar privilegios.
Descargamos el archivo a nuestro local para poder trabajar más cómodos
Si exportamos el contenido y usamos la vulnerabilidad CVE-2023-32784
en el siguiente repo para poder obtener la contraseña del dump vemos lo siguiente:
[!] Existen casos en que no logres ver los carácteres, recomiendo usar kali o parrot o instalar distintas fuentes
Lo cual no hace mucho sentido, pero si recordamos el usuario del perfil, podiamos ver una frase, que al usar google translate para detectar el idioma, vemos que es Danés, por lo cual la contraseña también debe estar en ese idioma.
Si buscamos en google por el texto ●Mdgr●d med fl●de
podemos ver que hace referencia a Rødgrød med fløde
, una especie de receta danesa, si probamos usarla para abrir el keepas, vemos que funciona usando todo el texto en minúscula
Obteniendo root
Ya dentro del keepass, podemos ver una contraseña y una llave ssh para root, si probamos la contraseña vemos que no es la que buscamos, pero trataremos de probar con la llave
Si guardamos la llave, vemos que es una llave del software putty
, para transformarla a llave de ssh debemos usar puttygen
, el cual viene dentro del paquete putty-tools
, de la siguiente manera
puttygen putty-key -O private-openssh -o keyfile
Luego con la llave ya transformada a ssh, accedemos y ya tenemos disponible la flag como root