Page cover

📘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.46

Pregunta 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:windows

Encontramos dos puertos abiertos en el objetivo:

Puerto
Estado
Servicio
Versión

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 ldapadmin en algún lugar del sistema.

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.txt en 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:

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?