
# CVE-2023-46474 기술 문서 및 개념 증명 PMB <=7.5.3의 무제한 파일 업로드를 통한 원격 코드 실행 취약점에 대한 기술 문서 및 개념 증명으로, 재현 절차와 수정 지침을 포함합니다.
CVE-2023-46474
| CVSS v3.1 Vector | CVSS v3.1 Score |
|---|---|
| AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H | 9.1 |
Devensys Cybersecurity의 Marcus Reynaud가 침투 테스트 과정에서 발견함
pmb/admin/convert/start_import.php 스크립트는 Unrestricted File Upload 유형의 취약점에 노출되어 있으며, 이를 통해 서버에서 임의 코드 실행이 가능합니다.

공격자는 이 기능을 사용하기 위해 먼저 플랫폼에 대한 관리자 접근 권한을 획득해야 합니다.
PHP 스크립트는 사용자가 업로드한 파일의 확장자를 검사하지 않으며, 확장자를 유지한 채 웹 서버가 접근 가능한 디렉터리에 파일을 저장합니다. 따라서 PHP 스크립트를 업로드한 후, 업로드된 위치를 방문하여 실행하는 것이 가능합니다.
다음과 같은 방법으로 이 동작을 재현할 수 있습니다:
시스템에서 실행하려는 코드가 포함된 .php 파일을 전송합니다. 여기서는 시스템 명령어 id를 실행합니다.

응답을 확인하면 서버에 기록된 파일 이름을 얻을 수 있습니다.

코드를 실행하려면 브라우저로 /pmb/temp/[파일_이름].php에 접속하기만 하면 됩니다.

명령어의 결과가 서버에서 반환됩니다.
이 취약점의 원인은 파일을 디스크에 쓰기 전에 파일에 대한 검증이 부족하기 때문입니다:

이 취약점을 해결하려면 사용자가 업로드한 파일에 대한 확장자 검증을 구현해야 합니다.
특정 파일 확장자만 허용하는 화이트리스트 시스템을 사용할 것을 권장합니다.
또한 확장자를 생략한 채 파일을 디스크에 기록할 수도 있습니다(임시 저장소라는 점을 고려할 때).
파일을 웹 서버의 범위 밖에 있는 디렉터리에 기록하는 것도 가능하며, 이 경우 파일이 인터넷에서 접근 불가능해져 코드가 실행될 수 없습니다.
7.5.4 이상 버전은 취약하지 않으며, 해당 스크립트는 완전히 재작성되었습니다.