Magento是Adobe公司旗下一个功能丰富的专业开源电子商务解决方案,为商家提供一个外观、内容和功能的完全灵活控制。Magento直观的管理界面包含强大的营销、商品推销和内容管理工具,使商家能够创建适合其独特业务需求的站点。Magento号称宇宙最强企业终极电子商务解决方案。
Magmi是用PHP语言编写的Magento插件,用作Magento数据库客户端,可以向目录中增加商品数量或进行更新。Tenable研究人员在Magento插件Magmi中发现了2个安全漏洞。
漏洞分析
CVE-2020-5776
CVE-2020-5776漏洞是MAGMI插件中的CSRF(跨站请求伪造)漏洞,漏洞产生的原因是MAGMI的GET和POST端点没有进行CSRF保护,比如使用随机的CSRF token。攻击者利用该漏洞可以执行CSRF攻击,比如诱使Magento管理员点击攻击者用来认证MAGMI的恶意链接。此外,攻击者还可以劫持管理员的会话,在服务器上执行任意代码。
CVE-2020-5777
CVE-2020-5777是一个认证绕过漏洞,漏洞产生的原因是存在使用默认凭证的fallback降级机制,漏洞影响MAGMI v0.7.23版本及更早版本。
MAGMI使用HTTP基本认证,并对Magento数据库的admin_user表的用户名和密码进行检查。如果连接到Magento数据库失败,MAGMI就会接受默认凭证magmi:magmi。因此,攻击者可以通过数据库DoS(DB- DoS)攻击来迫使数据库连接失败,然后用默认凭证来认证MAGMI。
攻击者利用该漏洞可以在受害者设备上进行远程代码执行。研究人员在测试过程中满足以下条件时成功执行了Magento DB- DoS攻击:同时发生的最大MySQL连接数大于同时发生的最大Apache HTTP连接数。通过发送超过MySQL连接数限制、同时小于apache HTTP连接限制的最大值,攻击者就可以临时拦截对Magento数据库的访问,并同时用默认凭证发起到MAGMI 的认证请求。
MySQL的连接限制通过变量max_connections来定义,默认是151。可以通过连接到MySQL实例和执行如下数据库查询来检查该值:
SHOW VARIABLES LIKE "max_connections"
Apache HTTP连接限制位于Apache Multi-Processing Module (MPM)配置的“MaxRequestWorkers” (MaxClients 或 pm.max_children)中。
研究人员测试过程中发现,从Apache v2.4.10版本开始,默认值为400或250。在之前的版本中,默认值为150,小于MySQL的默认max_connections。
PoC
研究人员在GitHub上公布的漏洞的PoC代码,参见:
https://github.com/tenable/poc/tree/master/MAGMI/cve-2020-5777
https://github.com/tenable/poc/tree/master/MAGMI/cve-2020-5776
厂商回应
Tenable研究人员在6月3日将漏洞详情报告给了MAGMI插件开发者。随后于6月17日和7月6日分别收到反馈称漏洞正在修复中,随后没有反馈。8月30日,开发者在发布的插件新版本中修复了CVE-2020-5777漏洞,但CVE-2020-5776漏洞至今仍没有修复。
本文翻译自:https://zh-cn.tenable.com/blog/cve-2020-5776-cve-2020-5777-multiple-vulnerabilities-in-the-magmi-magento-mass-import-plugin如若转载,请注明原文地址: