CVE-2020–35748 — 跨站點腳本 (XSS) — FV Flowplayer 視頻播放器(WordPress 插件)

概括

本篇博客詳細解釋了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 行,

0e4KI7B6lbshyvMIN

當我們發送創建視頻播放器的 post 請求時,它包含`data`參數,然後將其存儲在「$value」變數中。在將「$value」變數存儲到資料庫之前,沒有適當的清理方法從「$value」變數中剝離 HTML 標籤。

在 /models/db-player.php 頁面的第 446 行,

0rC_H6A2G8BCkdOSi

同樣,當我們發送更新視頻播放器的 post 請求時,它包含 `data` 參數,然後將其存儲在「$value」變數中。這裡也沒有適當的消毒方法。

開發

考慮到沒有 HTML 標籤剝離方法,我們可以在 onerror 屬性中注入帶有腳本的 <img> 標籤,然後將其存儲在資料庫中並在檢索和列出它們時執行。這是有關如何重現它的步驟,

打開 WordPress 轉到儀錶板->FV 播放器。

0nWcGM08qK7BgIWCR

點擊新視頻。

0120e1VfiofFix-wE

在視頻輸入框中輸入 http://localhost 」<img src=1 onerror=alert(‘testing’)> 並點擊保存

0pDP6TEJID72LQdtL

腳本存儲在資料庫中並執行。

0_TFF20hDEs5a5c_V

減輕

XSS漏洞有很多緩解措施,其中一些是,

  1. 到達時過濾輸入。
  2. 編碼輸出數據。
  3. 使用適當的響應標頭。
  4. 使用內容安全策略。

內容安全政策:

它是防止 XSS 攻擊的最簡單和最有效的方法之一。它只是一個元標記,向網站提供有關資源應來自何處的非常明確的說明。此方法作為 XSS 漏洞的修補程序非常有效,直到根本原因得到修復(即,對輸入進行適當的清理)。

0_-vr8R-axjFtvngB

上面的元標記應該可以防止跨站點腳本攻擊。我們需要做的就是將元標記複製/粘貼到用戶頁面上。在這種情況下,我們必須將它放在我們的flowplayer.php頁面上。這可以防止在頁面呈現時從資料庫載入存儲的腳本。

例子:

0f6MOqddjb-aj9Hfi

此圖片顯示注入的腳本無法載入,因為它違反了我們正在實施的內容安全策略。

參考

相關文章