
MarkUs 과제 구성 업로드에서의 Zip Slip 취약점 PoC
MarkUs는 학생 과제 채점을 위한 웹 애플리케이션입니다.
MarkUs의 과제 구성 ZIP 업로드는 경로 순회(Zip Slip)에 취약하여, 임의 파일 쓰기 및 이를 통한 원격 코드 실행이 가능합니다.
아카이브 항목 이름을 사용하여 파일 시스템 경로를 구성할 때, 결과 경로가 의도된 추출 디렉터리 내에 있는지 확인하지 않습니다. 인증된 강사는 순회 시퀀스를 포함한 조작된 아카이브를 업로드하여 해당 디렉터리 외부에 파일을 쓸 수 있습니다.
영향은 애플리케이션 프로세스의 파일 시스템 권한에 따라 달라집니다. 실행 가능한 애플리케이션 파일을 덮어쓰면 원격 코드 실행으로 이어질 수 있습니다.
poc.py를 사용하여 필요한 픽스처가 포함된 zip-slip-check.zip을 생성합니다.
강사로 MarkUs에 로그인하고, 아무 과목의 Assignments 페이지로 이동하여 "Upload the configuration zip file"을 클릭한 후 아카이브를 제출합니다.
페이로드의 콜백 주소에서 접근 가능한 환경에서 리스너를 시작합니다:
nc -lvnp 8080 -vvv
학생으로서 MarkUs 프로필에 공개 SSH 키를 추가한 다음, 아무 과목 저장소에 대해 Git over SSH 작업을 트리거합니다.
git clone ssh://markus@<host>:2222/~/csc123
MarkUs <= 2.9.0.
버전 2.9.1에서 수정되었습니다.
수정 사항이 포함된 지원되는 MarkUs 릴리스로 업그레이드하십시오. 애플리케이션 프로세스의 파일 시스템 권한을 제한하면 영향을 줄일 수 있습니다.