分析WordPress遠程執行代碼漏洞CVE-2019-8942和CVE-2019-8943
WordPress擁有開源、功能豐富、用戶友好的內容管理系統(CMS),為當今近33%的網站提供了強大的支持。這種受歡迎程度也使得它成為了網路犯罪的顯著目標。可能WordPress的一個小漏洞就會為未來的數據泄露問題埋下嚴重隱患。此外,一些過時的網站使用不安全的第三方插件或組件也可能會帶來安全問題。
2019年2月19日,RIPS科技公司的Simon Scannell發表了他關於WordPress中可能導致遠程代碼執行(RCE)的核心漏洞的發現,這些漏洞被指定為CVE-2019-8942和CVE-2019-8943。簡單來說,如果能成功利用這些安全缺陷,且攻擊者的身份許可權至少在作者許可權之上,那麼攻擊者就可以執行超文本預處理器(PHP)代碼並獲得完全的系統控制。受影響的WordPress版本包括版本5(5.0.1之前)和4(4.9.9之前)。這些漏洞也已披露給了WordPress的安全團隊。
這篇文章旨在闡述漏洞的技術細節,比如潛在的攻擊可能是什麼樣的,以及如何利用漏洞攻擊一個WordPress站點。
漏洞分析與攻擊鏈
具有作者許可權的攻擊者可以將嵌入在圖像文件中的PHP代碼上傳到某個WordPress站點。上傳的文件將保存在wp-content/ uploadfolder中;與此同時,在wp_postmeta表中也會有該圖片信息的記錄。
圖1.顯示CVE-2019-8942是如何被利用的
通過CVE-2019-8942,攻擊者可以將_wp_attached_file的meta_key(用於檢索存儲在資料庫中的值並顯示它)修改為任意值。利用該漏洞需要發送post請求,一般正常的請求不會在請求中包含文件參數,而攻擊者創建的請求中通過攜帶文件參數對_wp_attached_file的meta_key進行更新。如圖3所示,同樣的情況也可以在資料庫表中觀察到。
圖2.顯示PHP文件是如何嵌入的(方框圈出部分)
圖3.顯示資料庫中已修改的文件名(方框圈出部分)
WordPress 4.9.9和5.0.1之前的版本沒有檢查哪些MetaData欄位通過請求更新。攻擊者可以利用這一點更新_wp_attached_file 的meta_key值或更改為任意值。
而在補丁版本中,在admin/include / POST .php中添加了新函數_wp_get_allowed_postdata(),以檢查在編輯請求中是否發送了「file」,「meta_input」或「guid」,並在更新POST請求之前將其刪除。圖3顯示,利用CVE-2019-8942可以讓黑客修改資料庫中的文件名,類似於路徑遍歷(例如evil1.jpg?../和../evil1.jpg)。
攻擊者可以將CVE-2019-8942的攻擊與另一個漏洞CVE-2019-8943連接起來,後者可以讓攻擊者將上傳的文件移動到可以成功執行嵌入式PHP代碼的任意目錄中。
圖4顯示了CVE-2019-8943的作用。在wp-admin/include /image.php中的wp_crop_image函數(允許WordPress用戶將圖像裁剪到給定的大小或解析度)中,php在保存文件之前不會驗證.dst(繪圖表文件)的文件路徑。
圖4.wp_crop_image函數沒有驗證.dst文件路徑
圖5.wp_crop_image函數試圖訪問本地文件
在可能的攻擊場景中,一旦修改了meta_key中的文件名,文件(例如圖3中的evil1.jpg?../和../evil1.jpg)將不會在upload目錄中找到。因此,它將回退到wp_crop_image函數中的下一個If條件,並嘗試通過URL訪問該文件。此步操作需要在WordPress站點中安裝文件複製插件。請求如下所示:
hxxps[:]//vulenrablewesbite/wp-content/uploads/evil1.jpg?../../evil1.jpg
在載入圖像時,「?」之後的路徑將被忽略。圖像載入後,攻擊者可以裁剪圖像,它將遵循路徑遍歷並將其保存在任意目錄中。
總結
CVE-2019-8942作為CVE-2019-8943的前提條件,前者修補完善後,後者也將失去利用空間。這是因為_wp_attached_file中的meta_key首先需要更新或修改為路徑遍歷文件名,才能執行嵌入式PHP代碼。
更重要的是,這些漏洞突出了開發人員通過設計實踐安全性的重要性,管理員也需採用安全準則來減少其網站的攻擊面。定期更新CMS或使用虛擬補丁、始終如一的檢查網站及其基礎設施或組件是否存在可利用的漏洞、執行最小特權原則,禁用或刪除過時或易受攻擊的插件。
※以索尼PSV為例,說說如何從F00D中提取密鑰?
※黑客使用Polyglot圖像隱藏惡意廣告活動
TAG:嘶吼RoarTalk |