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
PrestaShop-CVE-2018-19126 — PrestaShop (1.6.x <= 1.6.1.23 oder 1.7.x <= 1.7.4.4) Back Office Remote Code Execution (CVE-2018-19126) | Kitploit
Tools/GitHubGitHub/farisv/prestashop-cve-2018-19126
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungPayload-Entwicklung
GitHubfarisv/prestashop-cve-2018-19126

PrestaShop-CVE-2018-19126

PrestaShop (1.6.x <= 1.6.1.23 oder 1.7.x <= 1.7.4.4) Back Office Remote Code Execution (CVE-2018-19126)

Repository anzeigen
3910vor 7 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

PrestaShop Back Office Remote Code Execution (CVE-2018-19126)

Dies ist der PoC für CVE-2018-19126, der mehrere Schwachstellen im PrestaShop Back Office verknüpft, um eine Deserialisierung über phar auszulösen und so eine Remotecodeausführung zu erreichen.

Voraussetzung:

  • PrestaShop 1.6.x vor 1.6.1.23 oder 1.7.x vor 1.7.4.4.
  • Back Office-Konto (Logistiker, Übersetzer, Verkäufer usw.).

PrestaShop-Versionshinweise: http://build.prestashop.com/news/prestashop-1-7-4-4-1-6-1-23-maintenance-releases/

Link zum verwundbaren Paket: https://assets.prestashop2.com/en/system/files/ps_releases/prestashop_1.7.4.3.zip

WARNUNG

NUR ZU BILDUNGSZWECKEN. VERWENDEN SIE DIESES SKRIPT NICHT FÜR ILLEGALE AKTIVITÄTEN. DER AUTOR ÜBERNIMMT KEINE VERANTWORTUNG FÜR MISSBRAUCH ODER SCHÄDEN.

Beispiel

Sie benötigen php mit der curl-Erweiterung und müssen phar.readonly = Off in der php.ini setzen, um den Exploit auszuführen.

root@kitploit:~
# Download repository
wget https://github.com/farisv/PrestaShop-CVE-2018-19126/archive/master.zip -O PrestaShop-CVE-2018-19126.zip
unzip PrestaShop-CVE-2018-19126.zip
cd PrestaShop-CVE-2018-19126-master

# Run the exploit
# Usage: php exploit.php back-office-url email password func param
php exploit.php http://127.0.0.1/admin-dev/ [email protected] 54l35m4n123 system 'cat /etc/passwd'

Beachten Sie, dass das Upload-Verzeichnis umbenannt wird und Sie die bösartige Phar-Datei nicht erneut hochladen können, wenn der Ordnername nicht zurückgesetzt wird. Möglicherweise möchten Sie eine Reverse-Shell ausführen, um eine persistente RCE zu erhalten, oder den Befehl zum erneuten Umbenennen des Ordners in Ihr Payload aufnehmen (Sie müssen den Pfad zum Upload-Verzeichnis kennen).

Erklärung

Wir können eine implizite Deserialisierung mit dem phar-Wrapper über die getimagesize()-Funktion in [back-office-path]/filemanager/ajax_calls.php erreichen.

https://github.com/PrestaShop/PrestaShop/commit/4c6958f40cf7faa58207a203f3a5523cc8015148#diff-0f03d65f71cdd8eeb12913a97a6b8945

root@kitploit:~
case 'image_size':
    if (realpath(dirname(_PS_ROOT_DIR_.$_POST['path'])) != realpath(_PS_ROOT_DIR_.$upload_dir)) {
        die();
    }
    $pos = strpos($_POST['path'], $upload_dir);
    if ($pos !== false) {
        $info = getimagesize(substr_replace($_POST['path'], $current_path, $pos, strlen($upload_dir)));
        echo json_encode($info);
    }

Wir müssen einen Weg finden, damit getimagesize() mit der phar-Wrapper-URL als Parameter aufgerufen wird, indem wir bestimmte Prüfungen umgehen.

Die erste Prüfung mit realpath() ist recht streng.

