FortiGuard Labs团队最近在WooCommerce中发现了一个跨站点脚本(XSS)漏洞。WooCommerce是一个基于WordPress构建的开源电子商务平台。BuiltWith统计,WooCommerce目前仍是使用量排名第一的电子商务平台,2018年占全球市场份额的22%。
根据FortiGuard Labs团队的说法,此XSS漏洞(CVE-2019-9168)存在于Photoswipe缩放显示功能中。更确切来讲,它是由于WooCommerce没有对图片的标题和标题数据进行“消毒”(清理或过滤)导致的。
此漏洞允许攻击者将任意代码注入到基于WooCommerce的网站中。当受害者访问被注入了攻击代码的网页时,攻击者就可以控制受害者的浏览器、劫持当前的WooCommerce会话、收集敏感信息等。
需要指出的是,此XSS漏洞会影响到3.5.4之前的所有WooCommerce版本。
根据FortiGuard Labs发布的0day漏洞警报,WooCommerce团队推出了一个补丁。从WooCommerce团队提供的信息来看,安装补丁后的WooCommerce会对图片的标题和标题数据进行“消毒”。
图1. CVE-2019-9168补丁
漏洞分析
想要复现此漏洞,第一步是上传图片并将JavaScript代码插入图片的标题字段(见图2)。在WordPress中,将图片上传到低权限帐户不需要WooCommerce插件访问权限。
图2.上传图片
因为只有像管理员这样的高权限帐户才能添加任意JavaScript代码,所以FortiGuard Labs团队的研究人员使用了低权限账户插入已“消毒”的代码“<img src=1 onerror=prompt(‘1’)> ”。
图3.插入XSS代码
然后,一旦有人将受感染的图片添加为产品图片或添加到产品库中,插入的XSS代码就会被添加到产品页面中(见图4)。
图4.被添加到产品页面的受感染图片
现在,当受害者查看此产品并放大产品图片时,XSS代码就会自动执行(见图5和图6)。
图5.放大产品图片
图6.触发XSS攻击
为了简化攻击过程,攻击者可以直接将图片的标题和主题改为“<img src=1 onerror=prompt(‘2’)> ”(见图7)。
图7.创建本地PoC文件
接下来,攻击者所需要做的就是将此图片共享给网站管理员。随后,当管理员将此图片用作产品图片或将其添加到产品库中时,XSS代码会顺带被插入。
图8.网站管理员将PoC文件用作产品图片
图9.触发XSS攻击
如上所述,攻击者可以利用此漏洞来劫持当前用户会话、控制受害者的浏览器等。由于攻击目标是电子商务网站,因此攻击者还可以用它来收集银行卡信息、地址等敏感数据。
解决方案
我们建议,所有目前仍在易受攻击WooCommerce版本的用户都应立即升级到最新版本。
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。