位置: 编程技术 - 正文

深入浅析ImageMagick命令执行漏洞(imagelearning)

编辑:rootadmin

推荐整理分享深入浅析ImageMagick命令执行漏洞(imagelearning),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:image-making,imagelearning,image impression imagination,image impression imagination,image imagine imagination,image imagine imagination,imagelearning,image imagine imagination,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

什么是ImageMagick?

ImageMagick是一个功能强大的开源图形处理软件,可以用来读、写和处理超过种的图片文件,包括流行的JPEG、GIF、 PNG、PDF以及PhotoCD等格式。使用它可以对图片进行切割、旋转、组合等多种特效的处理。

由于其功能强大、性能较好,并且对很多语言都有拓展支持,所以在程序开发中被广泛使用。许多网站开发者喜爱使用ImageMagick拓展来做web上的图片处理工作,比如用户头像生成、图片编辑等。

漏洞描述

ImageMagick是一款开源图片处理库,支持PHP、Ruby、NodeJS和Python等多种语言,使用非常广泛。包括PHP imagick、Ruby rmagick和paperclip以及NodeJS imagemagick等多个图片处理插件都依赖它运行。当攻击者构造含有恶意代码得图片时,ImageMagick库对于HTTPPS文件处理不当,没有做任何过滤,可远程实现远程命令执行,进而可能控制服务器。

影响程度

攻击成本:低

危害程度:高

影响范围:ImageMagick 6.9.3-9以前的所有版本

漏洞分析

命令执行漏洞是出在ImageMagick对https形式的文件处理的过程中。

ImageMagick之所以支持那么多的文件格式,是因为它内置了非常多的图像处理库,对于这些图像处理库,ImageMagick给它起了个名字叫做”Delegate”(委托),每个Delegate对应一种格式的文件,然后通过系统的system()命令来调用外部的lib进行处理。调用外部lib的过程是使用系统的system命令来执行的,导致命令执行的代码。

ImageMagick委托的默认配置文件: /etc/ImageMagick/delegates.xml

具体代码请参考:Github-ImageMagick

我们定位到https委托得那一行:

可以看到,command定义了它对于https文件处理时带入system()函数得命令:"wget" -q -O "%o" "https:%M"。

wget是从网络下载文件得命令,%M是一个占位符,它得具体定义在配置文件中如下:

深入浅析ImageMagick命令执行漏洞(imagelearning)

