ImageMagick漏洞在Wordpress4.5.1上面的利用

0x00 ImageMagick漏洞分析

关于ImageMagick的漏洞的详细分析,phith0n已经在wooyun上面的ImageNagick漏洞分许已经对这个漏洞进行了详细地说明。我这篇文章主要是针对于ImageMagick漏洞在Wordpress上面的远程命令执行来进行说明的。

0x01 ImageMagick在wordpress4.5.1中的利用

当然ImageMagick如何在wordpress4.5.1上面利用,也有人写了一篇很详细的说明。具体可以参考这篇文章。而我的实验也是基于上面的这篇博文来进行试验的。但是本文会主要说明在上面这篇文章中作者没有进行详细说明的地方来进行解释以及我自己的思考。

0x02 ImageMagick在wordpress4.5.1上面的实践

确保ImageMgacik已经安装

wordpress4.5.1中默认是使用ImageMagick这个库来处理图片的,但是前提是必须在你的服务器(本文中的服务器指的都是Linux服务器)上面有安装php的imageick的扩展,这一点非常重要。之前我只是在我的服务器上面安装了ImageMagick这个库,但是我没有安装imageick这个库,导致我始终无法利用成功。至于如何在服务器上面安装这个库,安装imagick扩展有很详细地说明。如果使用的服务器是debain或者是ubuntu,那么可以用apt-get的方式来进行安装而不是编译源代码的方式进行安装。

触发ImageMagick扩展的执行

从ricterz的这篇文章中,可以看出需要知道ImageMagick在wordpress中的执行点,这样才能够触发这个漏洞。最后通过发现,可以在编辑图片的时候来触发这个漏洞。具体的实施方法也是十分的简单。其实主要就是分为3个步骤。
步骤一:编辑正常的图片,得到编辑之后的请求链接。
其实这个时候wordpress后台就是利用ImageMagick来对这图片进行处理,因为这是一个正常的图片,所以并没有什么问题。而得到的这个连接,就是用来触发ImageMgacik来处理这个图片的连接。

步骤二:编辑带有exp的图片,得到编辑之后的请求链接。
由于在exp.jpg中写入的是一段恶意代码,不是图片信息,导致在编辑的时候无法处理这张图片,也就无法触发ImageMagick来进行处理。

步骤三: 由于wordpress无法识别exp.jpg的图片,所以这也是为什么我们要处理一张正常的图片的原因。处理了正常图片的请求中,就有处理ImageMagick的链接,就是在步骤一中取到的链接地址。将正常连接中的_ajax_nonce和postid用exp.jpg中的连接中的once和postid替。具体如下:

以上就是处理正常图片的时候一个链接,将其中的nonce和postid换成了exp.jpg中的nonce和postid即可。然后访问这个处理之后的链接,就会触发wordpress中的ImageMagick来处理这个exp
.jpg的请求了,这样就会导致远程命令执行了。如下:

远程命令执行的平台

就目前网上所有的exp看来,所有的命令执行好像都是基于linux服务器来考虑的,所以所执行的命令都是linux上面的命令。那么如果读者要进行这个实验的话,也要确保你自己的服务器是一个Linux服务器,这样才能够保证你的命令能够在服务器上面执行。

0x03如何有效的利用ImageMagick

出现了一个这样的漏洞,从一个程序员的角度出发,第一时间想的是自己是否有使用到这个库,如果使用了应该如何修复。从白帽子的角度出发,则想的是我该如何能够对网站进行大规模的分析,判断是否存在这个漏洞。然而就目前看来,我自己找了几个网站来进行测试,均没有成功,所以我认为要想成功实施这个漏洞还是比较的困难的,当然也说明了我的水平实在是有限。
由于这是一个图片处理的漏洞,那么在进行测试的时候就需要上传一个exp.jpg来进行测试,这个工作显然是无法通过程序来自动化完成的,也就无法进行漏洞的自动化扫描了。对于这个漏洞的利用也不是完全没有显示的,例如对于wordpress来说,需要具有Author的权限才能够进行攻击,而Discuz也是无法通过直接上传一个图片来进行利用的,wooyun上面的很多漏洞,我认为还是大部分的白帽子进行手动地测试找出来的。所以我得出的结论是,这虽然是一个命令执行的漏洞,但是想进行自动化的漏洞扫描或者是找出通用的程序的使用漏洞还是比较的困难的。即便如此,对于这个漏洞,程序员还是要加以防范。