Publicado: 16 de Junio de 2025
Autor: Josรฉ Miguel Romero aKa x3m1SecDificultad: โญ Easy
๐ Descripciรณn
Love es una mรกquina Windows de dificultad fรกcil de HackTheBox que presenta un sistema de votaciรณn PHP vulnerable. La explotaciรณn inicial se basa en el Server-Side Request Forgery (SSRF) para acceder a servicios internos y obtener credenciales de administrador. Una vez autenticados, se explota una vulnerabilidad de ejecuciรณn remota de cรณdigo (RCE) en el sistema de votaciรณn para ganar acceso inicial. La escalada de privilegios se logra abusando de la polรญtica de Windows "AlwaysInstallElevated" para ejecutar instaladores MSI con privilegios de SYSTEM.
๐ฏ Informaciรณn de la Mรกquina
Parรกmetro
Valor
IP
10.10.10.239
SO
Windows 10 Pro 19042
Servicios principales
HTTP (80), HTTPS (443), MySQL (3306), WinRM (5985/5986)
Dominios
staging.love.htb, love.htb
๐ญ Reconocimiento
๐ Ping para verificaciรณn en base a TTL
๐ก Nota: El TTL cercano a 128 sugiere que probablemente sea una mรกquina Windows.
๐ Escaneo de puertos TCP
๐ ๏ธ Enumeraciรณn de servicios
๐ Configuraciรณn de hosts
En el puerto 443 el nmap nos devuelve el nombre del dominio, el cual es staging.love.htb.
Vemos algo interesante a la hora de acceder a la opciรณn "Demo" y nos dirige al recurso beta.php. Nos pide introducir una URL con el sitio que queremos analizar para ver si tiene malware.
๐งช Prueba de concepto SSRF
Primero verificamos si podemos alcanzar nuestro host de ataque iniciando un servidor web en Python y haciendo una peticiรณn.
Luego probamos si podemos acceder a servicios internos referenciando la direcciรณn IP de la propia mรกquina hacia el puerto 5000:
URL probada:http://127.0.0.1:5000
Al explotar la vulnerabilidad SSRF, encontramos unas credenciales que parecen ser para el panel de administrador:
Buscamos exploits pรบblicos para el software Voting System 1.0:
Parece que el panel pertenece a una aplicaciรณn llamada sourcecodester
Encontramos un exploit que permite RCE autenticada, perfecto para nuestras credenciales obtenidas.
โ๏ธ Configuraciรณn del exploit
Deberemos editar los parรกmetros relacionados con la IP y el puerto del servicio donde se encuentra el aplicativo asรญ como los relacionados con la IP y el puerto donde recibiremos la shell reversa.
Tambien debemos adaptar los parรกmetros INDEX_PAGE, LOGIN_URL, VOTE_URL y CALL_SHELL para que la ruta corresponda con la del aplicativo, ya que por ejemplo el /votesystem/ no existe en la aplicaciรณn que estamos tratando de explotar:
La configuraciรณn quedarรญa de esta forma:
๐ฏ Ejecuciรณn del exploit
๐ช Acceso inicial obtenido
Una vez lanzado el exploit recibimos la reverse shell ganando acceso como usuario phoebe.
Una vez dentro revisamos el directorio Desktop del usuario Phoebe para obtener la primera flag:
## ๐ Escalada de privilegios
๐ Enumeraciรณn de privilegios
Comenzamos a enumerar y realizar comprobaciones en busca de una vรญa potencial para la escalada de privilegios y encontramos que AlwaysInstallElevated estรก activo.
๐ ยฟQuรฉ es AlwaysInstallElevated?
Cuando AlwaysInstallElevated estรก habilitada (0x1), permite que los archivos .msi (Microsoft Installer) se ejecuten con privilegios de administrador, incluso si el usuario no tiene derechos administrativos.
๐ ๏ธ Generaciรณn del payload malicioso
Para abusar de esto y escalar privilegios podemos:
Generar un payload msi con el que ganar una reverse shell de altos privilegios
Usar el script powerup para cargar el mรณdulo y aรฑadir un usuario nuevo al sistema.
En este caso que vamos a optar por generar un payload con msvenom de la siguiente forma:
Lo transferimos al host Windows usando un servidor web en python y usando curl:
Ahora iniciamos un listener donde recibiremos la reverse shell con privilegios NT system
๐ Root Flag
Ejecutamos el binario y recibimos la reverse shell de altos privilegios
โฏ nmap -sC -sV -p$ports 10.10.10.239 -oN services.txt
Starting Nmap 7.95 ( https://nmap.org ) at 2025-06-16 15:10 CEST
Stats: 0:01:24 elapsed; 0 hosts completed (1 up), 1 undergoing Service Scan
Service scan Timing: About 94.74% done; ETC: 15:11 (0:00:05 remaining)
Stats: 0:02:17 elapsed; 0 hosts completed (1 up), 1 undergoing Service Scan
Service scan Timing: About 94.74% done; ETC: 15:12 (0:00:08 remaining)
Nmap scan report for 10.10.10.239
Host is up (0.043s latency).
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.46 ((Win64) OpenSSL/1.1.1j PHP/7.3.27)
|_http-server-header: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/7.3.27
|_http-title: Voting System using PHP
| http-cookie-flags:
| /:
| PHPSESSID:
|_ httponly flag not set
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
443/tcp open ssl/http Apache httpd 2.4.46 (OpenSSL/1.1.1j PHP/7.3.27)
|_http-server-header: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/7.3.27
|_ssl-date: TLS randomness does not represent time
|_http-title: 403 Forbidden
| ssl-cert: Subject: commonName=staging.love.htb/organizationName=ValentineCorp/stateOrProvinceName=m/countryName=in
| Not valid before: 2021-01-18T14:00:16
|_Not valid after: 2022-01-18T14:00:16
| tls-alpn:
|_ http/1.1
445/tcp open microsoft-ds Windows 10 Pro 19042 microsoft-ds (workgroup: WORKGROUP)
3306/tcp open mysql MariaDB 10.3.24 or later (unauthorized)
5000/tcp open http Apache httpd 2.4.46 (OpenSSL/1.1.1j PHP/7.3.27)
|_http-title: 403 Forbidden
|_http-server-header: Apache/2.4.46 (Win64) OpenSSL/1.1.1j PHP/7.3.27
5040/tcp open unknown
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
5986/tcp open ssl/http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
| ssl-cert: Subject: commonName=LOVE
| Subject Alternative Name: DNS:LOVE, DNS:Love
| Not valid before: 2021-04-11T14:39:19
|_Not valid after: 2024-04-10T14:39:19
|_http-server-header: Microsoft-HTTPAPI/2.0
|_ssl-date: 2025-06-16T13:34:49+00:00; +21m34s from scanner time.
|_http-title: Not Found
| tls-alpn:
|_ http/1.1
7680/tcp open pando-pub?
47001/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
49664/tcp open msrpc Microsoft Windows RPC
49665/tcp open msrpc Microsoft Windows RPC
49666/tcp open msrpc Microsoft Windows RPC
49667/tcp open msrpc Microsoft Windows RPC
49668/tcp open msrpc Microsoft Windows RPC
49669/tcp open msrpc Microsoft Windows RPC
49670/tcp open msrpc Microsoft Windows RPC
Service Info: Hosts: www.example.com, LOVE, www.love.htb; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb-security-mode:
| account_used: <blank>
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled but not required
| smb2-time:
| date: 2025-06-16T13:34:35
|_ start_date: N/A
| smb-os-discovery:
| OS: Windows 10 Pro 19042 (Windows 10 Pro 6.3)
| OS CPE: cpe:/o:microsoft:windows_10::-
| Computer name: Love
| NetBIOS computer name: LOVE\x00
| Workgroup: WORKGROUP\x00
|_ System time: 2025-06-16T06:34:36-07:00
|_clock-skew: mean: 2h06m34s, deviation: 3h30m01s, median: 21m33s
echo "10.10.10.239 staging.love.htb" | sudo tee -a /etc/hosts
C:\Users\Phoebe\Desktop>dir
dir
Volume in drive C has no label.
Volume Serial Number is 56DE-BA30
Directory of C:\Users\Phoebe\Desktop
04/13/2021 03:20 AM <DIR> .
04/13/2021 03:20 AM <DIR> ..
06/16/2025 06:28 AM 34 user.txt
1 File(s) 34 bytes
2 Dir(s) 4,058,107,904 bytes free
C:\Users\Administrator\Desktop>dir
dir
Volume in drive C has no label.
Volume Serial Number is 56DE-BA30
Directory of C:\Users\Administrator\Desktop
04/13/2021 03:20 AM <DIR> .
04/13/2021 03:20 AM <DIR> ..
06/16/2025 06:28 AM 34 root.txt
1 File(s) 34 bytes
2 Dir(s) 4,047,945,728 bytes free