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 存儲入數據庫。
由于inject屬性是onmouseover事件處理程序,攻擊者可以使iframe跟隨受害者的鼠標,立即觸發XSS有效負載。 ????這允許攻擊者使用在目標網站上觸發CSRF漏洞的管理員會話執行任意JavaScript代碼。所有JavaScript執行都在后臺進行,而受害者管理員沒有注意到。
現在可以使用管理員的會話執行任意JavaScript代碼,可以輕松實現遠程執行代碼。默認情況下,WordPress允許博客管理員直接在管理儀表板中編輯主題和插件的.php文件。通過簡單地插入PHP后門,攻擊者可以在遠程服務器上獲得任意PHP代碼執行。
修復建議
默認情況下,WordPress 會自動安裝安全更新,您應該已更新至最新版本的 5.1.1。如果您或您的主機由于某種原因禁用了自動更新功能,您也可以禁用注釋,直到安裝了安全修補程序。最重要的是,在訪問其他網站之前,請確保注銷管理員會話。
參考鏈接
https://blog.ripstech.com/2019/wordpress-csrf-to-rce/