Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
drupalgeddon2-cli — CLI-Neuschreibung des Drupalgeddon2 (CVE-2018-7600) PoC — für autorisiertes Testen/Ausbildung | Kitploit
Tools/GitHubGitHub/nayem-m/drupalgeddon2-cli
Payload-GenerierungExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungLabs & Praxis
GitHubnayem-m/drupalgeddon2-cli

drupalgeddon2-cli

CLI-Neuschreibung des Drupalgeddon2 (CVE-2018-7600) PoC — für autorisiertes Testen/Ausbildung

Repository anzeigen
1vor 3 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

drupalgeddon2-cli

Eine Befehlszeilen-Neuimplementierung des Drupalgeddon2 (CVE-2018-7600) Proof-of-Concept, erstellt als Übungsaufgabe während der Bearbeitung des Hack The Box Academy Attacking Common Applications Moduls.

[!WARNING] Nur für autorisierte Sicherheitstests und zu Bildungszwecken. Die Ausführung gegen Systeme, die Sie nicht besitzen oder für die Sie keine ausdrückliche schriftliche Genehmigung zum Testen haben, ist in den meisten Rechtsordnungen illegal. Siehe Legal & responsible use.

[!NOTE] Implementierung mit KI-Unterstützung geschrieben. Siehe A note on authorship.


Hintergrund – warum ich dies gebaut habe

Drupal ist eine der „häufigen Anwendungen“, die im Modul Attacking Common Applications der HTB Academy behandelt werden, und CVE-2018-7600 („Drupalgeddon2“) ist das kanonische Beispiel für eine nicht authentifizierte RCE. Anstatt ein Einmal-Skript zu kopieren und weiterzumachen, wollte ich die Form-API-Injektion, die den Fehler verursacht, tatsächlich verstehen – und habe daher das öffentliche PoC als Lernübung von Grund auf neu aufgebaut.

