Drupal RCE
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
पुराने संस्करणों में 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 का चयन करें
अंत में बस नए बनाए गए नोड पर पहुँचें:
वर्तमान संस्करणों में, डिफ़ॉल्ट स्थापना के बाद केवल वेब तक पहुँच होने पर प्लगइन्स स्थापित करना अब संभव नहीं है।
संस्करण 8 से आगे, PHP फ़िल्टर मॉड्यूल डिफ़ॉल्ट रूप से स्थापित नहीं है। इस कार्यक्षमता का लाभ उठाने के लिए, हमें मॉड्यूल को स्वयं स्थापित करना होगा।
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
का चयन करें।
वर्तमान संस्करणों में, डिफ़ॉल्ट स्थापना के बाद केवल वेब तक पहुँच होने पर प्लगइन्स स्थापित करना अब संभव नहीं है।
एक बैकडोर मॉड्यूल किसी मौजूदा मॉड्यूल में शेल जोड़कर बनाया जा सकता है। मॉड्यूल drupal.org वेबसाइट पर पाए जा सकते हैं। चलिए CAPTCHA जैसे एक मॉड्यूल का चयन करते हैं। नीचे स्क्रॉल करें और tar.gz आर्काइव के लिए लिंक कॉपी करें।
आर्काइव डाउनलोड करें और इसकी सामग्री निकालें।
एक PHP वेब शेल बनाएं जिसमें सामग्री हो:
अगला, हमें .htaccess
फ़ाइल बनानी होगी ताकि हमें फ़ोल्डर तक पहुँच मिल सके। यह आवश्यक है क्योंकि Drupal /modules
फ़ोल्डर तक सीधे पहुँच को अस्वीकार करता है।
उपरोक्त कॉन्फ़िगरेशन /modules में फ़ाइल का अनुरोध करते समय / फ़ोल्डर के लिए नियम लागू करेगा। इन दोनों फ़ाइलों को कैप्चा फ़ोल्डर में कॉपी करें और एक संग्रह बनाएँ।
मान लीजिए कि हमारे पास वेबसाइट पर प्रशासनिक पहुंच है, Manage
पर क्लिक करें और फिर साइडबार में Extend
पर क्लिक करें। अगला, + Install new module
बटन पर क्लिक करें, और हमें इंस्टॉलेशन पृष्ठ पर ले जाया जाएगा, जैसे http://drupal-site.local/admin/modules/install
बैकडोर किए गए कैप्चा आर्काइव पर जाएं और Install
पर क्लिक करें।
एक बार इंस्टॉलेशन सफल होने के बाद, /modules/captcha/shell.php
पर जाएं ताकि कमांड निष्पादित कर सकें।
पोस्ट साझा की गई Coiffeur0x90
Extend मेनू (/admin/modules) में, आप उन प्लगइन्स को सक्रिय कर सकते हैं जो पहले से स्थापित प्रतीत होते हैं। डिफ़ॉल्ट रूप से, प्लगइन्स Media और Media Library सक्रिय नहीं दिखाई देते हैं, इसलिए चलिए इन्हें सक्रिय करते हैं।
सक्रियकरण से पहले:
सक्रियकरण के बाद:
हम 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 फ़ाइल सिस्टम पेड़ के भीतर वापस जा सकते हैं)।
अंतिम चरण सबसे सरल है, और इसे दो उप-चरणों में विभाजित किया गया है। पहला है .htaccess प्रारूप में एक फ़ाइल अपलोड करना ताकि Apache निर्देशों का लाभ उठाया जा सके और .txt फ़ाइलों को PHP इंजन द्वारा व्याख्यायित करने की अनुमति दी जा सके। दूसरा है एक .txt फ़ाइल अपलोड करना जिसमें हमारा payload हो।
File: .htaccess
क्यों यह ट्रिक कूल है?
क्योंकि एक बार जब Webshell (जिसे हम LICENSE.txt कहेंगे) वेब सर्वर पर ड्रॉप किया जाता है, हम अपने कमांड $_COOKIE
के माध्यम से भेज सकते हैं और वेब सर्वर लॉग में, यह एक वैध GET अनुरोध के रूप में एक टेक्स्ट फ़ाइल के लिए दिखाई देगा।
हमारे Webshell का नाम LICENSE.txt क्यों रखा जाए?
सिर्फ इसलिए क्योंकि यदि हम निम्नलिखित फ़ाइल लेते हैं, उदाहरण के लिए core/LICENSE.txt (जो पहले से ही Drupal कोर में मौजूद है), तो हमारे पास 339 पंक्तियों और 17.6 KB आकार की एक फ़ाइल है, जो बीच में एक छोटा PHP कोड स्निपेट जोड़ने के लिए एकदम सही है (क्योंकि फ़ाइल काफी बड़ी है)।
फ़ाइल: पैच किया गया LICENSE.txt
पहले, हम Add Document (/media/add/document) सुविधा का उपयोग करके अपनी फाइल अपलोड करते हैं जिसमें Apache निर्देश (.htaccess) होते हैं।
Part 3.2 (फाइल अपलोड करें LICENSE.txt)
फिर, हम Add Document (/media/add/document) सुविधा का फिर से उपयोग करते हैं ताकि एक लाइसेंस फाइल के भीतर छिपा हुआ Webshell अपलोड किया जा सके।
अंतिम भाग Webshell के साथ इंटरैक्ट करने का है।
जैसा कि निम्नलिखित स्क्रीनशॉट में दिखाया गया है, यदि हमारे Webshell द्वारा अपेक्षित कुकी परिभाषित नहीं है, तो हमें वेब ब्राउज़र के माध्यम से फाइल परामर्श करते समय निम्नलिखित परिणाम मिलता है।
जब हमलावर कुकी सेट करता है, तो वह Webshell के साथ इंटरैक्ट कर सकता है और जो चाहें आदेश निष्पादित कर सकता है।
और जैसा कि आप लॉग में देख सकते हैं, ऐसा लगता है कि केवल एक txt फाइल मांगी गई है।
इस लेख को पढ़ने के लिए समय निकालने के लिए धन्यवाद, मुझे उम्मीद है कि यह आपको कुछ शेल प्राप्त करने में मदद करेगा।
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)