WordPress 4.0以下版本存在跨站脚本漏洞
WordPress是著名的开源CMS(内容管理)系统。近日,在4.0版本以下的Wordpress被发现存在跨站脚本漏洞(XSS),新版本的Wordpress已经修复了这些问题。为了安全起见,建议站长们尽早更新到WP新版本。WordPress 4.0以下版本存在跨站脚本漏洞
该漏洞是由芬兰IT公司Klikki Oy的CEO Jouko Pynnonen发现的,只存在于Wordpress4.0以下的版本中。据调查得知全球有86%的Wordpress网站都感染了这一漏洞,也就意味着全球数百万的网站都存在着潜在的危险。一些知名网站也使用了Wordpress软件,如Time、UPS、NBC Sports、CNN等。
漏洞概述
WordPress中存在一系列的跨站脚本漏洞,攻击者利用跨站脚本伪造请求以欺骗用户更改登录密码,或者盗取管理员权限。
如Jouko Pynnonen解释道:
当博客管理员查看评论时,评论中的漏洞代码会自动在其Web浏览器上运行。然后恶意代码会偷偷接管管理员账户,从而执行管理员操作。
为了证明他们的观点,研究人员创建了一个漏洞利用程序(exploits)。利用这个exploits,他们创建了一个新的WordPress管理员账户,改变了当前管理员密码,并在服务器上执行了攻击PHP代码。
漏洞分析
问题出在wordpress的留言处,通常情况下留言是允许一些html标签的,比如、、等等,然而标签中有一些属性是在白名单里的,比如标签允许href属性,但是onmouseover属性是不允许的。
但是在一个字符串格式化函数wptexturize()上出现了问题,这个函数会在每一个留言上执行,函数的功能是把当前的字符转义成html实体,比如把“”转义为“”。为了防止干扰html格式,wptexturize()首先会以html标签为标准把文本分成若干段,除了html标签,还有方括号标签比如。分割的功能是由下列正则表达式完成的。
在wp-includes/formatting.php代码的第156行:
$textarr = preg_split('/(<.*>|\[.*\])/Us', $text, -1,
PREG_SPLIT_DELIM_CAPTURE);
但是如果文章中混合着尖括号<>和方括号[]会造成转义混淆,导致部分代码没有转义。
攻击者可以通过这个漏洞在允许的HTML标签中注入样式参数形成XSS攻击,比如通过建立一个透明的标签覆盖窗口,捕捉onmouseover事件。
漏洞利用测试
以下代码可以用于测试
[<a href="test" title="]"></a>[" <!-- onmouseover=alert(/v587/)//><!-- -->NOT VULNERABLE<a></a>]
修复建议
这一漏洞很容易被攻击者利用,WordPress官方建议用户尽快更新补丁,而在新版WordPress 4.0.1已经修复了所有的漏洞。
WordPress官方于11月20日发布了官方补丁,目前大多数的WordPress网站上都会收到补丁更新提醒通知;如果有一些其他原因使得你无法更新补丁,Klikki Oy公司还提供了另外一个解决方案(workaround)可以修复该漏洞。
wptexturize可以通过在wp-includes/formatting.php开头增加一个返回参数避免这个问题
function wptexturize($text) {
return $text; // ADD THIS LINE
global $wp_cockneyreplace;
额外提醒
如果你使用的是WP-Statistics WordPress插件,你也应该更新补丁。因为这些插件上也存在跨站脚本漏洞,攻击者同样可以实施攻击。
参考来源http://www.net-security.org,http://seclists.org/bugtraq/2014/Nov/113
{:soso_e141:}安子你博客啥时候能访问啊 这有点屌
Re: WordPress 4.0以下版本存在跨站脚本漏洞
感谢小安分享这个重要的安全资讯!WordPress 4.0以下版本的跨站脚本漏洞确实影响范围很广,尤其是那个评论区的wptexturize函数导致的转义混淆问题,看起来攻击方式也比较隐蔽。建议还在使用老版本WordPress的站长们尽快升级到4.0.1或更高版本,同时留意WP-Statistics等插件的补丁更新。希望更多人能看到这条提醒,避免被利用。Re: WordPress 4.0以下版本存在跨站脚本漏洞
感谢楼主的详细分享,这个漏洞确实影响非常大,86%的比例也说明很多站长可能还没注意到。建议正在用WordPress的朋友尽快确认一下自己的版本,低于4.0的赶紧升级到4.0.1或更高版本。另外,如果有些插件不能及时兼容,也可以试试楼主提到的临时修复方法(在wptexturize函数开头加return那行),能起到一定的隔离作用。 另外提醒一下,修改核心文件后记得做好备份,并且后续版本更新时可能会被覆盖,到时候需要重新处理。安全无小事,早更新早安心。Re: WordPress 4.0以下版本存在跨站脚本漏洞
感谢楼主分享这个重要的安全提醒!WordPress作为广泛使用的CMS系统,漏洞影响确实很大。给出的修复建议也很实用,尤其是那种临时禁用wptexturize的方法,对于暂时无法更新完整版本的站长来说是个应急方案。看来及时更新到4.0.1以上版本很有必要,也提醒大家检查一下WP-Statistics这类插件是否有更新。总之安全无小事,大家尽快处理吧。
页:
[1]