
PluckCMS 4.7.20 Zip Slip 취약점으로 인한 RCE
이 보고서는 PluckCMS에서 발견된 치명적인 보안 취약점에 대해 설명합니다. 이 취약점을 통해 인증된 공격자가 Zip Slip 공격 벡터를 사용하여 원격 코드 실행을 달성할 수 있습니다. 이 취약점은 모듈 업로드 기능에 존재하며, 악성 PHP 코드가 포함된 특수하게 제작된 ZIP 아카이브를 업로드하여 악용할 수 있습니다.
4.7.20
취약점 유형: Zip Slip으로 인한 원격 코드 실행 (RCE)
영향을 받는 구성 요소: 모듈 관리 시스템 (옵션 → 모듈 관리)
공격 벡터: 악성 ZIP 파일 업로드
인증 필요: 예 (관리자 패널 접근)
심각도: 치명적
이 취약점은 모듈 업로드 과정에서 ZIP 아카이브 내용에 대한 적절한 검증 및 정화 부족으로 인해 발생합니다. PluckCMS는 관리자가 ZIP 형식의 모듈을 업로드할 수 있도록 허용하지만, 아카이브 내의 파일 경로를 제대로 검증하지 않습니다. 이를 통해 공격자는 경로 탐색 취약점을 악용하는 악성 ZIP 파일을 제작하여 서버 파일 시스템에 임의의 파일을 배치할 수 있습니다.
ZIP 아카이브가 추출될 때, 애플리케이션은 추출된 파일이 의도된 디렉터리 구조 내에 유지되는지 확인하지 않습니다. 공격자는 이 취약점을 이용하여 악성 PHP 파일을 웹 접근 가능 위치에 작성하고, 이후 서버에서 임의의 코드를 실행할 수 있습니다.
취약점은 다음 환경을 사용하여 재현할 수 있습니다:
git clone https://github.com/pluck-cms/pluck.git
cd pluck
ddev config --project-type=php --docroot=.
ddev start
호스팅 URL : http://pluck.ddev.site
테스트 중 명령 실행 기능을 입증하는 개념 증명 페이로드가 사용되었습니다. 이 페이로드는 PHP의 시스템 실행 함수를 활용하여 운영 체제 명령을 실행합니다.
<?php
$fn = "sys" . "tem";
(string) $fn("id");
?>
이 취약점이 성공적으로 악용되면 관리자 접근 권한이 있는 인증된 공격자가 다음을 수행할 수 있습니다:
이 취약점은 관리자 인증이 필요하지만, 시스템 전체를 장악할 수 있는 직접적인 경로를 제공하므로 치명적인 보안 위험을 나타냅니다.