专栏首页FreeBufWordPress插件Google Analytics by Yoast存储型XSS漏洞(含POC)

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)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • WordPress Plugin Quizlord 2.0 XSS漏洞复现与分析

    WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把 WordPress当作一个内容管...

    FB客服
  • 简单实现MySQL数据库的日志审计

    由于MySQL社区版没有自带的审计功能或插件,对于等级保护当中对数据库管理的要求的就存在一定的不满足情况的,抛开条条框框不说数据库的日志是值得研究的,通过收集数...

    FB客服
  • Flashmingo:SWF文件自动化分析工具

    flashmingo是FireEye最新发布的一个用于自动分析SWF文件的框架。它可以自动对可疑的Flash文件进行分类,并进一步的指导分析过程。Flashmi...

    FB客服
  • Gradle Java 插件

    Java 插件是构建 JVM 项目的基础,它为项目增加了很多能力,例如编译,测试,打包,发布等等。 很多插件都是基于 Java 插件实现的,例如 Android...

    佛系编码
  • 从0到1:PostCSS 插件开发最佳实践

    前阵子为了满足工作上的一个需求开发了一个PostCSS 插件,后来也将这个插件提交给PostCSS 官方并得到认可。在这篇文章中笔者将记录开发过程中遇到的一些问...

    Jeff
  • mybatis 3.x 缓存Cache的使用

    mybatis 3.x 已经支持cache功能了,使用很简单,在mappper的xml文件里添加以下节点: 1 <mapper namespace="com....

    菩提树下的杨过
  • Hdfs的数据磁盘大小不均衡如何处理

    最近浪尖在纠结一个现在看起来很简单的问题。 现象描述 建集群的时候,datanode的节点数据磁盘总共是四块磁盘做矩阵成了一个7.2TB的sdb1(data1...

    Spark学习技巧
  • Flutter实现倒计时功能

    Timer的periodic函数开启一个循环执行的任务,其参数一用来配制间隔执行这个任务的时间,参数二用来配置具体执行的任务,在使用时需要注意有创建就要有销毁,...

    早起的年轻人
  • Access denied for user ''@'localhost' to

    提示:ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'...

    双面人
  • SpringMVC中的事务和异常

    所以我们service层在添加了try catch日志打印后,抛出的runtime类异常需要在controller层进行捕获,捕获之后,在catch中编写操作失...

    剑行者

扫码关注云+社区

领取腾讯云代金券