WordPress內核中一個任意文件刪除漏洞,可導致攻擊者執行任意代碼
簡介
WordPress是目前網路上最受歡迎的CMS。根據w3tech的資料顯示,約有30%的網站都在使用它1。這種廣泛的採用,也使其成為了網路犯罪分子非常感興趣的一個目標。在這篇文章中,我們將講述在WordPress內核中引入一個經認證的任意文件刪除漏洞,這個漏洞可能會導致攻擊者執行任意代碼。在7個月前,我們向WordPress安全團隊報告了這個漏洞,但至今依然沒有得到修復。由於經過了這麼長時間,WordPress官方都沒有發布任何補丁或具體修復計劃,所以我們決定公開這個事件。
受影響的版本
截止到本篇文章發送時,還沒有補丁可防止此漏洞的使用。任何WordPress版本(包括當前的4.9.6版本),都容易受到該漏洞的影響。
如果要利用該漏洞,攻擊者需要事先獲得編輯和刪除媒體文件的許可權。因此,該漏洞可以通過對與作者許可權相同的用戶來提升許可權,或者通過其他漏洞的錯誤配置來利用。
攻擊帶來的影響
利用此漏洞,使攻擊者能夠刪除WordPress安裝的任何文件(+ PHP伺服器上的任何其他文件,PHP進程用戶具有適當的刪除許可權)。除了刪除整個WordPress安裝文件對系統的影響(如果沒有當前備份可用,會導致災難性後果),攻擊者可以利用任意文件刪除功能繞過一些安全措施,並在Web伺服器上執行任意代碼。更確切地說,可以刪除以下文件:
·.htaccess:一般來說,刪除此文件不會有不安全的影響。但是,在某些情況下,.htaccess文件包含與安全相關的約束(例如,對某些文件夾的訪問限制)。因此,刪除此文件將會禁用這些安全限制。
·index.php文件:通常情況下,將空的index.php文件放置到目錄中,以防止Web伺服器無法執行的情況下的目錄列表。如果刪除這些文件則將為攻擊者提供一份列表,列出受此措施保護的目錄中的所有文件。
·wp-config.php:刪除這個WordPress安裝文件,會在下次訪問該網站時觸發WordPress安裝過程。這是因為wp-config.php包含資料庫憑證,如果沒有它,WordPress的將認為它尚未安裝。攻擊者可以刪除該文件,使用管理員帳戶選擇的憑據進行安裝過程,最後在伺服器上執行任意代碼。
技術細節
當用戶輸入傳遞文件刪除功能時,會發生任意文件刪除漏洞。在PHP中,當unlink()調用該函數,並且用戶輸入可能會影響部分或整個參數$filename(表示要刪除的文件的路徑)時,會發生這種情況,而WordPress不會進行適當的處理。
在該wp-includes/post.php文件中找到了在WordPress Core中使這個漏洞成為可能的代碼部分:
在wp_delete_attachement()上面顯示的功能中,$meta[『thumb』]呼叫中使用的內容unlink()未經過任何處理。這段代碼的目的是在刪除圖像的同時刪除圖像的縮略圖。在WordPress中通過媒體管理器上傳的圖像被表示為附屬類型的帖子。該值$meta[『thumb』]從資料庫中檢索,並保存為表示圖像的文章的自定義欄位2。因此,在資料庫檢索和關鍵函數調用之間使用unlink(),表示縮略圖文件名的值不經過任何清理或檢查。如果該值在保存到資料庫之前也沒有經過任何安全措施,我們將在下一個代碼列表中看到情況,我們有一個二階任意文件刪除漏洞。
此代碼片段/wp-admin/post.php代表了附件中屬於附件的縮略圖的文件名如何保存到資料庫中。在從保存在$_POST[『thumb』]資料庫中的用戶輸入中檢索和保存到資料庫wp_update_attachment_metadata()之間沒有任何安全措施,以確保該值代表正在編輯的附件的縮略圖。$_POST[『thumb』]對於任何文件的路徑,這個值可以保存到WordPress上傳目錄的相對路徑中,當附件被刪除時,該文件將被刪除,如第一列表中所示。
臨時修復程序
在編寫此篇文章時,此漏洞在WordPress內核中仍未被修復。正因為這樣,我們開發了一個臨時修復程序。通過將修復程序添加到functions.php當前活動的主題/子主題文件中,可以將修復程序集成到現有的WordPress安裝中。
所有提供的修復程序都會掛接到wp_update_attachement_metadata()調用中,並確保為元值提供的數據thumb不包含任何使路徑成為可能的部分。因此,不能刪除與安全相關的任何文件。
我們所提供的修復方案屬於臨時修復,以防止攻擊。我們無法監督WordPress插件的所有可能的向後兼容性問題,因此建議您謹慎的對WordPress文件進行任何修改。
時間線
總結
在這文章中,我們介紹了WordPress內核中引入了一個任意文件刪除漏洞,它允許任何具有作者許可權的用戶完全接管WordPress網站,並在伺服器上執行任意代碼。該漏洞去年已報告給WordPress安全團隊,但在編寫本文時仍然沒有作任何修復。
為了提高對此漏洞的認識,我們決定發布一些細節和修復程序。使用我們的安全分析解決方案可以輕鬆發現漏洞,我們確信這個問題已經被許多研究人員所了解。儘管用戶帳戶的需求阻止了任意WordPress站點的大規模開發,但共享多個用戶帳戶的WordPress站點應該應用此修復程序。
※美國政府最新技術警報:警惕朝鮮黑客組織Hidden Cobra正在使用的兩款RAT和蠕蟲病毒
※Check Point安全研究人員針對UPAS Kit與Kronos銀行木馬的分析(二)
TAG:嘶吼RoarTalk |