在 2019 年 2 月 19 日,國外安全人員在博客中的披露了一則 WordPress 5.0.0 版本遠程代碼執行漏洞。該漏洞本質上是由一個目錄遍歷漏洞以及一個本地文件包含漏洞組合利用而導致的一個遠程代碼執行漏洞。當攻擊者獲取到 WordPress 站點具有一定訪問權限的賬戶后,即可利用該漏洞在底層服務器上執行任意 PHP 代碼,從而實現完全遠程接管服務器的目的。
漏洞概述
WordPress 是如今使用最為廣泛的一套內容管理系統。WordPress 5.0.0 遠程代碼執行漏洞產生的背景是利用 WordPress文件上傳的一個特性。當 WordPress 上傳一張圖片時,首先這張圖片會被放置到 uploads 目錄下(wp-content/uploads),同時 WordPress 還將創建對數據庫中圖像的內部應用,以來跟蹤上傳文件的源信息,例如圖像的上傳時間或者圖像的所有者。該源信息將會被作為 “Post Meta” 條目存儲在數據庫中。這些信息都被保存在 wp_postmeta 表中,數據是以鍵值對形式保存。如果之后用戶需要修改或者使用對應 ID 的文件,WordPress 將查找匹配的 _wp_attached_file 源條目并使用它的值以便在 wp-content/uploads 目錄中查找到該文件。該漏洞通過對 Post Meta 條目的路徑遍歷以及利用 WordPress 主題庫進行本地文件包含,最終覆蓋掉一個特定的 Post Meta 條目,可以實現將原本文件的 Post Meta 綁定到一個惡意文件上,導致遠程代碼執行漏洞。
漏洞危害
當攻擊者獲取到 WordPress 站點具有一定訪問權限的賬戶后,即可利用該漏洞在底層服務器上執行任意 PHP 代碼,從而實現完全遠程接管服務器的目的。
受影響范圍
WordPress 5.0.0
修復建議
WordPress官方已經在 WordPress 5.0.1更新了安全補丁,用戶可以更新至WordPress 5.0.1之后的版本。下載鏈接:https://wordpress.org/download/