
파일 업로드 취약점이 있는 Pluck CMS 4.7.7-dev2 이전 버전에 영향을 미치는 CVE-2018-11736 PoC 익스플로잇
면책 조항 ⚠️: 이 익스플로잇은 주로 프로그래밍 입문 학습 목적으로 Rust로 개발되었습니다. 기술적 엄격함이나 관용적인 코드 패턴이 부족할 수 있음을 양해 부탁드립니다. 또한 이는 제가 발견한 것이 아니며, 공식 보고서를 참고하여 작성했습니다.
Pluck CMS 4.7.7-dev2 미만 버전에 영향을 미치는 CVE-2018-11736에 대한 PoC 익스플로잇입니다. 취약점은 /data/inc/images.php에 존재하며, 공격자가 임의의 파일을 업로드할 수 있게 합니다. image/jpeg MIME 유형으로 위장한 악성 .htaccess 파일을 업로드하면 웹 서버가 .jpg 파일을 PHP 스크립트로 해석하도록 강제하여 임의의 PHP 코드 실행이 가능해집니다.
main.rs를 컴파일하려면 Cargo가 설치되어 있어야 합니다.
cargo build
그리고 대상 Pluck CMS 인스턴스의 유효한 인증된 세션 쿠키가 필요합니다:
./CVE-2018-11736 -h
CVE-2018-11736 exploit. Uploads a malicious .htaccess to force the web server to interpret .jpg files as PHP scripts, leading to Remote Code Execution (RCE)
Usage: CVE-2018-11736 --cookie <COOKIE> --base-url <BASE_URL> --hta-path <HTACCESS> --image-path <IMAGE>
Options:
-c, --cookie <COOKIE> Session Cookie (Once you have logged in succesfully). Format: xxxxxxxxxxxx
-u, --base-url <BASE_URL> Base URL (e.g. http://localhost)
-H, --hta-path <HTACCESS> Path to the .htaccess file
-i, --image-path <IMAGE> Path to the fake image file
-h, --help Print help
-V, --version Print version
재현 가능성과 안전한 테스트를 보장하기 위해 Docker를 사용하여 취약한 Pluck CMS v4.7.4-dev5 인스턴스를 배포할 수 있습니다. 배포하려면 취약한 버전의 .zip 파일을 다운로드해야 합니다:
wget https://github.com/pluck-cms/pluck/archive/refs/tags/4.74-dev5.zip
그런 다음 docker 파일과 동일한 디렉토리에서 다음 명령을 실행합니다:
docker-compose up -d
웹 애플리케이션은 http://localhost:8080에서 접근할 수 있습니다. 컨테이너 내부에서 TTY를 실행하려면:
docker exec -it pluck-cms bash
다음은 PoC가 실제로 실행되는 모습으로, 악성 설정 업로드와 RCE를 보여줍니다.