
Proof-of-Concept-Exploit für CVE-2024-34832: Directory Traversal im CubeCart-Adminpanel, das über einen manipulierten `_g`-Parameter und hochgeladene `.inc.php`-Dateien zu Remote-Codeausführung führt.
Im Admin-Panel werden Parameter wie _g und node verwendet, um den Pfad zu konstruieren, um .inc.php-Dateien einzubinden und PHP-Code auszuführen. Ein böswilliger Benutzer mit der Möglichkeit, .inc.php-Dateien irgendwo auf dem Server hochzuladen, kann eine Path-Traversal-Schwachstelle ausnutzen, um diese einzubinden und schädlichen Code auszuführen.
.inc.php irgendwo auf dem Server hochzuladen (z.B. Zugang zu FTP, eine andere Anwendung auf demselben Server, die Datei-Uploads erlaubt, neue Schwachstellen in CubeCarts Upload-Funktionen usw.).Nehmen wir an, auf demselben Server, auf dem CubeCart installiert ist, läuft ein FTP-Server und ein Benutzer kann Dateien an einen bestimmten Ort hochladen. In unserem Fall nehmen wir an, dass alles, was per FTP hochgeladen wird, in /opt/FTP_Example landet.
Nehmen wir weiterhin an, dass dieser Benutzer eine Datei mit dem Namen path_traversal.inc.php per FTP hochgeladen hat und ihr Inhalt der folgende PHP-Code ist: <?php system('whoami;id;hostname;ls') ?>.

Zunächst besteht keine Gefahr beim Hochladen einer solchen Datei, da sie weder ausgeführt wird noch sich im Verzeichnis eines Webservers – wie Apache – befindet, der sie ausführen könnte.
Dieser selbe Benutzer kann sehr eingeschränkte oder sogar gar keine Berechtigungen im CubeCart-Admin-Panel haben, kann sich aber trotzdem anmelden. Zum Beispiel haben wir einen Benutzer namens julio erstellt, der keinerlei Berechtigungen hat.

Nachdem wir uns als julio in der Anwendung angemeldet haben, begannen wir mit dem Testen der Parameter _g und node. Wir stellten fest, dass diese Parameter automatisch .inc.php an das Ende eines Pfades anhängen und scheinbar include() auf diese Datei anwenden, um PHP-Code auszuführen.
Wie unten zu sehen, wird die folgende Fehlermeldung zurückgegeben, wenn die Datei nicht gefunden wird.

Wir fragten uns, ob wir den Pfad traversieren und eine .inc.php-Datei in einem anderen Verzeichnis auf dem Server erreichen könnten – wie unserem FTP-Ordner.
Da wir eine Datei namens path_traversal.inc.php im Ordner /opt/FTP_Example hatten, versuchten wir, viele /../../../ hinzuzufügen, bis wir das Stammverzeichnis erreichten, dann fügten wir /opt/FTP_Example/path_traversal hinzu und die Anwendung fügte automatisch .inc.php an das Ende des Pfades an.
Wie unten zu sehen, wurde der Code erfolgreich ausgeführt.

Wir stellten fest, dass der Parameter node tatsächlich Schrägstriche (/) escaped, _g jedoch nicht. Alle Parameter, die zum Konstruieren von Pfaden verwendet werden, sollten Schrägstriche escapen, um Path-Traversal-Schwachstellen zu verhindern.
Obwohl es Voraussetzungen für die erfolgreiche Ausnutzung dieser Schwachstelle gibt – was das Risiko erheblich reduziert – profitiert sie dennoch von einem Patch. Sie können in den Referenzen nachlesen, wie die Autoren von CubeCart diese Schwachstelle behoben haben, und die Korrekturen auf Ihre eigene CubeCart-Instanz anwenden, bis eine offizielle Version mit bereits enthaltenem Patch erscheint.