freeBuf
CVE-2022-44268:ImageMagick任意文件读取漏洞研究
2023-05-18 15:20:02
所属地 北京
ImageMagick 是一个免费的开源跨平台软件套件,用于显示、创建、转换、修改和编辑光栅图像。

Part1 漏洞状态

漏洞细节漏洞POC漏洞EXP在野利用

Part2 漏洞描述

‍漏洞名称

ImageMagick任意文件读取漏洞

CVE编号CVE-2022-44268
漏洞类型任意文件读取
漏洞等级6.5 中危 (Medium)
公开状态公开
漏洞描述

在 ImageMagick 上的 7.1.0-51 之前的版本中,存在一个信息泄露漏洞,该漏洞可用于在修改 PNG 文件时读取任意文件。

时间线

2023.01.20 提交

2023.02.06 公开披露

影响产品

ImageMagick v7.1.0-51

分析环境:Kalix64ImageMagick:7.1.0-49-PHP

Part3 漏洞复现

搭建好 ImageMagick环境,运行服务在8080端口,然后浏览器访问。

图片

生成验证文件 python ***.py  generate -o exp.png -r /etc/passwd

这里表示,漏洞利用,读取/etc/passwd 的文件内容上传验证图片

图片

保存Your image下面的图片。使用脚本解析生成的图片。得到/etc/passwd文件内容

图片

复现成功!

Part4 漏洞分析

  • 上传图像以触发图像魔术命令,例如“转换”

  • ReadOnePNGImage (coders/png.c:2164):

图片

- 读取 tEXt 块:

图片

  • SetImageProfile (MagickCore/property.c:4360)

图片

  • 检查关键字是否等于“配置文件”:

图片

  • 将文本字符串复制为第 4720 行中的文件名,并将内容保存在第4722 行:

图片

  • FileToStringInfo 将内容存储到string_info->datum, (MagickCore/string.c:1005):

图片
  • 如果提供了有效(且可访问)的文件名,则内容将返回到调用方函数 (FileToStringInfo),而 StringInfo 对象将返回到 SetImageProperty 函数,从而将 blob 保存到生成的新图像中,这要归功于函数 SetImageProfile:

图片

攻击者可以使用嵌入任意网站文件内容的下载此新图像。

Part5 修复建议

1. 检测上传文件内容;

2. 修复ImageMagick组件到v7.1.51以上版本。

本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
文章目录