作为我们对Sucuri防火墙定期研究审计的一部分,我们发现了一个愿望清单插件YITH WooCommerce Wishlist,存在SQL注入漏洞。据统计,该插件目前至少已被50000+的wordpress站点安装使用。
受影响范围
这个漏洞主要出现在2.2.0版本以下,主要是因为该版本缺少对用户输入数据进行严格过滤措施。攻击者(至少有一个用户帐户)可能会利用该缺陷盗取用户敏感数据,甚至通过某些配置项危害你整个的WordPress安装。
需要提醒的是在MySQL版本低于5.7的服务器中,该漏洞极易被利用。
这个漏洞有个非常有意思的地方,也是我们决定要发布该安全公告的原因,就是使用这个插件的站点通常会启用免费“用户注册”功能,以允许用户的偏好(例如愿望清单)被存储和访问,以便后续使用。
技术细节
产生漏洞的代码,可在2.1.2版本中的includes/class.yith-wcwl-shortcode.php的第523行中找到。这段代码是get_products()函数的一部分,用于返回特定用户的所有wishlist元素:
如果攻击者控制了$limit变量,就可以为其赋任意值。例如构建一个查询语句。这样攻击者将有可能直接获取走,几台服务器上的所有敏感数据。例如加密哈希和电子邮件等。
攻击者想要达到构建查询的目的必须满足以下条件:
分页值必须为“yes”
count变量必须大于1(此变量存储特定用户的wishlist元素数量)
limit变量必须被设置
攻击者可以通过includes/class.yith-wcwl-shortcode.php中定义的短代码yith_wcwl_wishlist来满足所有这些条件:
攻击者唯一要做的就是创建一个用户帐户,并调用漏洞短代码(具体可以参考我们此前的文章)。
紧急措施
检查你的插件版本,并尽快将其更新到最新版!
如果由于某种原因你无法升级,我们建议你使用Sucuri或其它WAF来保障你的站点安全。
领取专属 10元无门槛券
私享最新 技术干货