Drupal RCE
Mit dem PHP-Filtermodul
In älteren Versionen von Drupal (vor Version 8) war es möglich, sich als Admin anzumelden und das PHP filter
-Modul zu aktivieren, das "Eingebetteten PHP-Code/Snippets die Auswertung erlaubt." Ab Version 8 ist dieses Modul jedoch nicht standardmäßig installiert.
Sie müssen das Plugin php installiert haben (überprüfen Sie, indem Sie auf /modules/php zugreifen; wenn es 403 zurückgibt, existiert es, wenn nicht gefunden, dann ist das Plugin php nicht installiert)
Gehen Sie zu Module -> (Überprüfen) PHP-Filter -> Konfiguration speichern
Klicken Sie dann auf Inhalt hinzufügen -> Wählen Sie Basis-Seite oder Artikel -> Schreiben Sie php shellcode in den Textkörper -> Wählen Sie PHP-Code im Textformat -> Wählen Sie Vorschau
Zugreifen Sie schließlich auf den neu erstellten Knoten:
Installieren des PHP-Filtermoduls
In aktuellen Versionen ist es nicht mehr möglich, Plugins nur mit Zugriff auf das Web nach der Standardinstallation zu installieren.
Ab Version 8 ist das PHP-Filter Modul nicht standardmäßig installiert. Um diese Funktionalität zu nutzen, 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
Gehen Sie nach dem Herunterladen zu
Administration
>Reports
>Available updates
.Klicken Sie auf
Browse
, wählen Sie die Datei aus dem Verzeichnis aus, in das wir sie heruntergeladen haben, und klicken Sie dann aufInstall
.Sobald das Modul installiert ist, können wir auf
Content
klicken und eine neue Basis-Seite erstellen, ähnlich wie wir es im Drupal 7-Beispiel gemacht haben. Stellen Sie erneut sicher, dass SiePHP code
aus dem Dropdown-MenüText format
auswählen.
Hintertür-Modul
In aktuellen Versionen ist es nicht mehr möglich, Plugins nur mit Zugriff auf das Web nach der Standardinstallation zu installieren.
Ein hintertüriges Modul kann erstellt werden, indem eine Shell zu einem bestehenden Modul hinzugefügt wird. Module können auf der drupal.org-Website gefunden werden. Wählen wir ein Modul wie CAPTCHA. 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.
Erstellen Sie eine PHP-Web-Shell mit den Inhalten:
Als Nächstes müssen wir eine
.htaccess
-Datei erstellen, um uns Zugang zum Ordner zu verschaffen. Dies ist notwendig, da Drupal den direkten Zugriff auf den/modules
-Ordner verweigert.
Die obige Konfiguration wird Regeln für den /-Ordner anwenden, wenn wir eine Datei im /modules-Ordner anfordern. Kopiere beide Dateien in den captcha-Ordner und erstelle ein Archiv.
Angenommen, wir haben administrativen Zugriff auf die Website, klicken Sie auf
Verwalten
und dann aufErweitern
in der Seitenleiste. Klicken Sie dann auf die Schaltfläche+ Neues Modul installieren
, und wir werden zur Installationsseite weitergeleitet, wiehttp://drupal-site.local/admin/modules/install
. Durchsuchen Sie das Backdoored Captcha-Archiv und klicken Sie aufInstallieren
.Sobald die Installation erfolgreich ist, navigieren Sie zu
/modules/captcha/shell.php
, um Befehle auszuführen.
Backdooring Drupal mit Konfigurationssynchronisierung
Beitrag geteilt von Coiffeur0x90
Teil 1 (Aktivierung von Media und Media Library)
Im Menü Erweitern (/admin/modules) können Sie aktivieren, was wie bereits installierte Plugins aussieht. Standardmäßig scheinen die Plugins Media und Media Library nicht aktiviert zu sein, also lassen Sie uns diese aktivieren.
Vor der Aktivierung:
Nach der Aktivierung:
Teil 2 (Nutzung der Funktion Konfigurationssynchronisierung)
Wir werden die Funktion Konfigurationssynchronisierung nutzen, um Drupal-Konfigurationseinträge zu dumpen (exportieren) und hochzuladen (importieren):
/admin/config/development/configuration/single/export
/admin/config/development/configuration/single/import
Patch system.file.yml
Lassen Sie uns mit dem Patchen des ersten Eintrags allow_insecure_uploads
beginnen:
Datei: system.file.yml
Zu:
Datei: system.file.yml
Patch field.field.media.document.field_media_document.yml
Dann patchen Sie den zweiten Eintrag file_extensions
von:
Datei: field.field.media.document.field_media_document.yml
Zu:
Datei: field.field.media.document.field_media_document.yml
Ich verwende es in diesem Blogbeitrag nicht, aber es wird angemerkt, dass es möglich ist, den Eintrag
file_directory
beliebig zu definieren und dass er anfällig für einen Path Traversal-Angriff ist (so können wir im Drupal-Dateisystembaum nach oben navigieren).
Teil 3 (Nutzung der Funktion Dokument hinzufügen)
Der letzte Schritt ist der einfachste und wird in zwei Unter Schritte unterteilt. Der erste besteht darin, eine Datei im .htaccess-Format hochzuladen, um die Apache-Direktiven zu nutzen und .txt-Dateien vom PHP-Engine interpretieren zu lassen. Der zweite besteht darin, eine .txt-Datei hochzuladen, die unser Payload enthält.
Datei: .htaccess
Warum ist dieser Trick cool?
Weil, sobald die Webshell (die wir LICENSE.txt nennen) auf dem Webserver abgelegt ist, können wir unsere Befehle über $_COOKIE
übertragen und im Webserver-Log wird dies als legitime GET-Anfrage an eine Textdatei angezeigt.
Warum nennen wir unsere Webshell LICENSE.txt?
Einfach, weil wir die folgende Datei nehmen, zum Beispiel core/LICENSE.txt (die bereits im Drupal-Kern vorhanden ist), haben wir eine Datei mit 339 Zeilen und 17,6 KB Größe, die perfekt ist, um einen kleinen PHP-Code-Schnipsel in der Mitte hinzuzufügen (da die Datei groß genug ist).
Datei: Gepatchte LICENSE.txt
Teil 3.1 (Datei .htaccess hochladen)
Zuerst nutzen wir die Funktion Dokument hinzufügen (/media/add/document), um unsere Datei mit den Apache-Direktiven (.htaccess) hochzuladen.
Teil 3.2 (Datei LICENSE.txt hochladen)
Dann nutzen wir erneut die Funktion Dokument hinzufügen (/media/add/document), um eine Webshell, die in einer Lizenzdatei versteckt ist, hochzuladen.
Teil 4 (Interaktion mit der Webshell)
Der letzte Teil besteht darin, mit der Webshell zu interagieren.
Wie im folgenden Screenshot gezeigt, erhalten wir das nachfolgende Ergebnis, wenn das von unserer Webshell erwartete Cookie nicht definiert ist, während wir die Datei über einen Webbrowser aufrufen.
Wenn der Angreifer das Cookie setzt, kann er mit der Webshell interagieren und beliebige Befehle ausführen.
Und wie Sie in den Protokollen sehen können, sieht es so aus, als wäre nur eine txt-Datei angefordert worden.
Vielen Dank, dass Sie sich die Zeit genommen haben, diesen Artikel zu lesen. Ich hoffe, er hilft Ihnen, einige Shells zu erhalten.
Last updated