WordPress 4.2以下版本XSS漏洞Getshell

作者:飞蓬       Linux520.com原创,转载注明出处

今天网上公布了WordPress 4.2以下版本的XSS漏洞,公布了不到2个小时就被官方修补了。据说是因为漏洞的危害比较大所以官方非常重视,立马出了补丁并推送。漏洞的问题出在WordPress的留言处,是一个存储型的XSS。根据发现这一漏洞的团队的描述中得知这是一个由MySQL特性引起的漏洞。在mysql的utf8字符集中,一个字符由1~3个字节组成,对于大于3个字节的字符,mysql使用了utf8mb4的形式来存储。如果我们将一个utf8mb4字符插入到utf8编码的列中,那么在mysql的非strict mode下,他的做法是将后面的内容截断。这就导致了产生畸形的HTML,攻击者就可以利用这一方式来利用XSS,下面是发现团队的介绍。
11

上面可以看到作者给出了POC让大家测试,这里我下载了一个本地搭建测试一下。版本选择官方的WordPress 4.2版本,需要测试的同学可以在WordPress的官方去下载,地址是https://wordpress.org/wordpress-4.2.zip。下载回来本地搭建以后可以看到默认情况下用户的回复是需要审核通过了才会显示的。
22

但是多数情况下使用WordPress的用户都会关闭回复审核这项功能。在后台的设置 -> 讨论 -> 评论者先前须有评论通过了审核。把钩去掉然后保存设置。
33
去掉评论审核之后我们测试一下网上公布的POC看看是否能触发。
44
可以看到POC只有小段。剩下的就必须用字符填充来完成,长度需要超过64Kb字节。换句话说就是长度需要超过65535个字符。填写完之后就可以看到是否触发了。
55
可以看到确实触发了XSS。可是XSS不光只是用来弹窗,还可以做很多事情,看到今天这个漏洞不到两个小时就被官方修复了,那就足以证明这个漏洞的严重性。经过一番的资料整理之后发现了一个可以GetShell的方法,但是有两个限制,第一个就是评论不能经过审核,因为经过审核的话管理员就直接在后台看到我们的exp了,懂行的就知道是exp不懂行的就会认为是垃圾评论。所以评论审核开启的话一般没戏,除非管理员傻到审核通过我们的评论然后在跑到回复评论的那篇文章上看。第二个条件是需要管理员登陆状态下访问我们评论的那篇文章,这样才能写SHELL。
66
把构造好的EXP写到评论上,然后发表评论。接下来就是需要扮演受害者角色,登陆管理员账号,然后打开植入了恶意代码的文章。就能触发我们的EXP拿到WEBSHELL。
77

 

2天后公布Exploit

==================EXP===================

wp_xss_getshell  password: linux520.com