WordPress 5.1 CSRF 導致遠程命令執行漏洞安全通告

發布時間 2019-03-15

漏洞編號和級別


CVE編號:暫無,危險級別:高危, CVSS分值:官方未評定


影響范圍


受影響版本: 

WordPress 5.1.1 之前的版本 (不含 5.1.1)


漏洞概述


3 13 日,RIPSTECH 發布了 WordPress 5.1 CSRF 漏洞導致遠程代碼執行的內容細節。攻擊者可以通過欺騙目標博客的管理員訪問攻擊者設置的網站來接管任何啟用了評論的WordPress網站。一旦受害管理員訪問惡意網站,就會在后臺針對目標WordPress博客運行跨站點請求偽造(CSRF)漏洞,而不會受到受害者的注意。CSRF漏洞利用了多個邏輯缺陷和清理錯誤,這些錯誤在組合時會導致遠程執行代碼和完整的站點接管。


漏洞存在于5.1.1之前的WordPress版本中,可以使用默認設置進行利用。


超過33%的互聯網網站使用WordPress??紤]到評論是博客的核心功能并且默認情況下已啟用,該漏洞會影響數百萬個網站。


漏洞詳情


WordPress 的處理過程中由于要實現一些特性的原因,WordPress并沒有針對評論的發布做CSRF限制,那么攻擊者就能夠使用CSRF攻擊來攻擊WordPress管理員使其通過其權限創建評論。


WordPress試圖通過在評論表單中為管理員生成一個額外的隨機數來解決這個問題。當管理員提交評論并提供有效的隨機數時,評論將在不經過任何清理函數的情況下創建。如果隨機數無效,評論仍會創建,但會被清理函數處理。



可以看到評論通常是wp_filter_kses來負責清理的。wp_filter_kses僅允許僅有 href 屬性的 a 標簽。


如果是如下這種情況:創建評論的用戶擁有unfiltered_html權限,并且沒有提供有效的隨機數,則用 wp_filter_post_kses 來清理注釋。


wp_filter_post_kses 雖仍會刪除任何可能導致跨站點腳本漏洞的 HTML 標記和屬性。但允許了一些其他的常見屬性比如rel。


WordPress 在處理評論中的 a 標簽的屬性時候會通過如下代碼,將屬性處理為鍵值對關系鍵是屬性的名稱,值是屬性值。




WordPress 然后檢查rel屬性是否被設置。只有通過 wp_filter_post_kses 過濾注釋,才能設置此屬性。按如下方式處理。



標題屬性值用雙引號括起來( 3018 )。這意味著攻擊者可以通過注入閉合title屬性的額外雙引號來注入額外的 HTML 屬性。


例如:title='XSS " onmouseover=alert(1) id="'

理論上 將會變成

然后在經過處理后該評論即會被 WordPress 存儲入數據庫。


攻擊者在創建惡意注釋后獲取遠程執行代碼的下一步是獲取管理員執行注入的JavaScript。評論顯示在目標WordPress博客的前端。 WordPress本身不受X-Frame-Options標頭的保護。這意味著評論可以顯示在攻擊者網站上的隱藏