Site icon Soul & Shell Blog

ImageMagick Command Injection 漏洞檢測與修補 (CVE-2016-3714)

wizard最近著名好用的圖片轉檔函式庫藍袍巫師 ImageMagick,被發現了一個大漏洞 CVE-2016-3714,攻擊者可以透過圖片的轉檔動作,執行安插在檔案中的惡意 Shell Command。由於 ImageMagick 實在太多 OpenSource Project 都有引用,只要能夠執行 Shell Command 再配合其他漏洞或權限的設定疏失,很容易可以上 Shell Code。當然小編我也不意外中標囉,正所謂人在江湖漂,哪有不中標,中標事小,趕緊修補比較重要,目前官方各大 Linux Distribution 都正在緊急發佈新版,為了避免零時差攻擊 (Zero-day attack),請各位有在用 ImageMagick 的大大趕緊修補一下。

修補的方式可以參考這篇文章,主要以兩個方法(保險一點建議兩個方法都實作),第一個方法比較簡單就是修改 ImageMagick Policy File,標準安裝的位置在 /etc/ImageMagick/policy.xml 這裡,修補請加入以下 XML (GitHub):

sudo vim /etc/ImageMagick/policy.xml

<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>

另一個方法比較麻煩,就是要判斷要轉檔的檔案內容是否為正確的圖片檔,不單靠著附檔名來判斷。你想的沒錯!要改 Code 才能自行讀取檔頭幾個 Bytes 進行比對,判斷的方法可以參考 List of file signatures 這個列表。

為了確認漏洞是否被修補,那我們來 Hack 一下自己的應用程式好了,參考這裡先建立以下內容的檔案 (GitHub),並儲存為 exploit.png 檔。

push graphic-context
viewbox 0 0 640 480
fill 'url(https://example.com/image.jpg"|cat /etc/passwd > /tmp/hack.txt")'
pop graphic-context

修補漏洞之前可以先用 convert 命令轉換看看,執行如果中標的話就會出現 /tmp/hack.txt 檔案,執行方式如下:

convert exploit.png out.png

要測試自己的系統可以將這個檔案上傳到 Web 應用程式中,一樣如果主機出現 /tmp/hack.txt 就是中標囉。心存善念,施主請服用.......

Exit mobile version