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