挖洞經驗 | HackerOne平臺ImageMagick漏洞導致伺服器記憶體資訊洩露
大家好,今天我要分享的是關於HackerOne平臺GIF影象處理的ImageMagick漏洞(CVE-2017–15277),漏洞很簡單,最終也獲得了HackerOne官方獎勵的$500美金。
CVE-2017–15277介紹
ofollow,noindex" target="_blank">CVE-2017–15277 最早於2017年10月被安全研究人員Emil Lerner發現,它屬於開源影象處理元件ImageMagick漏洞,受影響軟體為ImageMagick 7.0.6–1和Graphicsmagick 1.3.26。原因在於,當ImageMagick在處理不具備全域性或本地調色盤的GIF圖片時,ImageMagick 7.0.6–1和Graphicsmagick 1.3.26中存在未初始化的調色盤,其coders/gif.c檔案中ReadGIFImage存在安全漏洞,如果攻擊者利用ReadGIFImage來處理GIF圖片,構造操作,可以通過未初始化的調色盤來間接獲取到伺服器中的記憶體資料資訊。
簡單地說就是,如果伺服器中部署了ImageMagick 7.0.6–1和Graphicsmagick 1.3.26,且其中具備未初始化的調色盤機制,那麼,利用CVE-2017–15277,通過構造圖片檔案,上傳至伺服器中的任何可上傳地方,之後,伺服器通過處理這種構造圖片,就會利用未初始化的調色盤機制,把其轉化成不同畫素的圖片預覽檔案,而在這些圖片預覽檔案中,可能包含了一些和伺服器記憶體相關的資訊,如Stack trace(堆疊跟蹤)和String value(字串值)資訊等。
此外,從實際功能來說,ImageMagick是一個顯示、轉換和編輯光柵影象和向量影象檔案的開源軟體,它被用於許多web應用中的裁剪、調整大小和改變顏色功能,且支援多種影象格式。
漏洞利用
讓我們直接來到漏洞利用部分吧,這裡,我們以HackerOne網站為漏洞測試目標。
首先,我下載了Emil Lerner在Github上公佈的漏洞利用包 https://github.com/neex/gifoeb ;
之後,利用下述命令來建立512×512畫素的GIF漏洞利用(exploitable)圖片:
./gifoeb gen 512×512 dump.gif
當然了,你也可以把生成的圖片檔案改成其它字尾格式,如.jpg 、.tiff 、.bmp等,也可以建立生成其它不同畫素的漏洞利用圖片:
接著,登入我的HackerOne賬戶,嘗試在使用者資料的頭像處上傳上述命令生成的漏洞利用GIF圖片:
之後,伺服器後端處理這種漏洞利用GIF圖片後,就會生成相應的512×512畫素的預覽圖片;
然後,在GIF格式下,我嘗試生成了不同畫素的漏洞利用圖片,並把它們一一上傳,以獲取伺服器後端生成的不同畫素的預覽圖片:
把這些不同畫素的預覽圖片儲存在一個資料夾中:
最後,用以下命令恢復出這些預覽圖片中包含的伺服器記憶體資訊:
for p in previews/*; do ./gifoeb recover $p | strings; done
可以看到,這些不同畫素的預覽圖片中洩露了伺服器記憶體中的執行資訊,這些資訊包含了伺服器路徑(path)、作業系統(OS)、軟體版本等。
漏洞影響
該ImageMagick漏洞(CVE-2017–15277),可能會導致一些郵件、Cookie、SQL查詢語句以及檔案目錄等伺服器相關資訊洩露。在上述的漏洞測試中,我們僅發現 了HackerOne的作業系統、檔案目錄和一些堆疊跟蹤洩露資訊。漏洞修復當然是升級ImageMagick元件至最新版本了。
漏洞利用建議
1、在最新的ImageMagick元件中,該漏洞利用被緩解修復了,如果向伺服器上傳漏洞利用圖片後,你只會獲得一張黑色的預覽圖片,這種圖片不會洩露任何伺服器記憶體資訊; 2、即使你在一些漏洞利用場景中,可以獲得伺服器生成的預覽圖片,也要看看它是否存在涉及檔案目錄、作業系統版本等伺服器相關的資訊洩露,如果僅只是像 {{{*a/!a^a;bb(b|} 的一些堆疊跟蹤資訊,那還需要繼續測試,別忙著上報漏洞; 3、構造不同解析度和副檔名的漏洞利用圖片,尤其是那些具有灰色畫素的圖片,它們包含的資訊比藍色、綠色或紅色圖片多得多。最終的可利用性和效果還得依不同網站和ImageMagick元件版本而言。
漏洞上報程序
經向HackerOne上報漏洞後,他們認為這屬於記憶體洩露漏洞,並向我獎勵了$500 美金,作為我的第一上漏洞,這對我有很大鼓勵。當然,也要感謝 Emily Lerner 公佈的漏洞利用方法。
2018.1.6 向HackerOne上報漏洞 2018.1.7 HackerOne評估並分類漏洞 2018.1.7 CVE官方向Emil Lerner分配了漏洞編號 CVE-2017–15277 2018.1.20 HackerOne向我獎勵了$500 2018.2.7 漏洞被成功處理修復
*參考來源: medium ,clouds編譯,轉載請註明來自FreeBuf.COM