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 से यह मॉड्यूल डिफ़ॉल्ट रूप से स्थापित नहीं है।
/modules/php पर जाएं और यदि 403 त्रुटि लौटाई जाती है तो PHP filter प्लगइन स्थापित है और आप जारी रख सकते हैं
यदि नहीं, तो Modules
पर जाएं और PHP Filter
के बॉक्स पर टिक करें और फिर Save configuration
पर क्लिक करें
फिर, इसका लाभ उठाने के लिए, Add content
पर क्लिक करें, फिर Basic Page
या Article
चुनें और PHP बैकडोर लिखें, फिर टेक्स्ट प्रारूप में PHP
कोड चुनें और अंत में 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
का चयन करें।
वर्तमान संस्करणों में, डिफ़ॉल्ट स्थापना के बाद केवल वेब तक पहुँच होने पर प्लगइन्स स्थापित करना अब संभव नहीं है।
यह संभव था कि एक मॉड्यूल डाउनलोड करें, उसमें बैकडोर जोड़ें और इसे स्थापित करें। उदाहरण के लिए, Trurnstile मॉड्यूल को संकुचित प्रारूप में डाउनलोड करना, इसके अंदर एक नया PHP बैकडोर फ़ाइल बनाना, जिससे .htaccess
फ़ाइल के साथ PHP फ़ाइल तक पहुँचने की अनुमति मिलती:
And then going to http://drupal.local/admin/modules/install
to install the backdoored module and access /modules/turnstile/back.php
to execute it.
Post shared by Coiffeur0x90
In the Extend menu (/admin/modules), you can activate what appear to be plugins already installed. By default, plugins Media and Media Library don’t appear to be activated, so let’s activate them.
Before activation:
After activation:
We’ll leverage the Configuration synchronization feature to dump (export) and upload (import) Drupal configuration entries:
/admin/config/development/configuration/single/export
/admin/config/development/configuration/single/import
Patch system.file.yml
Let’s start by patching the first entry allow_insecure_uploads
from:
File: system.file.yml
को:
File: 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)