主页 > 网络知识 > 漏洞分析:从Mautic中的未认证XSS到远程代码执行(RCE)

漏洞分析:从Mautic中的未认证XSS到远程代码执行(RCE)

 

漏洞分析:从Mautic中的未认证XSS到远程代码执行(RCE)

 

漏洞概述

Mautic是一款非常热门的开源软件,可以帮助企业实现市场营销自动化。近期,研究人员在GitHub上研究该应用程序并分析其源代码时,发现了一个攻击链。通过利用其中的安全漏洞,未经身份验证的攻击者可以通过利用存储型XSS漏洞在托管了Mautic的服务器上实现远程代码执行。目前,该漏洞的CVE已被分配为CVE-2020-35124CVE-2020-35125,并已在Mautic v3.2.4版本中成功修复。

漏洞影响

该漏洞是一个高危漏洞,未经身份验证的攻击者可以通过利用存储型XSS漏洞在托管了Mautic的服务器上实现远程代码执行。

截止本文发稿时,已有大约六千个Mautic实例受到了该漏洞的影响:

 

漏洞分析:从Mautic中的未认证XSS到远程代码执行(RCE)

 

关于Mautic

Mautic是一款功能强大的开源营销自动化软件,它也是目前全球最热门的营销自动化软件。该软件目前用户已超20万,提供了35种语言的不同版本。Mautic作为国外最强大的开源自动营销系统,其拥有不亚于国内任何商业版自动营销的功能,并且在在不断的进行功能迭代和更新。其源代码开放支持二次开发,私有化部署让用户数据,企业营销数据等核心数据保存在自己的服务器上。除此之外,Mautic还可以依据用户行为,营销行为,用户属性,企业属性等超过100种数据维度制定自定义的可视化营销流程,满足企业的营销需求,大幅度提高营销效率,节约时间和成本。

一个完整的营销自动化系统国内一般收费是一年大几十万(每年哦),而且数据是在服务商云服务器的,如果不续费数据就没有了。Mautic开源免费的营销自动化系统功能完全不逊于那些商业的营销自动化系统,而且数据是在企业自己服务器的,源代码也是开放的,支持企业进行二次开发。

漏洞发现

作为一个营销自动化平台,Mautic允许用户收集线索并跟踪他们对不同类型内容的参与度。在这里,有两种类型的内容值得关注:资产和表单。“资产”只是一个潜在客户可以下载的文件。潜在客户将获得一个下载资产的链接,当潜在客户单击该链接时,该资产将直接从Mautic应用程序下载。表单则是用户可以设置的由Mautic或第三方站点托管的东西。当潜在客户填写并提交表单时,表单将通过对Mautic应用程序的API调用提交回来。

这就非常有意思了,因为这意味着Mautic的攻击面比一个普通的Web应用程序更广。我们不仅需要考虑Mautic中的用户,因为他们通常会在Web应用程序中进行身份验证,而且还需要考虑通过外部内容与Web应用程序交互的未经身份验证的潜在客户。

当我们在查看Mautic界面时,我们寻找了可能受潜在客户影响的数据,其中一个突出的问题是,推荐人的信息会在许多地方出现。“推荐人”是指当他们下载资产或提交表单时,潜在客户来自的第三方网站。只要潜在客户点击下载链接或提交表单,Mautic就可以通过捕捉和存储HTTP Referer Header来跟踪这部分信息。比如说,“Downloads of all Assets”的报告页面将显示“Top Referrers”:

 

漏洞分析:从Mautic中的未认证XSS到远程代码执行(RCE)

 

虽然浏览器会根据用户所在的网站自动设置HTTP Referer Header,但没有任何东西可以阻止用户去操作这个Header。通过研究发现,未经身份验证的攻击者可以提供一个包含XSS Payload的HTTP Referer Header,并让Mautic存储它。如果Mautic中的合法用户查看了一个页面,而其中又出现了Referer数据的话,那么将会触发XSS Payload,这将允许攻击者以Mautic用户的身份执行任意JavaScript代码。

在下面给出的例子中,攻击者发送了一个简单的XSS Payload:

sh-3.2# curl -o test.pdf -v 'http://192.168.0.116/asset/1:testpdf' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:83.0) Gecko/20100101 Firefox/83.0' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' -H 'Accept-Language: en-US,en;q=0.5' --compressed -H 'Connection: keep-alive' -H $'Referer: <img/src="doesnotexist.jpg" onerror="eval(window.atob('YWxlcnQoJ3hzcycp'))">'

其中eval()函数中包含了Base64编码的Payload,即"alert('xss')"。

当合法的Mautic用户访问“Download of All Assets”页面时,TA将会看到如下图所示的情况:

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!