WordPress 5.1 CSRF 导致远程命令执行漏洞安全通告
发布时间 2019-03-15漏洞编号和级别
CVE编号:暂无,危险级别:高危, CVSS分值:官方未评定
影响范围
受影响版本:
WordPress 5.1.1 之前的版本 (不含 5.1.1)
漏洞概述
3 月 13 日,RIPSTECH 发布了 WordPress 5.1 CSRF 漏洞导致远程代码执行的内容细节。攻击者可以通过欺骗目标博客的管理员访问攻击者设置的网站来接管任何启用了评论的WordPress网站。一旦受害管理员访问恶意网站,就会在后台针对目标WordPress博客运行跨站点请求伪造(CSRF)漏洞,而不会受到受害者的注意。CSRF漏洞利用了多个逻辑缺陷和清理错误,这些错误在组合时会导致远程执行代码和完整的站点接管。
漏洞存在于5.1.1之前的WordPress版本中,可以使用默认设置进行利用。
超过33%的互联网网站使用WordPress。考虑到评论是博客的核心功能并且默认情况下已启用,该漏洞会影响数百万个网站。
漏洞详情
在 WordPress 的处理过程中由于要实现一些特性的原因,WordPress并没有针对评论的发布做CSRF限制,那么攻击者就能够使用CSRF攻击来攻击WordPress管理员使其通过其权限创建评论。
WordPress试图通过在评论表单中为管理员生成一个额外的随机数来解决这个问题。当管理员提交评论并提供有效的随机数时,评论将在不经过任何清理函数的情况下创建。如果随机数无效,评论仍会创建,但会被清理函数处理。
可以看到评论通常是wp_filter_kses来负责清理的。wp_filter_kses仅允许仅有 href 属性的 a 标签。
如果是如下这种情况:创建评论的用户拥有unfiltered_html权限,并且没有提供有效的随机数,则用 wp_filter_post_kses 来清理注释。
wp_filter_post_kses 虽仍会删除任何可能导致跨站点脚本漏洞的 HTML 标记和属性。但允许了一些其他的常见属性比如rel。
WordPress 在处理评论中的 a 标签的属性时候会通过如下代码,将属性处理为键值对关系键是属性的名称,值是属性值。
WordPress 然后检查rel属性是否被设置。只有通过 wp_filter_post_kses 过滤注释,才能设置此属性。按如下方式处理。
标题属性值用双引号括起来(第 3018 行)。这意味着攻击者可以通过注入闭合title属性的额外双引号来注入额外的 HTML 属性。
例如:title='XSS " onmouseover=alert(1) id="'
理论上 将会变成
然后在经过处理后该评论即会被 WordPress 存储入数据库。
由于inject属性是onmouseover事件处理程序,攻击者可以使iframe跟随受害者的鼠标,立即触发XSS有效负载。 这允许攻击者使用在目标网站上触发CSRF漏洞的管理员会话执行任意JavaScript代码。所有JavaScript执行都在后台进行,而受害者管理员没有注意到。
现在可以使用管理员的会话执行任意JavaScript代码,可以轻松实现远程执行代码。默认情况下,WordPress允许博客管理员直接在管理仪表板中编辑主题和插件的.php文件。通过简单地插入PHP后门,攻击者可以在远程服务器上获得任意PHP代码执行。
修复建议
默认情况下,WordPress 会自动安装安全更新,您应该已更新至最新版本的 5.1.1。如果您或您的主机由于某种原因禁用了自动更新功能,您也可以禁用注释,直到安装了安全修补程序。最重要的是,在访问其他网站之前,请确保注销管理员会话。
参考链接
https://blog.ripstech.com/2019/wordpress-csrf-to-rce/


京公网安备11010802024551号