概括
本篇博客詳細解釋了FV Flowplayer Video Player (WordPress Plugin) 7.4.37.727之前版本的STORED XSS漏洞,為什麼會出現,如何利用,如何緩解。請注意,此漏洞已在版本 7.4.38.727 中修補。
漏洞概述
FV Flowplayer Video Player 是一個 WordPress 插件,用於將 FLV 或 MP4 視頻嵌入到您的帖子或頁面中。它在/wp-admin/admin.php?page=fv_player中存在嚴重的跨站點腳本 (XSS) 漏洞。它允許經過身份驗證的遠程用戶注入任意 Web 腳本或 HTML。
漏洞分析
在 /models/db-player.php 頁面的第 446 行,
當我們發送創建視頻播放器的 post 請求時,它包含`data`參數,然後將其存儲在「$value」變數中。在將「$value」變數存儲到資料庫之前,沒有適當的清理方法從「$value」變數中剝離 HTML 標籤。
在 /models/db-player.php 頁面的第 446 行,
同樣,當我們發送更新視頻播放器的 post 請求時,它包含 `data` 參數,然後將其存儲在「$value」變數中。這裡也沒有適當的消毒方法。
開發
考慮到沒有 HTML 標籤剝離方法,我們可以在 onerror 屬性中注入帶有腳本的 <img> 標籤,然後將其存儲在資料庫中並在檢索和列出它們時執行。這是有關如何重現它的步驟,
打開 WordPress 轉到儀錶板->FV 播放器。
點擊新視頻。
在視頻輸入框中輸入 http://localhost 」<img src=1 onerror=alert(‘testing’)> 並點擊保存。
腳本存儲在資料庫中並執行。
減輕
XSS漏洞有很多緩解措施,其中一些是,
- 到達時過濾輸入。
- 編碼輸出數據。
- 使用適當的響應標頭。
- 使用內容安全策略。
內容安全政策:
它是防止 XSS 攻擊的最簡單和最有效的方法之一。它只是一個元標記,向網站提供有關資源應來自何處的非常明確的說明。此方法作為 XSS 漏洞的修補程序非常有效,直到根本原因得到修復(即,對輸入進行適當的清理)。
上面的元標記應該可以防止跨站點腳本攻擊。我們需要做的就是將元標記複製/粘貼到用戶頁面上。在這種情況下,我們必須將它放在我們的flowplayer.php頁面上。這可以防止在頁面呈現時從資料庫載入存儲的腳本。
例子:
此圖片顯示注入的腳本無法載入,因為它違反了我們正在實施的內容安全策略。