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 条评论
登录 后参与评论

相关文章

来自专栏前端侠2.0

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

之后安装typescript    npm install -g typescript

2353
来自专栏技术墨客

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

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

6454
来自专栏web前端

smartClient 1--框架介绍

    快速构建 大型企业应用开发(无需过多关注UI),适合基于云技术的应用,主要关注业务的发展和营销,加快开发进程

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

redux-form的学习笔记

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

2159
来自专栏腾讯Bugly的专栏

打造“微信小程序”组件化开发框架

导语 Bugly 之前发了一篇关于微信小程序的开发经验分享,小伙伴们在公众账号后台问了很多关于小程序开发方面的问题,精神哥在查阅相关内容的时候,发现了龚澄同学自...

4813
来自专栏web前端

smartClient 1--框架介绍

一、是什么(以下简称SC)     smartClient 是一个基于web技术的开发框架,主要包括: 一个无需安装的 Ajax/HTML5 客户端引擎 UI组...

2728
来自专栏angularejs学习篇

关于表单重复提交问题

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

4202
来自专栏Android干货

Android Studio 之 注释模板

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

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

4037
来自专栏涤生的博客

Long Polling长轮询详解

众所周知,数据交互有两种模式:Push(推模式)、Pull(拉模式)。 推模式指的是客户端与服务端建立好网络长连接,服务方有相关数据,直接通过长连接通道推送到客...

1701

扫码关注云+社区

领取腾讯云代金券