
Эксплойт Proof-of-concept для уязвимости ImageMagick, позволяющей произвольное чтение файлов (CVE-2022-44268), через специально созданные текстовые блоки PNG, обеспечивающий извлечение системных файлов во время операций изменения размера изображений.
Этот репозиторий содержит доказательство концепции (POC) для уязвимости в ImageMagick (версия 7.1.0-49), широко используемой библиотеке с открытым исходным кодом для работы с изображениями. Уязвимость позволяет злоумышленнику встроить содержимое произвольного файла в изменённое изображение, когда ImageMagick обрабатывает PNG-файл.
Когда ImageMagick выполняет операции, такие как изменение размера PNG-файла, он может включить содержимое системного файла, при условии, что двоичный файл magick имеет необходимые разрешения для его чтения. Эта уязвимость возникает из-за неправильной обработки текстовых фрагментов в PNG-файлах.
Злоумышленник может воспользоваться этой уязвимостью, создав PNG-файл или используя существующий и добавив текстовый фрагмент типа (tEXt). Эти фрагменты состоят из ключевого слова и текстовой строки. В данном случае, если ключевое слово совпадает со строкой "profile" (без кавычек), ImageMagick интерпретирует сопровождающую текстовую строку как имя файла и попытается загрузить её содержимое в качестве сырого профиля. В результате, когда изменённое изображение будет загружено, оно будет содержать содержимое удалённого файла, указанного злоумышленником.
Для получения дополнительной информации смотрите статью от MetabaseQ.
Чтобы использовать Imagemagick, создайте вредоносный PNG-файл:
python3 CVE-2022-44268.py /etc/passwd # Create output.png
Затем выполните операцию изменения размера с помощью convert:
convert output.png -resize 50% leak.png
Наконец, исследуйте утёкшее изображение и преобразуйте Raw profile в шестнадцатеричный формат:
identify -verbose leak.png
# ...
Raw profile type:
2367
726f6f743a783a303a303a726f6f743a2f726f6f743a2f6269 [...]
python -c "print(bytes.fromhex('726f6f743a783a303a303a726f6f743a2f726f6f743a2f6269 [...]'))"
Примечание: Данное POC предназначено только для образовательных и информационных целей. Пожалуйста, убедитесь, что у вас есть необходимые разрешения и законные полномочия перед тестированием или использованием этого POC в какой-либо системе.