Keeper

Keeper es una máquina Linux de nivel de dificultad fácil que cuenta con un sistema de tickets de soporte que utiliza credenciales predeterminadas. Al enumerar el servicio, podemos ver las credenciales de texto sin formato que conducen al acceso SSH. Con el acceso "SSH", podemos obtener acceso a un archivo de volcado de la base de datos de KeePass, que podemos aprovechar para recuperar la contraseña maestra. Con acceso a la base de datos "Keepass", podemos acceder a las claves "SSH" raíz, que se utilizan para obtener un shell privilegiado en el host.


Reconnaissance

Realizaremos un reconocimiento con nmap para ver los puertos que están expuestos en la máquina Keeper. Este resultado lo almacenaremos en un archivo llamado allPorts.

A través de la herramienta de extractPorts, la utilizaremos para extraer los puertos del archivo que nos generó el primer escaneo a través de Nmap. Esta herramienta nos copiará en la clipboard los puertos encontrados.

Lanzaremos scripts de reconocimiento sobre los puertos encontrados y lo exportaremos en formato oN y oX para posteriormente trabajar con ellos. En el resultado, comprobamos que se encuentran abiertos el servicio SSH y una página web de Nginz.

Transformaremos el archivo generado targetedXML para transformar el XML en un archivo HTML para posteriormente montar un servidor web y visualizarlo.

Accederemos a http://localhost y verificaremos el resultado en un formato más cómodo para su análisis.

Initial Access

Using default credentials to Request Tracker access

Al acceder a http://10.10.11.227, se nos indica que para contactar con el soporte técnico, debemos dirigirnos a http://tickets.keeper.htb/rt/

Añadiremos en nuestro archivo /etc/hosts las entradas correspondientes.

Al acceder a http://tickets.keeper.htb/rt/ nos encontramos con el siguiente panel de inicio de sesión en el cual podemos comprobar arriba a la derecha que se trata de un software llamado Request Tracker. Probamos las típicas contraseñas por defecto sin éxito.

Al realizar una búsqueda por Internet, nos encontramos cuales son las credenciales que utiliza esta aplicación por defecto.

Probamos de ingresar con las credenciales root/password y verificamos que logramos acceder sin problemas al panel de administración.

Information Leakage

Al navegar por las diferentes opciones del sitio web, nos encontramos con una página en donde aparecen usuarios. Probaremos de acceder al usuario llamado lnorgaard.

Verificamos que en el usuario en la sección de comentarios nos aparecen unas credenciales por defecto, probaremos si aún siguen siendo válidas para este usuario.

Además, podemos comprobar que en el nombre real en la otra 'o' está puesta como otro carácter distinto. Por otro lado, en la sección de Extra info también notamos lo mismo en algunos carácteres, parece que está en otro idioma.

Validaremos a través de nxcsi las credenciales son válidas para conectarnos mediante SSH, comprobamos que podemos acceder y visualizar la flag de user.txt.

Privilege Escalation

Transfer a file with /dev/tcp method

Revisando el directorio en el que nos encontramos, visualizamos un archivo llamado RT30000.zip.

Nos pasaremos este archivo a nuestro equipo local para trabajar con él y comprobar el contenido de este. Para ello, desde nuestro equipo de atacnate nos pondremos en escucha con nc para recibir por el puerto 443 el archivo mencionado.

Desde el equipo víctima, enviaremos el contenido del .zip realizando un cat sobre el archivo y enviando el output al /dev/tcp de nuestra dirección y puerto donde estamos en escucha.

Verificaremos que hemos recibido correctamente el archivo original sin problemas. Descomprimiremos el archivo y visualiozaremos que nos encontramos con un archivo .DMP que se trata de un Memory Dump y también una base de datos de contraseñas de KeepPass.

Abriremos el archivo passcodes.kdbx a través de keepassxc para visualizarlo en entorno gráfico.

Verificamos que al acceder al archivo, nos pide credenciales de acceso y no podemos acceder a él sin proporcionarle ninguna.

Obtaining KeePass password through memory dump (CVE-2023-32784)

Por lo tanto, lo que pensamos es en recuperar el hash de la contraseña del archivo a través de keepass2john y posteriormente crackear el hash. En este caso, al parecer la contraseña no se encontraba dentro del diccionario del rockyou.txt.

Revisamos el tipo de archivo que era, y nos percatamos que se trataba de un archivo de Keepass password database 2.x.

Revisando posibiles vulnerabilidades sobre esta versión de KeePass, nos encontramos con el siguiente CVE-2023-32784.

Nos descargamos el proyecto de GitHub para realizar la explotación de la vulnerabilidad, para verificar si funciona o no.

Al ejecutar el exploit pasándole el archivo KeePassDumpFull.dmp que obtuvimos, nos encontramos que al parecer ha logrado obtener lo que parece ser la posible contraseña del archivo de KeePass.

En este caso, el resultado al parecer hay algunos carácteres que parecen no ser de UTF-8 y por dicho motivo el script no lo interpreta.

Al buscarpor internet, nos encontramos que el resultado obtenido en el paso anterior, parece ser que se trata del siguiente.

Probamos de acceder con lo que supuestamente parece ser la contraseña del KeePass pero tampoco logramos poder acceder a ella.

De casualidad, también probamos de revisar si poniendo la contaseña anterior en minúsculas nos funcionaría o no.

Con la contraseña en minúsculas, logramos obtener acceso a la base de datos de KeePass. En el archivo, nos encontramos que hay una clave privada de PuTTY del usuario root y también una contraseña en texto plano.

Validaremos si la contraseña en texto plano sirve para el usuarioroot. En este caso, las credenciales no son válidas.

Converting PPK Key V3 to SSH Private Key (id_rsa)

Nos guardaremos en un archivo llamado private_key el contenido de la clave privada de PuTTY que nos encontramos en el KeePass. Revisando el tipo de archivo del que se trataba, nos encontramos que es un archivo PuTTY Private Key File V3.

Dado que esta clave privada de PuTTY no nos serviría para conectarnos al SSH, lo que buscamos por Internet es maneras de convertir esta clave privada a una clave privada de SSH. Nos encontramos con el siguiebnte blog que nos mencionaba el proceso a realizar.

A través de puttygen convertiremos la clave privada PPKque disponemos en una clave privada SSH (id_rsa). Una vez convertida, le daremos los permisos necesarios y verificaremos que se ha convertido correctamente.

Trataremos de acceder al SSH a través de esta clave privada del usuario root y comprobamos que hemos podido conectarnos al equipo. También logramos visualizar la flag de root.txt.

Última actualización

¿Te fue útil?