
CVE-2024-23724에 대한 개념 증명 익스플로잇: Ghost CMS에서 악성 SVG 프로필 사진 업로드를 통한 권한 상승. 자동화된 설정 및 공격 스크립트 포함.
취약점을 테스트하려면 두 개의 계정이 필요합니다: 관리자(소유자) 역할의 계정과 기여자 역할의 계정이 필요합니다. Ghost CMS에서는 먼저 관리자 패널에 접근하여 소유자 계정을 만든 다음, 해당 계정에서 기여자를 초대하여 자신의 계정을 만들도록 해야 합니다. 그러나 Ghost에서 기여자를 초대하는 유일한 방법은 이메일로 초대 링크를 보내는 것이며, 이는 기여자 계정으로 이메일을 보내기 위해 이메일 전송 서비스가 필요합니다. 편의를 위해 Mailgun 계정을 만들고, Ghost에 기여자를 추가한 후, 그 상태의 데이터베이스 덤프 파일을 생성했습니다. Docker Compose 구성에서는 먼저 덤프에서 데이터베이스를 복원한 후 Ghost를 시작하도록 하여, 이 취약점을 테스트하기 위해 이메일 전송 서비스가 필요하지 않습니다. 그러나 제공된 데이터베이스 덤프를 사용하지 않고 깨끗한 설치를 시작하려면 manual-setup 폴더에 있는 Docker Compose를 사용하여 깨끗한 Ghost 설치를 시작할 수 있습니다. 아래는 Mailgun (사용한 이메일 전송 서비스)을 설정하고 Ghost와 함께 작동하도록 하는 단계입니다.
이 설치에서는 로그인에 사용할 관리자 및 기여자 자격 증명이 다음과 같습니다.
시작하려면 Mailgun 계정을 만들어야 합니다. 계정을 만든 후 SMTP 자격 증명을 얻으십시오. 자격 증명을 얻은 후 config.example.json 파일에 표시된 것과 동일한 형식으로 config.development.json 파일에 넣으십시오.
다음은 단계별 가이드입니다.
config.example.json 파일을 복사하여 config.development.json으로 이름을 바꿉니다.config.development.json 파일에 SMTP 자격 증명을 입력합니다. 이렇게 하면 개발 환경이 Mailgun을 통해 이메일을 보내도록 올바르게 구성됩니다.선택한 설치를 다음 명령으로 시작할 수 있습니다.
docker-compose up
공격을 테스트하려면 다음 단계를 따르세요.
python generate-malicious-svg.py -u [USERNAME] -p [PASSWORD] -t http://localhost
자동 설치의 경우 명령은 다음과 같습니다.
python generate-malicious-svg.py -u [email protected] -p ZtXfMq2FaRHGm@! -t http://localhost
이 명령은 현재 디렉터리에 tenant-takeover.svg라는 이름의 악성 SVG 파일을 생성합니다.
생성한 기여자 계정의 자격 증명을 사용하여 Ghost 관리 인터페이스에 로그인합니다. 이를 위해 http://localhost:3001/ghost를 방문하여 기여자 계정으로 로그인합니다.
화면 왼쪽 하단의 프로필 사진을 클릭한 다음 "Your profile" 버튼을 클릭하여 프로필 수정 페이지로 이동합니다.
프로필 아이콘을 클릭하여 프로필 사진을 변경합니다. 1단계에서 생성한 악성 SVG 파일을 선택합니다.
"Save & close" 버튼을 클릭하여 변경 사항을 저장합니다. 페이지를 새로고침하여 프로필 사진이 변경되었는지 확인할 수 있습니다.
이제 기여자 계정에서 로그아웃하고 관리자 계정으로 로그인할 수 있습니다. http://localhost:3001/ghost/#/settings/staff?tab=contributors에서 기여자의 프로필 사진이 변경된 것을 볼 수 있습니다. 프로필 사진을 마우스 오른쪽 버튼으로 클릭하고 새 탭에서 이미지를 열면 공격이 트리거됩니다. 이제 http://localhost:3001/ghost/#/settings/staff로 돌아가면 기여자가 블로그의 소유자가 되었고 당신은 관리자가 되었음을 확인할 수 있습니다.
CVE를 구현하는 전체 과정과 필요한 단계를 자세히 설명하는 동영상을 제작했습니다. 이 동영상은 당사의 접근 방식과 수행된 작업을 더 잘 이해할 수 있는 시각적 가이드 역할을 합니다.
동영상 링크: 여기를 클릭하여 동영상을 시청하세요
프로젝트에 대한 전체 개요와 수행된 기술적 단계를 확인하려면 이 동영상을 참조하세요.