安全動態(tài)

WordPress內(nèi)核中一個任意文件刪除漏洞,可導致攻擊者執(zhí)行任意代碼

來源:聚銘網(wǎng)絡    發(fā)布時間:2018-06-30    瀏覽次數(shù):
 

信息來源:4hou

導語:WordPress是網(wǎng)絡上最受歡迎的CMS。在這篇文章中,我們將講述在WordPress內(nèi)核中引入一個經(jīng)認證的任意文件刪除漏洞,這個漏洞可能會導致攻擊者執(zhí)行任意代碼。

簡介

WordPress是目前網(wǎng)絡上最受歡迎的CMS。根據(jù)w3tech的資料顯示,約有30%的網(wǎng)站都在使用它1。這種廣泛的采用,也使其成為了網(wǎng)絡犯罪分子非常感興趣的一個目標。在這篇文章中,我們將講述在WordPress內(nèi)核中引入一個經(jīng)認證的任意文件刪除漏洞,這個漏洞可能會導致攻擊者執(zhí)行任意代碼。在7個月前,我們向WordPress安全團隊報告了這個漏洞,但至今依然沒有得到修復。由于經(jīng)過了這么長時間,WordPress官方都沒有發(fā)布任何補丁或具體修復計劃,所以我們決定公開這個事件。

受影響的版本

截止到本篇文章發(fā)送時,還沒有補丁可防止此漏洞的使用。任何WordPress版本(包括當前的4.9.6版本),都容易受到該漏洞的影響。

如果要利用該漏洞,攻擊者需要事先獲得編輯和刪除媒體文件的權限。因此,該漏洞可以通過對與作者權限相同的用戶來提升權限,或者通過其他漏洞的錯誤配置來利用。

攻擊帶來的影響

利用此漏洞,使攻擊者能夠刪除WordPress安裝的任何文件(+ PHP服務器上的任何其他文件,PHP進程用戶具有適當?shù)膭h除權限)。除了刪除整個WordPress安裝文件對系統(tǒng)的影響(如果沒有當前備份可用,會導致災難性后果),攻擊者可以利用任意文件刪除功能繞過一些安全措施,并在Web服務器上執(zhí)行任意代碼。更確切地說,可以刪除以下文件:

· .htaccess:一般來說,刪除此文件不會有不安全的影響。但是,在某些情況下,.htaccess文件包含與安全相關的約束(例如,對某些文件夾的訪問限制)。因此,刪除此文件將會禁用這些安全限制。

· index.php文件:通常情況下,將空的index.php文件放置到目錄中,以防止Web服務器無法執(zhí)行的情況下的目錄列表。如果刪除這些文件則將為攻擊者提供一份列表,列出受此措施保護的目錄中的所有文件。

· wp-config.php:刪除這個WordPress安裝文件,會在下次訪問該網(wǎng)站時觸發(fā)WordPress安裝過程。這是因為wp-config.php包含數(shù)據(jù)庫憑證,如果沒有它,WordPress的將認為它尚未安裝。攻擊者可以刪除該文件,使用管理員帳戶選擇的憑據(jù)進行安裝過程,最后在服務器上執(zhí)行任意代碼。

如需觀看視頻,請點擊此處查看原文。

技術細節(jié)

當用戶輸入傳遞文件刪除功能時,會發(fā)生任意文件刪除漏洞。在PHP中,當unlink()調(diào)用該函數(shù),并且用戶輸入可能會影響部分或整個參數(shù)$filename(表示要刪除的文件的路徑)時,會發(fā)生這種情況,而WordPress不會進行適當?shù)奶幚怼?

在該wp-includes/post.php文件中找到了在WordPress Core中使這個漏洞成為可能的代碼部分:

在wp_delete_attachement()上面顯示的功能中,$meta[‘thumb’]呼叫中使用的內(nèi)容unlink()未經(jīng)過任何處理。這段代碼的目的是在刪除圖像的同時刪除圖像的縮略圖。在WordPress中通過媒體管理器上傳的圖像被表示為附屬類型的帖子。該值$meta[‘thumb’]從數(shù)據(jù)庫中檢索,并保存為表示圖像的文章的自定義字段2。因此,在數(shù)據(jù)庫檢索和關鍵函數(shù)調(diào)用之間使用unlink(),表示縮略圖文件名的值不經(jīng)過任何清理或檢查。如果該值在保存到數(shù)據(jù)庫之前也沒有經(jīng)過任何安全措施,我們將在下一個代碼列表中看到情況,我們有一個二階任意文件刪除漏洞。

此代碼片段/wp-admin/post.php代表了附件中屬于附件的縮略圖的文件名如何保存到數(shù)據(jù)庫中。在從保存在$_POST[‘thumb’]數(shù)據(jù)庫中的用戶輸入中檢索和保存到數(shù)據(jù)庫wp_update_attachment_metadata()之間沒有任何安全措施,以確保該值代表正在編輯的附件的縮略圖。$_POST[‘thumb’]對于任何文件的路徑,這個值可以保存到WordPress上傳目錄的相對路徑中,當附件被刪除時,該文件將被刪除,如第一列表中所示。

臨時修復程序

在編寫此篇文章時,此漏洞在WordPress內(nèi)核中仍未被修復。正因為這樣,我們開發(fā)了一個臨時修復程序。通過將修復程序添加到functions.php當前活動的主題/子主題文件中,可以將修復程序集成到現(xiàn)有的WordPress安裝中。

所有提供的修復程序都會掛接到wp_update_attachement_metadata()調(diào)用中,并確保為元值提供的數(shù)據(jù)thumb不包含任何使路徑成為可能的部分。因此,不能刪除與安全相關的任何文件。

我們所提供的修復方案屬于臨時修復,以防止攻擊。我們無法監(jiān)督WordPress插件的所有可能的向后兼容性問題,因此建議您謹慎的對WordPress文件進行任何修改。

時間線

總結(jié)

在這文章中,我們介紹了WordPress內(nèi)核中引入了一個任意文件刪除漏洞,它允許任何具有作者權限的用戶完全接管WordPress網(wǎng)站,并在服務器上執(zhí)行任意代碼。該漏洞去年已報告給WordPress安全團隊,但在編寫本文時仍然沒有作任何修復。

為了提高對此漏洞的認識,我們決定發(fā)布一些細節(jié)和修復程序。使用我們的安全分析解決方案可以輕松發(fā)現(xiàn)漏洞,我們確信這個問題已經(jīng)被許多研究人員所了解。盡管用戶帳戶的需求阻止了任意WordPress站點的大規(guī)模開發(fā),但共享多個用戶帳戶的WordPress站點應該應用此修復程序。

 
 

上一篇:公安部對網(wǎng)絡安全等級保護條例征意見 鼓勵利用人工智能等技術

下一篇:2018年06月30日 聚銘安全速遞