freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

ImageMagick 任意文件读取漏洞(CVE-2022-44268)浅析
Artio 2023-03-03 10:04:36 219171
所属地 北京

1、漏洞介绍

ImageMagick 是一款免费软件,以随时可用的二进制分发版或源代码形式提供,您可以在开放和专有应用程序中使用、复制、修改和分发。可以使用ImageMagick®创建、编辑、合成或转换数字图像。它可以读取和写入多种格式(超过 200 种)的图像。

远程攻击者可通过制作恶意的PNG文件并上传至受影响的使用ImageMagick 解析图片的网站来利用这个漏洞,当网站或应用使用 ImageMagick 对恶意的 PNG 文件进行解析时将触发这两个漏洞,从而造成敏感信息泄露或拒绝服务。

2、漏洞复现

使用vulhub启动环境

使用命令生成恶意图片poc

./poc.py generate -o poc.png -r /etc/passwd

上传恶意图片

image

使用命令读取解析后的图片

./poc.py parse -i 63e0d0cc354ef.png

image

复现这块就不多说了

3、漏洞分析

分析漏洞之前我们先来了解下PNG图片的格式。

PNG图片是由PNG文件头和多个数据块(chunk)组成:

  • 文件头,固定8字节长度,0x89504E470D0A1A0A

  • 数据块,存在多个,每个数据块有下面这四部分组成:

    1. 整个数据块的长度(Length),4字节的uint32类型

    2. 数据块类型(Chunk Type Code),4字节的字符串类型,由英文字母组成

    3. 数据(Chunk Data),数据库中保存的实际数据

    4. 校验码(CRC)

常见的四种类型的数据块:

  • 文件头数据块(IHDR),其中包含图片信息,作为第一个数据块,有且仅有一个

  • 调色板数据块(PLTE)

  • 图像数据块(IDAT),存储实际的图片数据,可以有多个

  • 图像结束数据(IEND),作为最后一个数据块,表示PNG数据流结束

除了上述4种常见的数据块以外,还有一些不常见的数据块,我们这次的漏洞就出现在tEXt这个数据块中。tEXt数据块并没有规定具体作用,只说可以用于保存未压缩的图片属性,其格式是key\0value,这个key是属性的名字,value是属性的值,中间由\0字符分隔。

可以看到我们复现过程中profile和文件名之间存在00字符:

image

在2017年发布的PNG 1.2 Specification, Version 1.5.0中,PNG图片格式新增了一个eXIf数据块,专门用于保存图片的Exif数据;而在此之前,PNG标准规范中也没有规定Exif数据要保存在哪,于是ImageMagick就将Exif数据保存在tEXt数据块中。

这次出现问题的就是tEXt数据块中属性名是profile的属性。

接下来来看看代码:

上传图像以触发ImageMagick命令

image

读取tEXt数据块

image

image

判断property变量是否等于profile

image

将profile的值的字符串复制为文件名,并保存

image

FileToStringInfo函数将读取文件内容并将内容保存到string_info->datum

image

读取文件后文件内容被FileToStringInfo读取并返回,然后调用SetImageProperty函数将之前读取的文件内容二进制储存到新生成的图片中

image

下载图片并读取图片则可以看到读取的文件内容。

# 漏洞 # web安全 # 漏洞分析
本文为 Artio 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
Artio LV.4
这家伙太懒了,还未填写个人描述!
  • 14 文章数
  • 3 关注者
利用CDN进行攻击以及检测思路
2025-01-06
CSDN挂马事件及其检测思路
2025-01-02
浅谈DNS重绑定攻击
2023-05-19
文章目录