WordPress插件Google Analytics by Yoast存储型XSS漏洞(含POC)

WordPress著名插件Google Analytics by Yoast插件中曝出存储型XSS漏洞,该漏洞能够让未被授权的攻击者在WordPress管理面板中存储任何HTML代码,包括JavaScript。管理员查看插件的设置面板是JavaScript就会被触发,不需要别的交互行为。

漏洞描述

Google Analytics by Yoast是一款用于监视网站流量的WordPress插件。这款插件有大约7百万的下载量,是最受欢迎的WP插件之一。尽管插件代码从2014年开始被例行安全审计,但还是出现了这个漏洞,这次的这个漏洞非常危险,并且显然是Yoast WP插件中爆出的最严重的漏洞。

对于攻击者来说,利用这个漏洞在服务器端执行代码相对简单。在默认WP配置下,恶意的用户可以利用这个漏洞通过插件/主题编辑器在服务器上写PHP文件(见视频演示)。或者攻击者也可以更改管理员密码,创建管理员帐号,或者做其他任何服务器网站上已登录用户所能做的事情。

这个漏洞今年1月下旬由Klikki Oy发现的,但是当时还不知道具体的影响,直到三月一份完整的调查结果出炉。现在插件已有更新修复这一问题。

漏洞细节

漏洞的影响是两个问题的结合。首先,缺少访问控制导致未被授权的用户可以修改有关插件的部分设置。攻击者可以覆盖已有的OAuth2验证信息,验证信息在插件中被用作获得Google分析的数据,因此,攻击者可以在插件中使用自己的Google分析账号。

其次,插件中有一个HTML下拉菜单,菜单基于从Google分析下载的数据。数据没有进行处理或者HTML转义。如果攻击者在Google分析账号设置中输入<script>标签之类的HTML代码,这些代码就会出现在WordPress管理面板中,任何浏览这些设置时就会触发。

POC

以下这段HTML片段可以用来劫持使用了漏洞插件的网站中Google分析账号:

<a href="http://YOUR.BLOG/wp-admin/admin-post.php?reauth=1">reauth</a>

<br><br>

<form method=POST action="http://YOUR.BLOG/wp-admin/admin-post.php">

<input type=text size=100 name="google_auth_code">

<input type=submit>

</form>

首先,攻击者会点击"重新授权"链接。这个动作不需要任何验证。它会重置某些插件设置,并将攻击者重定向导一个google.com OAuth验证对话框,攻击者可以在这里获得一个验证代码。接着攻击者会复制这段代码并且粘帖到上面的表格并点击提交。这样攻击者就更新了插件设置中的代码——也是不需要进行授权的。然后插件就会从攻击者的Google分析账号获取数据了。

攻击者会在Google分析账号设置(https://www.google.com/analytics/web/?hl=en#management/Settings/)中填入真正的payload脚本。例如:

test"><script>alert('stored XSS')</script>

这样的脚本会在管理员浏览面板中的设置页面时弹窗。

真实的攻击可能会使用src属性从外部网站加载更加复杂的脚本。可以使用ajax调用加载提交管理表单,可以使用插件编辑器写入服务器端PHP代码,并执行。

解决方案

Yoast于2015年3月18日收到提醒。第二天Yoast发布了更新(5.3.3)。

参考来源Klikki Oy,译/Sphinx,文章有修改,转载请注明来自Freebuf黑客与极客(FreeBuf.COM)

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2015-03-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏地方网络工作室的专栏

打造前端 Deepin Linux 工作环境——配置 XAMPP 集成环境

打造前端 Deepin Linux 工作环境——配置 XAMPP 集成环境 虽然前后端分离开发的我们,已经很少需要跑一个 apache+php+mysql 的集...

2435
来自专栏Android干货

Android Studio 之 注释模板

4397
来自专栏angularejs学习篇

关于表单重复提交问题

问题引入:当我们在做一个页面数据提交的时候,当我们连续点击提交按钮,因为快速连续点击,因为速度过快,页面还来不及反应,导致页面从复提交。。

3342
来自专栏彭湖湾的编程世界

redux-form的学习笔记

redux是一种常用的与react框架搭配的一种数据流架构,而伴随着redux的出现,也出现了许多基于redux开源的第三方库,而redux-form就是其中之...

2089
来自专栏大闲人柴毛毛

架构高性能网站秘笈(五)——Web组件分离

什么是Web组件? 网站的静态网页HTML、JavaScript脚本、CSS样式、图片、动态数据称为网站的Web组件。也就是说,一个Web应用由各种各样的We...

3928
来自专栏技术墨客

构建用于生产的React静态化单页面服务 原

React 作为一项热门的前端开发技术,现在使用它的团队越来越多。之前也介绍了react 的所有的特性,但是仅仅了解怎么开发 react 只走了万里长征的第一步...

4774
来自专栏从零开始学自动化测试

selenium+python自动化78-autoit参数化与批量上传

前言 前一篇autoit实现文件上传打包成.exe可执行文件后,每次只能传固定的那个图片,我们实际测试时候希望传不同的图片。 这样每次调用的时候,在命令行里面加...

3533
来自专栏前端侠2.0

vs code和node的相关使用 一一 tsd用法

之后安装typescript    npm install -g typescript

1963
来自专栏每日一篇技术文章

带你入坑01-weex-搭建环境

安装 Node.js 环境成功后,npm 包管理工具也会自动安装成功 输入下面命令检查一下

1041
来自专栏华仔的技术笔记

用Vapor将一个Swift区块链应用部署到云端

3897

扫码关注云+社区