Search

Escribe para buscar.

en
HackTheBox: Keeper

HackTheBox: Keeper

Junior Restituyo
0xR3iko

Esta vez jugamos la máquina Keeper, que nos deja ver un poco de KeePass.

KeePass es un gestor de contraseñas libre y de código abierto. Las contraseñas se guardan en una base de datos cifrada, que se puede desbloquear con una única clave maestra.

Enumeración

Empezamos escaneando los puertos disponibles con Nmap, y encontramos los puertos 22 y 80 abiertos (SSH y HTTP).

# Nmap 7.94 scan initiated as: nmap -p22,80 -sCV 10.10.11.227
Nmap scan report for 10.10.11.227
Host is up (0.064s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Nada especial apareció en el escaneo. Luego fuimos al sitio web, y el portal muestra un mensaje que nos dice que visitemos tickets.keeper.htb/rt/.

Mensaje del portal apuntando a tickets.keeper.htb/rt/

Esto nos llevó a una página de login donde pudimos identificar el servicio y su versión.

Página de login de Request Tracker

Buscando vulnerabilidades o credenciales por defecto del servicio en ejecución (BestPractical 4.4.4), encontramos las credenciales por defecto root:password, que nos dieron acceso al panel de administración.

Acceso inicial

Buscando un poco más en este sitio, llegamos a la pantalla de Users yendo a Admin > Users.

Pantalla Admin > Users en Request Tracker

En el panel de Users identificamos dos usuarios. Uno era la cuenta root por defecto que ya usamos; el otro era más interesante por el dominio después del @, lo que nos dice que este usuario podría pertenecer al servidor, pero necesitamos una contraseña.

Dos usuarios listados, uno atado al dominio del servidor

Hicimos clic en el usuario para más hallazgos, y la contraseña fue fácil de obtener desde los comentarios.

Contraseña revelada en los comentarios del usuario

Ahora que tenemos usuario y contraseña, intentamos conectarnos por SSH en el puerto 22. Funcionó, y obtuvimos nuestra primera flag.

Acceso por SSH y la flag de usuario

Escalada de privilegios

Para obtener acceso root: teníamos acceso limitado con el usuario actual, que no está en el archivo sudoers. Pero hay un archivo zip en el directorio del usuario, RT30000.zip, que puede tener algo interesante.

Después de descomprimirlo, obtenemos dos archivos nuevos: KeePassDumpFull.dmp y passcodes.kdbx. Los transferimos a nuestra máquina de ataque para investigar más a fondo.

Extrayendo KeePassDumpFull.dmp y passcodes.kdbx

Buscando, encontramos un PoC: KeePass 2.X Master Password Dumper (CVE-2023-32784).

KeePass Master Password Dumper es una herramienta de prueba de concepto para volcar la contraseña maestra desde la memoria de KeePass. Salvo el primer carácter de la contraseña, en su mayoría logra recuperarla en texto plano.

https://github.com/vdohney/keepass-password-dumper

Usando esta herramienta sobre el archivo .dmp, obtuvimos parte de la contraseña: dgrød med fløde.

Recuperando parte de la contraseña maestra desde el volcado

Solo por curiosidad, la pegamos en Google y obtuvimos la frase completa y su significado, lo que le dio sentido a nuestros hallazgos.

Google revelando la frase completa

Rødgrød med fløde, un pudín de frutos rojos con crema, es el postre insignia de Dinamarca.

Tenemos una contraseña: rødgrød med fløde. Intentamos abrir el archivo con keepass2, pero dio un error (probablemente porque la contraseña tiene caracteres especiales), así que usamos el servicio web https://app.keeweb.info/ para abrir el archivo KeePass y ver su contenido.

Abriendo la base de datos KeePass con KeeWeb

El archivo contenía un usuario y contraseña de root, además de una clave de usuario PuTTY que puede servir para obtener acceso SSH con una clave privada.

Como el usuario y la contraseña no funcionaron, tomamos la clave PuTTY y la convertimos en una clave OpenSSH. Copiamos todo el texto de la clave PuTTY en un archivo nuevo passcodes.ppk y usamos puttygen para convertirla.

Convirtiendo la clave PuTTY a una clave OpenSSH con puttygen

Finalmente, usamos el id_rsa generado para iniciar sesión por SSH. Obtuvimos acceso root al servidor, y ahí está nuestra última flag.

Acceso root y la flag final

Gracias por leer.