XSS漏洞一
这次的wordpress安全问题主要在留言,xss漏洞问题是由mysql的一个特性引起的。在mysql的utf8字符集中,一个字符由1~3个字节组成,对于大于3个字节的字符,mysql使用了 utf8mb4的形式来存储。如果我们将一个utf8mb4字符插入到utf8编码的列中,那么在mysql的非strict mode下,xss攻击的做法是将后面的内容截断。
xss漏洞详情
利用上述mysql这一特点,xss攻击者发现了wordpress安全影响的这个xss漏洞。WordPress默认是utf8编码并且没有开启strict mode,如果我们加入一条这样的留言:
<abbr title=\'We
这会导致wordpress的页面布局混乱,如果再插入一条这样的留言:
cedric\' onmouseover=\'alert(1)\' style=\'position:fixed;top:0;left:0;width:100%;height:100%\'这样就造成了xss攻击。作者给出了一个利用的poc:
sometext<blockquote cite=\'x onmouseover=alert(1)WordPress4.1.1及其之前版本均受影响,据称4.1.2版本已经修复了该漏洞。
xss漏洞二
就在不久之前,安全研究团队Klikki Oy发现在新版本的wordpress中仍然可以利用该漏洞,漏洞形成的原理是一样的,利用截断来造成页面布局混乱,只不过这次Klikki Oy利用了mysql的另外一个特点。
在wordpress wp_comments表中存储留言的列为comment_content,他的类型为text。Text最大可以存储64kb的数据,如果用户输入了大 于64kb的数据,mysql的做法依然是将后面的内容截断,由于wordpress并没有限制留言内容的长度,所以当我们提交大于64kb的留言内容 时,依然可以造成页面布局的混乱,形成XSS漏洞。
下面是Klikki Oy团队给出的POC:
<a title=\'x onmouseover=alert(unescape(/hello%20world/.source))style=position:absolute;left:0;top:0;width:5000px;height:5000px AAAAAAAAAAAA [64 kb] ...\'></a>
受影响的版本
WordPress 4.2及以下版本均受影响。