Author: niubl(知道創宇404安全實驗室)
Date: 2016-05-07
一、漏洞概要
i. 漏洞描述
ImageMagick是一款使用量很廣的圖片處理常式,很多廠商都調用了這個程式進行圖片處理,包括圖片的伸縮、切割、浮水印、格式轉換等等。我發現當使用者傳入一個包含|豎線的檔案名稱的時候,就有可能觸發命令注入漏洞。
ii. 漏洞影響
測試:ImageMagick-7.0.1-2.tar.bz2
iii. 漏洞分析
ImageMagick在處理檔案名稱時會調用OpenBlob()函數,在OpenBlob()函數中,代碼2484行,判斷檔案名稱是否以|豎線開頭,如果是,那麼他會調用popoen_utf8()函數處理檔案名稱,代碼
來到popoen_utf8()函數,popen_utf8()函數調用會調用popen()函數開啟檔案,這樣就導致我們可以注入系統命令,代碼
iv. 漏洞利用(PHP)
在PHP禁用執行系統命令函數的時候,我們可以用他來繞過disable_funtion,PHP編寫如下代碼:
使用PHP執行,結果
二、修複方案
目前官方已經更新代碼至 Gitlab,但最終修複版本還未發布,補丁細節可參考如下連結:
- http://git.imagemagick.org/repos/ImageMagick/commit/40639d173aa8c76b850d625c630b711fee4dcfb
- http://git.imagemagick.org/repos/ImageMagick/commit/4674b3e1ea87a69646a6dbac8772c45eeb20c9f0
三、漏洞時間軸
2016.05.07 知道創宇404安全實驗室niubl發現該漏洞
2016.05.29 國外研究者報告並公布了漏洞細節 http://permalink.gmane.org/gmane.comp.security.oss.general/19669
2016.05.30 發布分析報告