
CVE-2018-7600 शोषण का एक Rust कार्यान्वयन जो कमजोर Drupal 7 इंस्टॉलेशन (<= 7.57) को लक्षित करता है
CVE-2018-7600 शोषण का एक Rust कार्यान्वयन जो कमजोर Drupal 7 इंस्टॉलेशन (<= 7.57) को लक्षित करता है। यह CLI निम्नलिखित PoC प्रवाह को पुन: उत्पन्न करता है: यह user/password पथ के माध्यम से कैश किए गए रेंडरेबल फॉर्म को दूषित करता है, एक form_build_id निकालता है, फिर file/ajax एंडपॉइंट के माध्यम से कैश किए गए पेलोड को ट्रिगर करता है ताकि PHP फंक्शन आह्वान के माध्यम से रिमोट कोड निष्पादन प्राप्त किया जा सके।
CVE-2018-7600 एक रिमोट कोड निष्पादन भेद्यता है जो Drupal 7 (और एक अलग संदर्भ में Drupal 8) को प्रभावित करती है। Drupal 7 में समस्या अपर्याप्त सैनिटाइज़ेशन से उत्पन्न होती है जब कुछ रेंडरेबल ऐरे कैश किए जाते हैं और बाद में प्रस्तुत किए जाते हैं। एक एंडपॉइंट में विशेष रूप से तैयार किए गए रेंडर मेटाडेटा इंजेक्ट करके जो कैश किया गया है, हमलावर कैश किए गए डेटा को बाद में प्रस्तुत या अनुरोधित करने पर मनमाना PHP फंक्शन चला सकता है।
#post_render कॉलबैक एक मनमाना PHP फंक्शन (उदाहरण passthru) है।?q=user/password पर पोस्ट करता है ताकि Drupal दूषित फॉर्म को कैश करे।form_build_id प्राप्त करने के बाद, PoC पेलोड को /file/ajax/name/#value/<form_build_id> पर कॉल करके ट्रिगर करता है जिसमें POST बॉडी में form_build_id होता है। जब Drupal कैश किए गए तत्व को प्रस्तुत करता है, #post_render कॉलबैक हमलावर-नियंत्रित मार्कअप के साथ निष्पादित होता है, जिससे कमांड निष्पादन संभव होता है।यह Rust CLI लक्ष्य Drupal 7 साइट अनुरोध पैरामीटर के विरुद्ध दो-चरणीय अनुक्रम (दूषित करना फिर ट्रिगर करना) करता है, form_build_id के लिए HTML प्रतिक्रिया को पार्स करता है, और फिर हमलावर द्वारा निर्दिष्ट फंक्शन को निष्पादित करने के लिए file/ajax एंडपॉइंट को ट्रिगर करता है।
क्योंकि क्लाइंट प्रमाणपत्र सत्यापन अक्षम करता है (मूल PoC को प्रतिबिंबित करने के लिए जिसने verify=False पास किया), उपकरण स्व-हस्ताक्षरित या अन्यथा अमान्य TLS प्रमाणपत्रों का उपयोग करने वाले लक्ष्यों के विरुद्ध काम करेगा। यदि आप वैध प्रमाणपत्रों की आवश्यकता पसंद करते हैं तो इस व्यवहार को स्रोत में बदला जा सकता है।
मूल उपयोग (डिफ़ॉल्ट कमांड whoami, डिफ़ॉल्ट फ़ंक्शन passthru है):
cargo run -- -u http://target.com/
कस्टम कमांड और फ़ंक्शन चलाएं:
cargo run -- -u http://target.com/ -c "whoami" -f "passthru"
HTTP/S प्रॉक्सी का उपयोग करें (प्रारूप: http://127.0.0.1:8080/):
cargo run -- -u http://target.com/ -p http://127.0.0.1:8080/
CLI विकल्प सारांश:
-u, target: लक्ष्य Drupal साइट का URL (जैसे http://target.com/)।-c, --command: लक्ष्य पर निष्पादित करने का कमांड (डिफ़ॉल्ट: whoami)।-f, --function: हमले के वेक्टर के रूप में उपयोग करने के लिए PHP फ़ंक्शन (डिफ़ॉल्ट: passthru)।-p, --proxy: अनुरोधों को रूट करने के लिए वैकल्पिक प्रॉक्सी URL।उदाहरण पूर्ण प्रवाह:
user/password फॉर्म को दूषित करें, #post_render कॉलबैक और कमांड वाला #markup डालें।form#user-pass के अंदर form_build_id खोजने के लिए प्रतिक्रिया को पार्स करें।form_build_id के साथ ?q=file/ajax/name/#value/<form_build_id> पर POST करें।यह उपकरण केवल शैक्षिक और अधिकृत पैठ परीक्षण उद्देश्यों के लिए है। जिम्मेदारी से और केवल उन सिस्टम पर उपयोग करें जिनके आप मालिक हैं या जिनके लिए आपके पास स्पष्ट अनुमति है।