问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
ImageMagick任意文件读取漏洞(CVE-2022-44268)
# ImageMagick任意文件读取漏洞(CVE-2022-44268) ImageMagick是一款使用量很广的图片处理程序,很多厂商都调用了这个程序进行图片处理,包括图片的伸缩、切割、水印、格式转换等等。 在...
ImageMagick任意文件读取漏洞(CVE-2022-44268) =================================== ImageMagick是一款使用量很广的图片处理程序,很多厂商都调用了这个程序进行图片处理,包括图片的伸缩、切割、水印、格式转换等等。 在ImageMagick 7.1.0-51版本及以前,其处理PNG文件的代码中存在一处功能,会导致转换图片时读取到当前操作系统上的任意文件,并将文件内容输出在图片内容中。 参考链接: - <https://www.metabaseq.com/imagemagick-zero-days/> - <https://github.com/ImageMagick/Website/blob/main/ChangeLog.md#710-52---2022-11-06> 漏洞环境 ---- 执行如下命令启动一个Web服务器,这个服务器的功能是将用户上传的任意图片缩小成50x50的PNG图片。 ```php docker compose up -d ``` 服务启动后,访问`http://your-ip:8080`可以看到图片上传框: ![](https://shs3.b.qianxin.com/butian_public/f100244e8d098eaf0b1a7d5e3d739e869a6622b686bb9.jpg) [后端服务](index.php)的代码十分简单: ```php $newname = uniqid() . '.png'; shell_exec("convert -resize 50x50 {$_FILES['file_upload']['tmp_name']} ./{$newname}"); ``` 漏洞复现 ---- 利用这个漏洞,需要先准备一个恶意PNG文件,文件内容中包含我们准备读取的文件路径: 可以使用[poc.py](poc.py)来生成这个图片: ```php ./poc.py generate -o poc.png -r /etc/passwd ``` > 执行poc.py前请安装[PyPNG](https://pypng.readthedocs.io/en/latest/):`pip install pypng` 如果你使用[010editor](https://en.wikipedia.org/wiki/010_Editor)查看这个图片,可以看到其中包含一个类型是`tEXt`的chunk,其中包含我们的Payload `profile=/etc/passwd`: ![](https://shs3.b.qianxin.com/butian_public/f293957f4a1181207d5eacf7a9727b34b6a6e9f6412d9.jpg) 接着,我们将这个图片上传到目标服务中: ![](https://shs3.b.qianxin.com/butian_public/f5241507c96bf0867ac86e15f1d2331c29c31d6e97eea.jpg) 下载服务处理后生成的图片,使用[poc.py](poc.py)提取出其中所有内容: ```php ./poc.py parse -i out.png ``` ![](https://shs3.b.qianxin.com/butian_public/f265900a83b556ee2e000f3b63015e6f4bbb29542b862.jpg) 可以看到,已经提取出`/etc/passwd`文件的内容,这部分内容是由ImageMagick在处理旧图片时读取并写入到新图片中。
发表于 2024-07-12 18:50:55
阅读 ( 1196 )
分类:
Web应用
0 推荐
收藏
0 条评论
请先
登录
后评论
带头大哥
456 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!