Das viel zitierte Original, a2u/CVE-2018-7600 von Vitalii Rudnykh, ist großartig, um den Fehler zu demonstrieren, erwartet aber, dass man die Nutzlast vor jeder Ausführung bearbeitet. In einem Labor-/CTF-Workflow – bei dem man es gegen verschiedene Ziele erneut ausführt und einen wiederholbaren Zugang haben möchte – wird das mühsam. Diese Version macht daraus stattdessen ein ordentliches CLI-Tool:

  • Ziel und Befehl werden als Argumente übergeben; keine Quellbearbeitung pro Durchlauf.
  • Es platziert automatisch eine kleine PHP-Webshell (der verwundbare Server schreibt die Datei selbst), was einen stabilen, wiederverwendbaren Zugang bietet.
  • Sie können einen einzelnen Befehl ausführen, in eine interaktive Pseudo-Shell wechseln oder die Shell einfach ablegen und gehen.
  • Der Shell-Dateiname und der Befehlsparameter werden bei jedem Durchlauf zufällig generiert, sodass sich ein erneuter Durchlauf nicht überschneidet und Sie keine vorhersagbare cmd=-Tür hinterlassen.
  • Es ist bewusst auf eine bekannte, längst gepatchte Schwachstelle (2018 offengelegt) beschränkt. Das Ziel war, die Technik zu verstehen und eine saubere, dokumentierte Referenzimplementierung zu erstellen – nicht neue offensive Fähigkeiten.

    Ein Hinweis zur Autorenschaft

    Der Code in diesem Repository wurde mit KI-Unterstützung (Anthropics Claude) geschrieben, während ich das HTB-Modul bearbeitete. Ich habe die Designziele und -anforderungen festgelegt – CLI-Ergonomie, automatisches Bereitstellen der Webshell, interaktiver Modus, zufälliger Shell-Name und -Parameter – und das Ergebnis überprüft und getestet. Ich gebe dies offen zu, weil es der ehrliche Weg ist, und weil der Wert hier im Verständnis und den technischen Entscheidungen liegt, nicht in der Autorenschaft jeder Zeile.

    Was es macht

    1. Nutzt die CVE-2018-7600 Form-API-Injektion, um eine kleine PHP-Webshell auf dem Ziel abzulegen. Der verwundbare Server dekodiert und schreibt die Datei selbst, was Zitierungs-/Escape-Probleme mit dem injizierten Befehl umgeht.
    2. Ermöglicht das Ausführen von Befehlen über diese Shell mit --cmd oder den Wechsel in eine interaktive Pseudo-Shell mit --shell.
    3. Überprüft, ob die Shell tatsächlich gelandet ist und ausgeführt wird (sie gibt ein zufälliges Token aus und prüft es), bevor der Erfolg gemeldet wird.

    Betroffene Versionen

    CVE-2018-7600 betrifft:

    • Drupal 7.x vor 7.58
    • Drupal 8.x vor 8.5.1 (auch 8.3.x < 8.3.9 und 8.4.x < 8.4.6)

    Diese Implementierung zielt auf den Drupal 8 Form-API-Vektor (den user/register AJAX-Endpunkt). Drupal 7 ist über einen anderen Endpunkt/Payload ausnutzbar und wird hier nicht behandelt.

    Gepatchte Versionen (7.58 / 8.5.1 und später) sind nicht betroffen.

    Voraussetzungen

    • Python 3.7+
    • requests
    root@kitploit:~
    pip install requests
    

    Verwendung

    root@kitploit:~
    # one-off command
    python3 drupalgeddon2.py -u http://target/ -c id
    
    # interactive pseudo-shell
    python3 drupalgeddon2.py -u http://target/ --shell
    
    # just plant the shell, run nothing
    python3 drupalgeddon2.py -u http://target/ --deploy-only
    
    # route through Burp, ignore the proxy's self-signed cert
    python3 drupalgeddon2.py -u http://target/ -c id --proxy http://127.0.0.1:8080 -k
    
    FlagBeschreibung
    -u, --url(erforderlich) Ziel-Basis-URL, z.B. http://target/
    -c, --cmdEinzelner Befehl, der auf dem Ziel ausgeführt werden soll
    --shellIn eine interaktive Pseudo-Shell wechseln
    --deploy-onlyNur die Webshell ablegen, nichts ausführen
    --shell-nameDateiname für die abgelegte Shell (Standard: zufällig .php)
    --paramGET-Parametername für die Shell (Standard: zufälliges md5)
    --proxyProxy-URL, z.B. http://127.0.0.1:8080
    -k, --insecureTLS-Überprüfung deaktivieren (für selbstsignierte Proxy-Zertifikate)
    --timeoutTimeout pro Anfrage in Sekunden (Standard: 15)

    Wie es funktioniert

    CVE-2018-7600 ist ein Fehler in der Eingabebereinigung von Drupals Form API. Drupal stellt Formulare als verschachtelte Renderbare Arrays dar, und Array-Schlüssel, die mit # beginnen, werden als spezielle Render-Eigenschaften und nicht als Benutzerdaten behandelt. Der Patch (SA-CORE-2018-002) fügte eine Bereinigung hinzu, um diese #-präfixierten Schlüssel aus Benutzereingaben zu entfernen.

    Vor dem Patch konnte ein nicht authentifizierter Angreifer Render-Eigenschaften in ein Formularelement injizieren, das vom AJAX-Handler von Drupal verarbeitet wird. Das Übergeben von Eigenschaften wie:

    • #post_render – eine Liste von Callables, die Drupal nach dem Rendern aufruft, und
    • #markup – das an sie übergebene Argument

    gegen das mail-Element des Benutzerregistrierungsformulars führt dazu, dass Drupal während des Render-Schritts eine beliebige PHP-Funktion (hier exec) mit vom Angreifer kontrollierten Eingaben aufruft – also Remote-Code-Ausführung ohne Authentifizierung.

    Dieses PoC verwendet diese Grundlage, um eine einzeilige PHP-Shell lokal base64-kodiert zu haben, die der Server in eine Datei im Webroot dekodiert, und dann mit dieser Datei über normale GET-Anfragen zu interagieren.

    Erkennung & Behebung

    Wenn Sie auf der verteidigenden Seite stehen:

    Behebung

    • Aktualisieren Sie auf Drupal 7.58 / 8.5.1 oder später (SA-CORE-2018-002 anwenden). Dies ist die einzig echte Lösung.
    • Wenn ein sofortiges Patchen unmöglich ist, hat das Drupal-Sicherheitsteam zum Zeitpunkt der Offenlegung einen Minderungspatch veröffentlicht – aber ein Upgrade wird dringend empfohlen.

    Erkennungsideen

    • Überprüfen Sie POST-Rumpf an Formular-/AJAX-Endpunkte auf Render-Array-Schlüssel: #post_render, #markup, #type, #lazy_builder usw. Legitime Formularübermittlungen enthalten diese nicht.
    • Kennzeichnen Sie Anfragen an .../user/register?element_parents=...&_wrapper_format=drupal_ajax, die verdächtige Parameter enthalten.
    • Korrelieren Sie einen POST an einen AJAX-Formular-Endpunkt mit einem anschließenden GET an eine neu erstellte .php-Datei im Webroot.
    • Achten Sie auf unerwartete Dateierstellung im Drupal-Webroot und auf kurze PHP-Dateien mit einem Parameter (system($_GET[...])-Shells).
    • Diese Verhaltensweisen lassen sich leicht als Suricata-/Snort-Signaturen oder Sigma-Regeln über Webserver-Logs kodieren.

    Danksagungen

    • Original-PoC und die Kerntechnik: Vitalii Rudnykh — a2u/CVE-2018-7600
    • Offenlegung der Schwachstelle: Drupal Security Team — SA-CORE-2018-002
    • Technische Tiefenbohrungen, die diese Neuschreibung informiert haben: die Forschungsberichte von Check Point und Ambionics zu Drupalgeddon2
    • Diese CLI-Neuschreibung: ich, mit KI-Unterstützung (siehe A note on authorship)

    Rechtliche Hinweise & verantwortungsvolle Nutzung

    Dieses Tool wird für Bildungszwecke und für autorisierte Sicherheitstests veröffentlicht – Ihre eigenen Laborumgebungen, HTB/CTF-Ziele oder Systeme, für die Sie eine ausdrückliche schriftliche Genehmigung zur Bewertung haben. Unautorisierter Zugriff auf Computersysteme ist eine Straftat gemäß Gesetzen wie dem UK Computer Misuse Act 1990, dem US Computer Fraud and Abuse Act und entsprechenden Gesetzen in anderen Ländern. Sie sind allein für die Nutzung verantwortlich. Der Autor übernimmt keine Haftung für Missbrauch oder verursachte Schäden.

    Lizenz

    MIT

    Tool herunterladen