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

此图片显示注入的脚本无法加载,因为它违反了我们正在实施的内容安全策略。

参考

相关文章