可以看到%m被定义为输入的图片格式,也就是我们输入的url地址。但是由于只是做了简单的字符串拼接,没有做任何过滤,直接拼接到command命令中,所以我们可以将引号闭合后通过"|",”`”,”&”等带入其他命令,也就形成了命令注入。

比如我们传入如下代码:

则实际得system函数执行得命令为:

这样,ls -al命令成功执行。

漏洞利用

这个漏洞得poc由老外给出得,如下:

push和pop是用于堆栈的操作,一个进栈,一个出栈;

viewbox是表示SVG可见区域的大小,或者可以想象成舞台大小,画布大小。简单理解就是根据后面得参数选取其中得一部分画面;

fill url()是把图片填充到当前元素内;

在其中我们使用了fill url()的形式调用存在漏洞的https delegate,当ImageMagick去处理这个文件时,漏洞就会被触发。

附:ImageMagick默认支持一种图片格式,叫mvg,而mvg与svg格式类似,其中是以文本形式写入矢量图的内容,允许在其中加载ImageMagick中其他的delegate(比如存在漏洞的https delegate)。并且在图形处理的过程中,ImageMagick会自动根据其内容进行处理,也就是说我们可以将文件随意定义为png、jpg等网站上传允许的格式,这大大增加了漏洞的可利用场景。

利用过程:

创建一个exploit.png文件,包含以下内容:

执行命令:convert exploit.png 1.png(后面的是convert的参数)

漏洞修复

升级到最新版本

配置/etc/ImageMagick/policy.xml的方式来禁止https、mvg这些delegate,或者直接在配置文件删除相应的delegate

以上所述是小编给大家介绍的ImageMagick命令执行漏洞的知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对积木网网站的支持!

使用Python脚本实现批量网站存活检测遇到问题及解决方法 做渗透测试的时候,有个比较大的项目,里面有几百个网站,这样你必须首先确定哪些网站是正常,哪些网站是不正常的。所以自己就编了一个小脚本

Pyhton中单行和多行注释的使用方法及规范 前言注释可以起到一个备注的作用,团队合作的时候,个人编写的代码经常会被多人调用,为了让别人能更容易理解代码的通途,使用注释是非常有效

shelve 用来持久化任意的Python对象实例代码 shelve--用来持久化任意的Python对象这几天接触了Python中的shelve这个module,感觉比pickle用起来更简单一些,它也是一个用来持久化Python对象的简单工具。当

标签: imagelearning

本文链接地址:https://www.jiuchutong.com/biancheng/384416.html 转载请保留说明!

上一篇:Python内置的HTTP协议服务器SimpleHTTPServer使用指南

下一篇:使用Python脚本实现批量网站存活检测遇到问题及解决方法(用python写脚本)

  • 企业签订技术培训合同是否需要缴纳印花税?
  • 进口商品需要缴纳VAT税吗
  • 固定资产清理借方余额是加还是减
  • 工会经费个人绩效计入缴费基数吗
  • 组织机构代码是营业执照哪几位数字
  • 资产减值损失在利润表怎么填列
  • 核定征收的收入总额包括营业外收入吗
  • 安全费用中的固定资产如何写会计分录?
  • 银行汇票转给第三方怎么操作
  • 税率和征收率的含义和区别
  • 广告公司制作警示牌可以开具什么样的发票?
  • 收到车辆保险返还会计分录
  • 产品成本核算的一般程序
  • 如何少交点税
  • 建筑施工企业清欠管理办法
  • 个人名义去税务局开票
  • 不可抗力后果承担
  • 私车公用报销怎么算
  • 委托代付工程款会计分录
  • 实收资本印花税按次还是按年
  • 外账进销存单据是怎么弄的?
  • windows10专业
  • 应付职工薪酬账户结构
  • 键盘灯无法开启
  • php timestamp
  • 股权转让协议合同
  • 公司搞活动买的车能买吗
  • PHP:json_last_error_msg()的用法_JSON函数
  • 广告费与业务宣传费扣除给企业带来的好处
  • 生育津贴如何做账
  • 分析卡拉哈迪沙漠的形成原因
  • wamp怎么运行php文件
  • 向客户收费
  • 蒙特城堡干红葡萄酒价格
  • 失控增值税专用发票
  • 新个税讲解
  • 朝夕教育怎么样
  • 一阶段目标检测算法
  • tokenizer.encode、tokenizer.tokenize、tokenizer.encode_plus的用法差异
  • 转账支票适用范围
  • 物流公司的会计好干吗
  • 城市维护建设税是什么意思
  • 企业接受捐赠要交增值税
  • 递延收益期限
  • 公对公账号没有卡能取得出来钱吗
  • 帝国cms移动端
  • 微擎最新破解版
  • python如何开发系统
  • mysql常用命令汇总
  • mongodb数据删除
  • 汇算清缴的费用标准 中汇
  • 公司贷款谁签字
  • 已付预付款当月怎么入账
  • 企业哪些收入不需要交税
  • 一般纳税人认定书是什么样子
  • MySQL中使用FREDATED引擎实现跨数据库服务器、跨实例访问
  • 增值税发票抵扣联丢失怎么办
  • 上年度亏损,本年要交所得税吗
  • 月末结转增值税怎么算
  • 商业保险如何做伤残鉴定的
  • 什么是年化收益和绝对利率
  • 逾期贷款利息收入增值税和企业所得税纳税义务时间
  • 租房子租一半不租了违约金付的,房东不肯退钱怎么办
  • 公司股东的主要几种分类
  • 无形资产计入待摊费用
  • 实缴资本和注册资本的比例
  • 累计盈余下级科目
  • 什么是速动比率的概念
  • w10 office激活
  • rtc resume
  • cocos2dx创建项目
  • JS、jQuery中select的用法详解
  • mysql源码安装和二进制安装
  • 关于javascript
  • js 仿真
  • 深入理解新发展理念
  • 终于实现的图片
  • javascript数组操作方法
  • 财务报表的收入平稳
  • 企业所得税率2023年
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设