wordpress store xss浅析

 Stardustsky   2015-04-29 22:28   2047 人阅读  0 条评论

0x01

    看了下最近新出的两个wordpress存储型xss,原理其实很简单,很容易看懂,不过要发现这两个洞还是不太容易,要很清楚各版本mysql的字符集支持。当然,多fuzz也是可以弄出来的,不过那就相当费时间和头疼了。


    先贴两个关于此次漏洞的详情链接:


WordPress <4.1.2 Stored XSS:

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

WordPress <4.2.1 Stored XSS:

http://seclists.org/fulldisclosure/2015/Apr/84

 

0x02

    大致的说一下造成这两个漏洞的原因,两个都是由于截断造成的xss,不过第一个是利用字符集来进行截断,第二个则是超长截断,这两个截断都是利用了mysql的特性。


存储型XSS-1

    这个漏洞的成因在于wordpress支持utf-8mb4来存储一些emoji表情,mysql则是在5.5之后对utf-8mb4开始支持的,按理来说这是不应该存在问题的,但是mysql默认的编码是utf-8,这样就造成了当我们插入4字节字符时会被mysql自动识别为utf-8mb4从而被截断(utf-8编码下不支持存储4字节字符),所以在wordpress中可以利用这个特性来进行拼接或者可以直接xss。

简单POC:

test<blockquote cite='x onmouseover="alert(1) \xD8\x34\xDF\x06">

存储型XSS-2

    这个则是利用了mysql的text最大只支持存储64K数据的特性,wordpress的评论又恰好不限制字数,所以多余的部分就被截断,这个和第一个利用方式其实差不多。太长就不添加poc了。


    另外,第一个漏洞有限制条件,即strict mode必须要为关闭(off状态),否则也是无法利用的,不重复造轮子了,更详细的分析见:

    http://linux.im/2015/04/28/WordPress-Stored-XSS-Vulnerability.html


本文地址:http://www.stardustsky.net/index.php/post/23.html
版权声明:本文为原创文章,版权归 Stardustsky 所有,欢迎分享本文,转载请保留出处!

 发表评论


表情

还没有留言,还不快点抢沙发?