
Eine Rust-Implementierung des CVE-2018-7600-Exploits, der auf verwundbare Drupal-7-Installationen (<= 7.57) abzielt.
Eine Rust-Implementierung des Exploits für CVE-2018-7600, der auf verwundbare Drupal-7-Installationen (<= 7.57) abzielt. Diese CLI reproduziert den folgenden PoC-Ablauf: Sie vergiftet ein zwischengespeichertes renderbares Formular über den Pfad user/password, extrahiert eine form_build_id und löst dann die zwischengespeicherte Payload über den Endpunkt file/ajax aus, um eine Remote-Code-Ausführung durch den Aufruf einer PHP-Funktion zu erreichen.
CVE-2018-7600 ist eine Schwachstelle zur Remote-Code-Ausführung, die Drupal 7 (und Drupal 8 in einem anderen Kontext) betrifft. In Drupal 7 liegt das Problem in unzureichender Bereinigung, wenn bestimmte renderbare Arrays zwischengespeichert und später gerendert werden. Durch das Einschleusen speziell präparierter Render-Metadaten in einen Endpunkt, der zwischengespeichert wird, kann ein Angreifer beliebige PHP-Funktionen ausführen lassen, wenn die zwischengespeicherten Daten später gerendert oder angefordert werden.
#post_render-Callback eine beliebige PHP-Funktion ist (z. B. passthru).?q=user/password mit den manipulierten renderbaren Array-Parametern, damit Drupal das vergiftete Formular zwischenspeichert.form_build_id löst der PoC die Payload aus, indem er /file/ajax/name/#value/<form_build_id> mit der form_build_id im POST-Body aufruft. Wenn Drupal das zwischengespeicherte Element rendert, wird der #post_render-Callback mit vom Angreifer kontrolliertem Markup ausgeführt, was die Befehlsausführung ermöglicht.Dieses Rust-CLI konstruiert und führt die zweistufige Sequenz (Vergiften dann Auslösen) gegen eine Ziel-Drupal-7-Seite mit Anfrageparametern aus, parst die HTML-Antwort auf form_build_id und löst dann den Endpunkt file/ajax aus, um die vom Angreifer angegebene Funktion auszuführen.
Da der Client die Zertifikatsüberprüfung deaktiviert (um das ursprüngliche PoC zu spiegeln, das verify=False übergab), funktioniert das Tool auch gegen Ziele mit selbstsignierten oder anderweitig ungültigen TLS-Zertifikaten. Dieses Verhalten kann im Quellcode geändert werden, wenn stattdessen gültige Zertifikate erforderlich sein sollen.
Grundlegende Verwendung (Standardbefehl ist whoami, Standardfunktion ist passthru):
cargo run -- -u http://target.com/
Einen benutzerdefinierten Befehl und eine benutzerdefinierte Funktion ausführen:
cargo run -- -u http://target.com/ -c "whoami" -f "passthru"
Einen HTTP/S-Proxy verwenden (Format: http://127.0.0.1:8080/):
cargo run -- -u http://target.com/ -p http://127.0.0.1:8080/
CLI-Optionen Übersicht:
-u, target: URL der Ziel-Drupal-Seite (z. B. http://target.com/).-c, --command: Befehl, der auf dem Ziel ausgeführt werden soll (Standard: whoami).-f, --function: PHP-Funktion, die als Angriffsvektor verwendet werden soll (Standard: passthru).-p, --proxy: Optionale Proxy-URL, über die Anfragen geleitet werden sollen.Beispiel für den vollständigen Ablauf:
user/password-Formular, indem ein #post_render-Callback und #markup mit dem Befehl eingefügt werden.form_build_id innerhalb von form#user-pass zu finden.?q=file/ajax/name/#value/<form_build_id> mit der form_build_id, um das Rendern auszulösen und den Befehl auszuführen.Dieses Tool ist ausschließlich für Bildungszwecke und autorisierte Penetrationstests bestimmt. Verwenden Sie es verantwortungsvoll und nur auf Systemen, die Ihnen gehören oder für die Sie ausdrückliche Erlaubnis haben.