📘Escenario 1
Durante una prueba de penetración contra la organización INLANEFREIGHT, se encuentra con un host Windows Server no perteneciente a un dominio que presenta una vulnerabilidad de Command Injection sin parchear. Tras establecerse, encuentra credenciales que podrían ser útiles para el movimiento lateral posterior en la evaluación y descubre otra vulnerabilidad que puede aprovecharse para escalar privilegios en el host objetivo.
Para esta evaluación, suponga que su cliente tiene un programa de gestión de parches/vulnerabilidades relativamente maduro pero no cuenta con suficiente personal y desconoce muchas de las mejores prácticas en torno a la gestión de configuración, lo que podría dejar a un host expuesto a una escalada de privilegios.
Enumere el host (comenzando con un escaneo de puertos con Nmap para identificar puertos/servicios accesibles), aproveche la falla de inyección de comandos para obtener acceso de reverse shell, escale privilegios a nivel NT AUTHORITY\SYSTEM o similar y responda las preguntas a continuación para completar esta parte de la evaluación.
Objetivo: 10.129.225.46Pregunta 1
¿Qué dos KB están instalados en el sistema de destino? (Formato de respuesta: 3210000 y 3210060)
Escaneo de puertos
sudo nmap -v -sV -sCV -T5 -Pn 10.129.225.46
Nmap scan report for 10.129.225.46
Host is up (0.050s latency).
Not shown: 998 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS httpd 10.0
|_http-server-header: Microsoft-IIS/10.0
|_http-title: DEV Connection Tester
| http-methods:
| Supported Methods: OPTIONS TRACE GET HEAD POST
|_ Potentially risky methods: TRACE
3389/tcp open ms-wbt-server Microsoft Terminal Services
| rdp-ntlm-info:
| Target_Name: WINLPE-SKILLS1-
| NetBIOS_Domain_Name: WINLPE-SKILLS1-
| NetBIOS_Computer_Name: WINLPE-SKILLS1-
| DNS_Domain_Name: WINLPE-SKILLS1-SRV
| DNS_Computer_Name: WINLPE-SKILLS1-SRV
| Product_Version: 10.0.14393
|_ System_Time: 2025-03-31T18:13:33+00:00
|_ssl-date: 2025-03-31T18:13:37+00:00; +1m10s from scanner time.
| ssl-cert: Subject: commonName=WINLPE-SKILLS1-SRV
| Issuer: commonName=WINLPE-SKILLS1-SRV
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2025-03-30T18:10:26
| Not valid after: 2025-09-29T18:10:26
| MD5: 3044:342f:397f:5c89:07e2:ca17:3f23:c675
|_SHA-1: 6caf:46ef:1f6c:6a3b:7849:f039:053e:4b55:2ce1:cb13
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windowsEncontramos dos puertos abiertos en el objetivo:
80
Abierto
HTTP (IIS)
Microsoft IIS 10.0
3389
Abierto
RDP
Microsoft Terminal Services
📌 Importante
El puerto 80 aloja una aplicación web "DEV Connection Tester". Posible vector de ataque.
La información de RDP indica que el sistema es Windows 10.0.14393, lo que corresponde a Windows Server 2016.
Command Inyection
La web tiene un input básico y un CTA de "Ping Host". Al probar el payload básico 127.0.0.1/whoami y capturarlo con BurpSuite observamos que el mensaje de error "Ping request could not find host 127.0.0.1;whoami" indica que el parámetro addr se está ejecutando dentro de un comando ping, pero el separador ; no está funcionando para ejecutar comandos adicionales.

Después de probar varios payloads encuentro uno que funciona: 127.0.0.1 | whoami

Reverse Shell
Ahora que hemos identificado el Command Inyection vamos a conseguir una shell.
Payload utilizado:
Windows, PowerShell#3 base64

Sustituímos whoami por el payload en el input y le damos enter:

Hotfixes disponibles
Para responder a la pregunta 1, buscaremos los parches instalados en el sistema:
Pregunta 2
Busque la contraseña de la cuenta
ldapadminen algún lugar del sistema.
En HTB esta pregunta debería ser la tercera, ya que necesitamos elevar privilegios para encontrarlo. Vamos a la pregunta 3 y después volvemos a esta.
Enumeración de usuarios
Vemos que el usuario ldapadmin no está presente en el sistema:
LaZagne
Vamos a enviar el binario de LaZagne.exe en la máquina objetivo para extraer posibles credenciales almacenadas:
Tenemos las creedenciales en plano de la cuenta ldapadmin y el hash del Administrador!
Pregunta 3
Escale privilegios y envíe el contenido del archivo
flag.txten el Escritorio del administrador.
Privilegios del usuario
Tenemos el privilegio SeImpersonatePrivilege habilitado, lo que significa que podemos explotar un potato attack (JuicyPotato, RoguePotato, PrintSpoofer....) para elevar privilegios a NT AUTHORITY\SYSTEM.
Verificar versión de Windows
El sistema es Windows Server 2016, por lo que usaremos JuicyPotato.
Descargamos JuicyPotato en Kali
Descargar la última release:
Crear Shell.exe malicioso con Msfvenom (opcional)
Si subimos este shell.exe y lo ejecutamos a través de Juicy Potato nos devolverá un Meterpreter como SYSTEM, con el que podemos establecernos mucho mejor en el sistema.
Transferencia de binarios a la máquina víctima
Debemos colocarlos en un directorio con permisos de ejecución como C:\windows\Temp
Binarios en el objetivo
Iniciar un listener multi handler en Kali
Ejecutar JuicyPotato
Al ejecutarlo veremos que nos da un error ya que necesitamos proporcionarle un CLSID válido:
Con la opción -b podemos hacer un bruteforce de CLSIDs para encontrar uno válido:
Esta técnica genera más de 1000 procesos, debemos usarla con precaución.
Podemos ejecutar el siguiente script para buscar CLSIDs potencialmente válidos, para no generar tanto ruido en la infraestructura (ni bloquear los puertos):
Al ejecutar este script nos saca de la shell, por lo que nos moveremos a una shell más robusta con Meterpreter.
Meterpreter Webdelivery
Configura un Powershell web delivery escuchando en el puerto 8080.
Ejecutar el comando en la máquina objetivo
Recibiendo el Meterpreter
Conseguir CLSIDs válidos
Ahora si, ejecutamos GetCLSID.ps1:
Ver el listado de CLSIDs válidos
Tenemos un listado y un csv. Vamos a echarles un vistazo:
Con esta herramienta podemos extraer los CLSIDs válidos del listado:
Lo modificamos así:
Nos lo descargamos desde Kali:
Y lo ejecutamos para conseguir CLSIDs válidos:
Ya es cuestión de ir probando uno por uno de la siguiente manera:
Recibimos una Shell SYSTEM
Acceso a la flag
En este punto, vamos a la pregunta 2 para enumerar más información.
Pregunta 4
Tras aumentar los privilegios, localice el archivo "
confidential.txt". Envíe su contenido.
Última actualización
¿Te fue útil?