Drupal RCE
With PHP Filter Module
पुराने संस्करणों में Drupal (संस्करण 8 से पहले), एक व्यवस्थापक के रूप में लॉग इन करना और PHP filter
मॉड्यूल को सक्षम करना संभव था, जो "संलग्न PHP कोड/टुकड़ों को मूल्यांकित करने की अनुमति देता है।" लेकिन संस्करण 8 से यह मॉड्यूल डिफ़ॉल्ट रूप से स्थापित नहीं है।
आपको प्लगइन php स्थापित करने की आवश्यकता है (जाँच करें कि /modules/php पर पहुँचकर और यदि यह 403 लौटाता है तो, मौजूद है, यदि नहीं मिला, तो प्लगइन php स्थापित नहीं है)
Modules पर जाएं -> (जाँचें) PHP Filter -> कॉन्फ़िगरेशन सहेजें
फिर Add content पर क्लिक करें -> Basic Page या Article का चयन करें -> शरीर में php shellcode लिखें -> Text format में PHP code का चयन करें -> Preview का चयन करें
अंत में बस नए बनाए गए नोड पर पहुँचें:
Install PHP Filter Module
वर्तमान संस्करणों में, डिफ़ॉल्ट स्थापना के बाद केवल वेब तक पहुँच होने पर प्लगइन्स स्थापित करना अब संभव नहीं है।
संस्करण 8 से आगे, PHP Filter मॉड्यूल डिफ़ॉल्ट रूप से स्थापित नहीं है। इस कार्यक्षमता का लाभ उठाने के लिए, हमें मॉड्यूल को स्वयं स्थापित करना होगा।
Drupal वेबसाइट से मॉड्यूल का सबसे हालिया संस्करण डाउनलोड करें।
wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
डाउनलोड करने के बाद
Administration
>Reports
>Available updates
पर जाएं।Browse
पर क्लिक करें, उस निर्देशिका से फ़ाइल का चयन करें जहाँ हमने इसे डाउनलोड किया था, और फिरInstall
पर क्लिक करें।एक बार मॉड्यूल स्थापित हो जाने पर, हम
Content
पर क्लिक कर सकते हैं और एक नया बुनियादी पृष्ठ बना सकते हैं, जैसे कि हमने Drupal 7 उदाहरण में किया था। फिर से, सुनिश्चित करें किText format
ड्रॉपडाउन सेPHP code
का चयन करें।
Backdoored Module
वर्तमान संस्करणों में, डिफ़ॉल्ट स्थापना के बाद केवल वेब तक पहुँच होने पर प्लगइन्स स्थापित करना अब संभव नहीं है।
एक बैकडोर मॉड्यूल एक मौजूदा मॉड्यूल में शेल जोड़कर बनाया जा सकता है। मॉड्यूल drupal.org वेबसाइट पर पाए जा सकते हैं। चलिए CAPTCHA जैसे एक मॉड्यूल का चयन करते हैं। नीचे स्क्रॉल करें और tar.gz archive के लिए लिंक कॉपी करें।
संग्रह डाउनलोड करें और इसकी सामग्री निकालें।
एक PHP वेब शेल बनाएं जिसमें सामग्री हो:
अगला, हमें
.htaccess
फ़ाइल बनानी होगी ताकि हम फ़ोल्डर तक पहुँच प्राप्त कर सकें। यह आवश्यक है क्योंकि Drupal/modules
फ़ोल्डर तक सीधे पहुँच को अस्वीकार करता है।
उपरोक्त कॉन्फ़िगरेशन /modules में फ़ाइल का अनुरोध करते समय / फ़ोल्डर के लिए नियम लागू करेगा। इन दोनों फ़ाइलों को कैप्चा फ़ोल्डर में कॉपी करें और एक संग्रह बनाएँ।
मान लीजिए कि हमारे पास प्रशासनिक पहुंच है वेबसाइट पर,
Manage
पर क्लिक करें और फिर साइडबार मेंExtend
पर क्लिक करें। अगला,+ Install new module
बटन पर क्लिक करें, और हमें इंस्टॉलेशन पृष्ठ पर ले जाया जाएगा, जैसेhttp://drupal-site.local/admin/modules/install
बैकडोर किए गए कैप्चा संग्रह पर जाएं औरInstall
पर क्लिक करें।एक बार इंस्टॉलेशन सफल होने के बाद,
/modules/captcha/shell.php
पर जाएं ताकि कमांड निष्पादित कर सकें।
Drupal को कॉन्फ़िगरेशन समन्वय के साथ बैकडोर करना
पोस्ट साझा की गई Coiffeur0x90
भाग 1 (Media और Media Library का सक्रियण)
Extend मेनू (/admin/modules) में, आप उन प्लगइन्स को सक्रिय कर सकते हैं जो पहले से स्थापित प्रतीत होते हैं। डिफ़ॉल्ट रूप से, प्लगइन्स Media और Media Library सक्रिय नहीं होते हैं, इसलिए चलिए इन्हें सक्रिय करते हैं।
सक्रियकरण से पहले:
सक्रियकरण के बाद:
भाग 2 (Configuration synchronization फीचर का लाभ उठाना)
हम Configuration synchronization फीचर का लाभ उठाकर Drupal कॉन्फ़िगरेशन प्रविष्टियों को डंप (निर्यात) और अपलोड (आयात) करेंगे:
/admin/config/development/configuration/single/export
/admin/config/development/configuration/single/import
Patch system.file.yml
आइए पहले प्रविष्टि allow_insecure_uploads
को पैच करना शुरू करें:
File: system.file.yml
के लिए:
फाइल: system.file.yml
Patch field.field.media.document.field_media_document.yml
फिर, दूसरे प्रविष्टि file_extensions
को इस प्रकार पैच करें:
File: field.field.media.document.field_media_document.yml
के लिए:
फाइल: field.field.media.document.field_media_document.yml
मैं इसे इस ब्लॉगपोस्ट में उपयोग नहीं करता लेकिन यह नोट किया गया है कि इसे मनमाने तरीके से
file_directory
प्रविष्टि को परिभाषित करना संभव है और यह एक पथ traversal हमले के लिए संवेदनशील है (इसलिए हम Drupal फ़ाइल सिस्टम पेड़ के भीतर वापस जा सकते हैं)।
भाग 3 (विशेषता Add Document का लाभ उठाना)
अंतिम चरण सबसे सरल है, और इसे दो उप-चरणों में विभाजित किया गया है। पहला है .htaccess प्रारूप में एक फ़ाइल अपलोड करना ताकि Apache निर्देशों का लाभ उठाया जा सके और .txt फ़ाइलों को PHP इंजन द्वारा व्याख्यायित करने की अनुमति दी जा सके। दूसरा है हमारी पेलोड वाली .txt फ़ाइल अपलोड करना।
File: .htaccess
क्यों यह ट्रिक कूल है?
क्योंकि एक बार जब Webshell (जिसे हम LICENSE.txt कहेंगे) वेब सर्वर पर ड्रॉप किया जाता है, हम अपने कमांड $_COOKIE
के माध्यम से भेज सकते हैं और वेब सर्वर लॉग में, यह एक वैध GET अनुरोध के रूप में एक टेक्स्ट फ़ाइल के लिए दिखाई देगा।
हमारे Webshell का नाम LICENSE.txt क्यों रखा जाए?
सिर्फ इसलिए क्योंकि यदि हम निम्नलिखित फ़ाइल लेते हैं, उदाहरण के लिए core/LICENSE.txt (जो पहले से ही Drupal कोर में मौजूद है), तो हमारे पास 339 लाइनों और 17.6 KB आकार की एक फ़ाइल है, जो बीच में एक छोटा PHP कोड स्निपेट जोड़ने के लिए एकदम सही है (क्योंकि फ़ाइल काफी बड़ी है)।
फ़ाइल: पैच किया गया LICENSE.txt
भाग 3.1 (फाइल .htaccess अपलोड करें)
पहले, हम Add Document (/media/add/document) सुविधा का उपयोग करके अपनी फाइल अपलोड करते हैं जिसमें Apache निर्देश (.htaccess) होते हैं।
भाग 3.2 (फाइल LICENSE.txt अपलोड करें)
फिर, हम Add Document (/media/add/document) सुविधा का फिर से उपयोग करते हैं ताकि एक लाइसेंस फाइल के भीतर छिपा हुआ Webshell अपलोड किया जा सके।
भाग 4 (Webshell के साथ इंटरैक्शन)
अंतिम भाग Webshell के साथ इंटरैक्ट करने का है।
जैसा कि निम्नलिखित स्क्रीनशॉट में दिखाया गया है, यदि हमारे Webshell द्वारा अपेक्षित कुकी परिभाषित नहीं है, तो हमें वेब ब्राउज़र के माध्यम से फाइल पर परामर्श करते समय निम्नलिखित परिणाम मिलता है।
जब हमलावर कुकी सेट करता है, तो वह Webshell के साथ इंटरैक्ट कर सकता है और जो चाहें कमांड निष्पादित कर सकता है।
और जैसा कि आप लॉग में देख सकते हैं, ऐसा लगता है कि केवल एक txt फाइल का अनुरोध किया गया है।
इस लेख को पढ़ने के लिए धन्यवाद, मुझे उम्मीद है कि यह आपको कुछ शेल प्राप्त करने में मदद करेगा।
Last updated