WordPress 4.2持久性XSS分析

安全风险:危害

危害评分:6/10

漏洞类型:持久性XSS

补丁版本:4.2.4

 

上周WordPress团队发布了一个补丁,修复了6个安全漏洞。

漏洞披露时间表

May 6th, 2015 – Initial report to WordPress
security team

May 8th, 2015 – WordPress security team
confirming receipt of the report

July 23th, 2015 – WordPress 4.2.3 released,
not fixing the issue

July 24th, 2015 – WordPress security team
confirming it will be fixed on the next security release

August 4th, 2015 – Patch made public with
the release of WordPress 4.2.4

 

技术细节:

bug来自preview_theme()函数,是WordPress的临时预览主题功能,他是连接到setup_theme功能的挂钩,每次显示一个主题的时候执行。

preview_theme()函数

你可以从上面的截图中看到,如果管理员登录访问该页面之一,使用了一些额外的$ _GET参数(这可能发生,例如,如果事先他点击恶意链接), 此功能将设置preview_theme_ob_filterob_start的回调函数。

preview_theme_ob_filter回调函数

一旦ob_start()函数已经收集了所有网页的内容,它会调用preview_theme_ob_filter()抓取所有的HTML链接,并使用preview_theme_ob_filter_callback功能过滤。

preview_theme_ob_filter_callback功能

这将,从链接中删除“onclick=”标签的事件处理程序。

哪里的问题?

preview_theme_ob_filter_callback删除“onclick=”的处理程序,因为他实际可用于插入一个新的标签属性,通过发送类似于下面一篇文章的评论:

<a href='/wp-admin/' title="onclick='"
Title='
"
style="position:absolute;top:0;left:0;width:100%;height:100%;display:block;"
onmouseover=alert(1)//'>Test</a>

其中粗体部分是将会删除,插入我们styleonmouseover的属性,这将在管理员的浏览器打印以下链接标签:

<a href='/wp-admin/' title=""
style="position:absolute;top:0;left:0;width:100%;height:100%;display:block;"
onmouseover=alert(1)//'>Test</a>

在被禁止执行JavaScript的地方,这将绕过他们的过滤器。

如果你的网站支持自动更新,很可能已经被修补,如果没有的话,希望在你方便的时候,尽快手动更新。

原文:https://blog.sucuri.net/2015/08/persistent-xss-vulnerability-in-wordpress-explained.html