root@kitploit:~
if (realpath(dirname(_PS_ROOT_DIR_.$_POST['path'])) != realpath(_PS_ROOT_DIR_.$upload_dir)) {
    die();
}

Die Variable $upload_dir stammt aus config.php, die standardmäßig mit $upload_dir = Context::getContext()->shop->getBaseURI().'img/cms/'; gesetzt ist. Wir können phar://[string] nicht in $_POST['path'] verwenden, da realpath(dirname(_PS_ROOT_DIR_.$_POST['path'])) false zurückgibt, weil es nicht existiert.

Es existiert eine weitere Schwachstelle (CVE-2018-19125), die es dem Benutzer ermöglicht, $upload_dir zu löschen oder umzubenennen. Wenn das Verzeichnis $upload_dir nicht existiert, gibt realpath(_PS_ROOT_DIR_.$upload_dir) false zurück und wir können diese Prüfung umgehen, da realpath(dirname(_PS_ROOT_DIR_.$_POST['path'])) ebenfalls false ist. Diese Schwachstelle wurde während des Code-Reviews entdeckt, als wir nach einem Weg zur Umgehung suchten :)

Kurz gesagt, erlaubt CVE-2018-19125, dass der path-Parameter beim Aufruf der Aktion delete_folder oder rename_folder in execute.php leer sein kann, sodass die Anwendung stattdessen $upload_dir löscht/umbenannt.

Die zweite Prüfung ist einfach, der $_POST['path'] muss $upload_dir enthalten.

root@kitploit:~
$pos = strpos($_POST['path'], $upload_dir);
if ($pos !== false) {

Wir können einfach /img/cms/ in der phar-URL nach dem Dateipfad zur phar-Datei anhängen, da die Deserialisierung auch dann stattfindet, wenn das Verzeichnis im phar-Archiv nicht existiert. substr_replace($_POST['path'], $current_path, $pos, strlen($upload_dir)) ersetzt lediglich /img/cms/ durch den absoluten Pfad ($current_path) dieses Ordners (z.B. /var/www/html/img/cms/, wenn die Anwendung in /var/www/html/ installiert ist).

Da wir die getimagesize()-Funktion steuern können, um eine phar-Wrapper-URL zu verarbeiten, müssen wir die bösartige Phar-Datei auf den Server hochladen. Standardmäßig erlaubt FileManager in PrestaShop nur 'jpg', 'jpeg', 'png', 'gif', 'bmp', 'tiff', 'svg', 'pdf', 'mov', 'mpeg', 'mp4', 'avi', 'mpg', 'wma', 'flv' und 'webm' als Erweiterung. Wir können einfach das Payload erstellen und mit einer gültigen Erweiterung speichern. Wir können die Monolog-Gadget-Ketten von PHPGGC (https://github.com/ambionics/phpggc/blob/master/gadgetchains/Monolog/RCE/1/) verwenden, da sie von PrestaShop verwendet werden.

Endgültige Exploit-Schritte:

  1. Erstellen Sie die bösartige Phar-Datei und speichern Sie sie mit einer gültigen Erweiterung (z.B. phar.pdf).
  2. Laden Sie die phar.pdf in den FileManager hoch.
  3. Lösen Sie die Schwachstelle aus, um das Upload-Verzeichnis in einen anderen Namen umzubenennen (z.B. renamed).
  4. Rufen Sie die image_size-Aktion mit phar://../../img/renamed/phar.pdf/img/cms/ als path-Parameter auf.
  5. Das Deserialisierungs-Payload in phar.pdf wird ausgeführt.

Das Skript exploit.php führt alle Schritte automatisch aus.

Denken Sie daran, dass das Upload-Verzeichnis in Schritt 3 umbenannt wird und Sie die bösartige Phar-Datei nicht erneut hochladen können, wenn der Ordnername nicht zurückgesetzt wird. Möglicherweise möchten Sie eine Reverse-Shell als Payload verwenden oder den Befehl zum erneuten Umbenennen des Ordners in das Payload aufnehmen (Sie müssen den Pfad zum Upload-Verzeichnis kennen).

Tool herunterladen