
Dies ist ein Filter-Bypass-Exploit, der zu beliebigem Datei-Upload und Remote-Code-Ausführung in class.upload.php <= 2.0.3 führt.
Dies ist ein Filter-Bypass-Exploit, der zu beliebigem Datei-Upload und Remote-Code-Ausführung führt. Das class.upload.php-Skript filtert „gefährliche Dateien und Inhalte“ und benennt sie in die txt-Dateierweiterung um. Es führt auch verschiedene Transformationen am hochgeladenen Bild durch, die normalerweise jede injizierte Nutzlast zerstören würden, selbst wenn der Dateierweiterungsfilter umgangen werden könnte.
Der Dateierweiterungsfilter ist eine Blacklist, sodass jedes Mal, wenn eine neue Erweiterung eingeführt wird (in diesem Fall phar) oder eine übersehen wurde, eine PHP-Datei hochgeladen werden kann. Der Inhalt muss jedoch weiterhin ein gültiges Bild sein und durchläuft weiterhin die Funktionen imagecreatefromjpeg und ähnliche. Zu diesem Zweck habe ich das inject.php-Skript geschrieben, das sich im Wesentlichen durch verschiedene Bilder probiert, bis es eines findet, bei dem die Nutzlast nicht durch den Prozess in class.upload.php zerstört wird. Dies ermöglicht uns effektiv einen beliebigen Datei-Upload und eine sehr heimliche Code-Ausführung, da es sich immer noch um ein gültiges Bild handelt und auf Seiten, auf denen es hochgeladen wurde, wie ein solches angezeigt wird.
Das upload.php-Skript ist der Beispielcode von verot.nets GitHub. Ich dachte, es wäre am besten, diese Schwachstelle mit ihrem eigenen Beispielcode zu demonstrieren.
user@ayu:/var/www/html# php inject.php
-=Imagejpeg injector 1.7=-
[+] Fetching image (100 X 100) from http://lorempixel.com/100/100/
[+] Jumping to end byte
[+] Searching for valid injection point
[!] Temp solution, if you get a 'recoverable parse error' here, it means it probably failed
[+] It seems like it worked!
[+] Result file: image.jpg.phar
user@ayu:/var/www/html# curl -v -o - http://localhost/images/image_resized.phar?c=uname%20-a | grep -aPo "(Linux.*GNU)"
Linux ayu 5.0.0-36-generic #39-Ubuntu SMP Tue Nov 12 09:46:06 UTC 2019 x86_64 x86_64 x86_64 GNU
Beliebiger Datei-Upload, der zu Remote-Code-Ausführung in JoomlaWorks K2 <= 2.10.1 aufgrund einer ungepatchten Version von class.upload.php führt
Ein normaler Benutzer lädt das von inject.php generierte Bild hoch, das eine einfache Nutzlast enthält. Es umgeht den Erweiterungsfilter in class.upload.php und wird nicht durch die Bildverarbeitung in der Bibliothek zerstört. Es wird wie ein normales Bild angezeigt, was subtiler ist.
Die Datei wird hochgeladen und kann als Hintertür verwendet werden, um Befehle auszuführen.