WordPress 3.0-3.92 存储型XSS漏洞分析&POC

  • A+
所属分类:代码审计

概述:

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

最近WordPress小于3.92版本爆出XSS漏洞,攻击者可以利用此漏洞盗取管理员cookie,上传恶意文件。

细节:

问题出在wordpress的留言处,通常情况下留言是允许一些html标签的,比如<a>、<B>、<code>等等,然后标签中有一些属性是在白名单里的,比如<a>标签允许href属性,但是onmouseover属性是不允许的。

但是在一个字符串格式化函数wptexturize()上出现了问题,这个函数会在每一个留言上执行,函数的功能是把当前的字符转义成html实体,比如把“”转义为&#8220;&#8221;。为了防止干扰html格式,wptexturize()首先会以html标签为标准把文本分成若干段,除了html标签,还有方括号标签比如。分割的功能是由下列正则表达式完成的。

在wp-includes/formatting.php代码的第156行:

$textarr = preg_split('/(<.*>|\[.*\])/Us', $text, -1, PREG_SPLIT_DELIM_CAPTURE);

但是如果文章中混合着尖括号<>和方括号[]会造成转义混淆,导致部分代码没有转义,形成XSS。

poc:

在留言处插入

[<a href="xxx" title="]"></a>[" <!-- onmouseover=alert(/xss/)//><!-- -->XSS<a></a>]

前台后台均可执行恶意js

前台:

后台:

影响范围:

3.0-3.92

修复方法:

在wp-includes/formatting.php修改

function wptexturize($text) {
return $text; // 加入这一行
global $wp_cockneyreplace;

参考:

http://cxsecurity.com/issue/WLB-2014110138

SS推荐
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: