【漏洞預警】WordPress檔案刪除功能引發程式碼執行漏洞

FLy_鵬程萬里發表於2018-06-28

近日白帽匯安全研究院關注到,WordPress中被報存在一項因檔案刪除功能引發的程式碼執行漏洞。該漏洞可使攻擊者在利用有後臺文章編輯上傳刪除的許可權下,刪除任意檔案,甚至利用該漏洞繞過安全機制執行任意程式碼。該漏洞影響WordPress的所有版本,包括最新的 4.9.6 版本。

WordPress是一款由PHP+Mysql構建的開源部落格軟體和CMS系統,全球約30%的站點都是用WordPress搭建的。根據華順信安FOFA系統資料顯示,目前全網共有  4105647個系統對外開放。WordPress的使用受眾數量龐大,該漏洞將影響眾多的企業單位和站點使用者,相關企業、使用者需要高度重視。

 

 僅為國內分佈情況,非受影響情況

漏洞原理與危害

該漏洞出現的原因是由於在wordpress的wp-includes/post.php檔案中wp_delete_attachement()函式在接收刪除檔案引數時未進行安全處理,直接進行執行導致。

 

如圖所示,wp_delete_attachement()中,unlink()傳入的$meta[‘thumb’],未經過任何過濾處理直接被呼叫。這段程式碼的目的是為了在刪除影像的同時刪除影像的縮圖。在WordPress中通過媒體管理器上傳的影像被表示為附件型別的內容。$meta[‘thumb’]的值,從資料庫中檢索,並儲存成表示影像的文章自定義欄位。因此,在從資料庫檢索到unlink()函式呼叫之間表示縮圖檔名的值沒有經過任何檢查和過濾。如果該值在儲存到資料庫之前也沒有經過對過濾不安全內容處理措施,將可能導致出現利用該功能執行任意檔案刪除。

 

 

 

/wp-admin/post.php後面的程式碼片段,如上圖,可以看到附件中屬於附件的縮圖檔名如何儲存到資料庫中。在從使用者傳值並賦給$_POST[‘thumb’]數到儲存到資料庫wp_update_attachment_metadata()函式執行之間,沒有安全措施來確保這個值為真正是在編輯的附件縮圖。$_POST[‘thumb’]可以變為任意檔案的路徑,這個值可以儲存到WordPress上傳目錄的相對路徑中,當附件被刪除時,該檔案將被刪除。攻擊者可利用此漏洞進而執行任意程式碼。

修復建議

可將此鉤子載入到wordpress中進行彌補,該方案目前不確定對後續升級是否相容,請慎重操作。

 

 

 

參考

[1] https://blog.ripstech.com/2018/wordpress-file-delete-to-code-execution/

相關文章