包括最新版本的WordPress都存在评论处的存储型XSS。攻击者可以未授权通过WordPress的评论注入JavaScript攻击代码。
评论被查看的时候,JavaScript就触发了。如果管理员登陆查看评论触发后,可能导致攻击者进入后台通过主题或插件编辑从而命令执行控制整个服务器。
当然,攻击者也可以创建新的管理员,甚至修改管理员密码,等等只要是管理员能在目标系统上做的任何事情。
如果评论文字足够长,插入数据库的时候将会被截断。MySQL TEXT类型的大小限制是64k,所以评论必须得超过这个长度。
截断的结果导致了页面畸形HTML。攻击者可以插入允许的HTML标签,就像之前两个存储型漏洞一样,影响着WordPress内核。
这个漏洞跟之前Cedric Van Bockhaven报告的类似(14个月后才修复。。。),参见安全脉搏的《WordPress < 4.1.2 存储型XSS分析与稳定POC 》。只是它使用了特殊字符截断了评论,我们这次使用超长评论达到同样效果。
在这两个案例中,被注入的JavaScript 代码明显不能在管理员面板触发,所以得在评论列表触发,那么我们就得先发一个正常得评论得以通过,第二个评论才用我们的恶意代码。
Klikki2014年发过一个类似漏洞,能在管理员面板触发,而当时的评论还在审核列表。参见安全脉搏的WordPress 3.0-3.9.2 XSS 漏洞详细分析和wordpress 存储型XSS 全自动化攻击工具
评论中输入如下长串:
<a title='x onmouseover=alert(unescape(/hello%20world/.source)) style=position:absolute;left:0;top:0;width:5000px;height:5000px AAAAAAAAAAAA...[64 kb]..AAA'></a>
确认有漏洞的版本: WordPress 4.2, 4.1.2, 4.1.1, 3.9.3.
测试的 MySQL版本 5.1.53 和5.5.41.
YouTube视频demo
https://www.youtube.com/embed/OCqQZJZ1Ie4
自从2014年11月20后,我们通过各种方式(如邮件,如CERT-FI,如HackerOne.)都联系不上WordPress官方了,看上去官方是有意拒绝我们的漏洞报告啊。
为阻止网站被入侵,管理员最好关闭评论,不要通过任何评论。
漏洞为Klikki Oy团队的Jouko Pynnönen所挖掘。
【原文:WordPress 4.2 Stored XSS 安全脉搏SP胖编翻译】