安全路透社
当前位置:安全路透社 > 安全客 > 正文

【技术分享】看我如何利用企业邮箱搞定上百企业内网或内部账号

http://p1.qhimg.com/t01b924c1559a64f86e.png

一、前言


几个月以前,我发现了一个漏洞,黑客们利用这个漏洞可以获取企业的内部通信数据。漏洞利用起来非常简单,只需要几次点击就有可能访问企业的内部网络、社交媒体账号,比如Twitter以及更为常见的Yammer以及Slack协同账户。

漏洞目前仍然没被修复,因为这种漏洞很难在第一时间修复。在过去的几个月中,我联系了数十家公司以及受影响的厂商,参与这些公司及厂商的漏洞奖励计划以促使他们修复相关漏洞。由于受影响企业数量较多,我无法一一联系上。根据一些黑客小伙伴们的建议,在相关厂商的许可下,我撰写并发布了这篇文章,以便让受影响的每个单位能立即修复这个漏洞。我将这个漏洞称之为Ticket Trick。

 

二、拦路门:需使用企业邮箱注册


如Slack、Yammer以及Facebook Wrokpace之类的商业协同交流平台要求员工使用他们的企业(@company)邮箱来注册平台账户。员工的企业邮箱会收到一封包含确认链接的邮件,一旦员工点击这个链接,他们就可以成为公司的一份子,进行内部交流。

在Slack中,使用相同@company邮箱的用户可以默认加入同一个团队,我们可以将其改为SSO(单点登录)机制或者邀请机制。

在Yammer中,只要拥有@company邮箱,任何人都可以加入。

在Facebook Workpace中,只要拥有@company邮箱,任何人都可以加入。


三、敲门砖:服务台(helpdesk)或使用邮件创建(create-by-email)功能


3.1 方法1:问题追踪功能(THE ISSUE TRACKER)

事情最早可以从GitLab开始说起,对于Slack而言,我发现只要使用有效的@gitlab.com邮箱,就能加入GitLab官方团队中。

与此同时,GitLab提供了一个功能,可以通过电子邮件来创建issue,只要将具体的issue发送到某个@gitlab.com邮箱地址即可。如下图所示,出于隐私原因,我隐去了这个地址。

还有其他企业提供了通过邮件来创建、跟踪issue的功能,GitLab只是其中一员而已。

我尝试利用这个邮箱地址来加入GitLab在Slack上的团队,想看看能不能成功。

我马上刷新了我的问题清单,然后发现确认邮件已作为某个issue添加到我的项目中:

刚添加进来的这个issue中包含一个神奇链接,通过这个链接我们可以加入GitLab的内部Slack团队:

我点击了这个链接,结果与我设想的一样。我收到了一堆欢迎加入的信息(如下图所示),然后我马上删除了我的账号,并向GitLab反馈了这个问题。

GitLab在在同一天晚上回复了我提交的报告。

他们马上就把Slack设置为邀请模式,并向他们的客户通告了这个功能的危险性。

3.2 方法2:支持台(THE SUPPORT DESK)

只有上百个网站拥有开放的issue跟踪功能,所以我想再深入分析一下,看能不能挖掘出一个更加通用的漏洞利用方法。事实上我的确找到了这样一种利用方法,并且这种利用方法比我预想的还要通用,那就是客户服务(customer service)。

发往support@company.com的邮件有时候会出现在某个在线支持门户平台中,比如Zendesk、Kayako、(Fresh)Desk、WHMCS或者某个定制工具中。因此我决定研究一下这个方面,看黑客能否从数据库里提取出关键链接。

这些门户中,大多数都可以集成单点登录(SSO)功能:经过认证的用户可以自动登录到服务台,以确保用户的无缝体验。在我测试的网站中,超过一半网站不需要验证电子邮件,这意味着任何人都可以使用任何电子邮件地址来注册并阅读由该邮件地址所创建的任何支持票据(support ticket)。在线视频分享平台Vimeo正是不需要进行验证的公司之一。

所以我注册了一个Vimeo账户,所用邮箱为feedback@slack.com,这个邮箱正是Slack用来发送验证链接的那个邮箱。

Slack有个非常方便的“查找工作区(find your workspace)”的功能,利用这个功能,我找到了Vimeo对应的那个实例,然后使用support@slack.com这个地址完成了注册。

在后台处理逻辑中,feedback@slack.com会往support@vimeo.com这个地址发送一封邮件,其中包含验证链接。

当support@vimeo.com收到这封邮件后,该邮件会被归类为由feedback@slack.com所创建的支持票据,而后者正是我用来注册的那个邮箱。

因此,我前往帮助中心,检查我收到的支持票据。

我的确收到了一个支持票据,其中包含一个验证链接,通过这个链接我可以加入Vimeo团队。

Vimeo团队马上响应了我提交的漏洞报告,并根据他们的漏洞奖励计划给我发放了2,000美元的奖励(#220102,细节待公布)。

集成了支持门户工具又缺少邮箱验证机制的所有网站都会受到此漏洞影响,并且形势比想象中的更加严峻。

我在Kayako以及Zendesk中找到了两个额外的漏洞,在常见设置下,我们可以利用这两个漏洞绕过邮件验证过程。这样一来,即使目标没有启用SSO功能并且启用了邮件验证机制,我们也总是能够成功完成攻击。在6月1日,我向这两个厂商的漏洞响应计划提交了问题报告,相应的修复技术正在研发中。

除此之外,如果网站在用户注册时需要验证邮箱地址,然而在修改邮箱地址时却不需要验证,这种网站也会受漏洞影响。


四、影响范围进一步扩大


如果某个企业没有使用Slack,并认为这样已足够安全,那么他们可能想错了,因为我发现的这个问题影响范围非常广。比如,诸如Yammer之类的其他一些商业通讯工具也受这种攻击影响:

如上图所示,我成功加入了某家公司的Yammer内网中。

此外,由于我们可以读取发往support@的邮件,我们也可以看到发往该地址的任何密码重置链接。事实证明,不少公司会使用这个邮件地址来注册诸如Twitter的第三方服务以及社交媒体。

这意味着攻击者也可以劫持与support@邮箱相关联的任何账户:

某些情况下,这个邮箱也会在目标公司的网站上关联一个特权账户。注册no-reply@company.com后,你可以拦截support@company.com的密码重置令牌,获得特权账户的访问权限,最终可以访问所有客户的隐私信息。

如果这些方法都行不通,攻击者仍然可以读取并回复由该邮箱创建的那些支持票据(不管是之前的还是之后的)。我的一个朋友曾经因为某些问题往某个公司的帮助支持邮箱写过一封信。经过分析后,我发现这个公司的确存在漏洞,所以我使用朋友的邮箱完成注册,点击“my support cases”之后,我果然找到他之前发送的那封邮件。只要人们在服务台上没有对应的账户,我就可以读取并回复人们发往客户服务的所有邮件。用户认为与他们交谈的是客户服务人员,实际上躲在背后的却是一名黑客。


五、厂商及企业的回复


研究每个企业对这个漏洞的处理方式本身就是一件非常有趣的事情:

1、大多数企业能够以非常专业的方式来处理我提交的报告。某些企业甚至决定给我发放高达8,000美元的漏洞奖励。个别时候我会得到负面响应,甚至某些企业会选择完全忽略我的报告。

2、在问题追踪功能方面,GitLab(#21823,已披露) 很快做出了响应,他们取消对公司域名的信任,同时修改了他们的Slack设置。此外,他们也更新了说明文档,以免客户犯下同样的错误。

3、我向Slack报告了这个问题(#23923,待披露),想看看我们能否在高层逻辑上阻止这个漏洞。虽然对这个问题他们不承担直接责任,但该问题的确会给很多客户造成影响。

Slack对此非常重视,他们修改了no-reply邮箱,在其中添加了一段随机令牌(如下图所示),这样能够有效地阻止黑客对服务台软件的攻击。虽然问题跟踪功能以及其他邮箱集成功能仍然存在问题,然而这些问题已经与Slack本身无关。Slack为此给我发放了1,500美元的奖励。

4、我也跟Yammer联系过。最开始我没有得到任何回应,两周以后,我又发了一封邮件,这次他们回复我说他们已经将邮件转发给了Yammer的安全团队,顺便告诉我他们对安全漏洞的定义。到目前为止,他们没有像Slack那样采取积极措施,在更高层面解决这一问题。

因此,黑客仍然可以利用我发现的这些方法加入Yammer工作组中。

5、我向Kayako以及Zendesk#235139,已披露)的漏洞奖励计划提交了SSO绕过漏洞。两者都解决了这个问题,并分别向我发放了1,000美元以及750美元的奖励。


六、经验教训


1、一旦突入企业内部,企业的安全性就会大大降低。利用团队中所有人都可以访问的那些资源,攻击者可以获取员工贴在上面的密码、企业秘密以及客户信息等隐私信息。

2、我们必须持续在每个地方寻找安全隐患。这个问题已经在上百个网站中存在多年,并且许多安全专家每天都会面对这些网站,然而据我所知,目前并没有其他人发现这个问题。

3、大型企业难以掌握员工动向。我与某个大型支付企业的CISO讨论过这个问题,他向我保证说,他们企业肯定不存在这个问题,因为他们的员工不应该通过Slack来交流。他们有用来处理这些事务的内部网络。我加入了该企业全球范围内332名员工所创建的Slack频道,证明了他的错误观点。最后我得到了5,000美元的奖励。

4、如果你想知道你可以使用自己的公司邮箱加入哪些Slack团队,你可以试一下Slack的“查找团队”功能。


七、FAQ


1、如何知道自己公司是否受到影响?

如果支持票据可以通过电子邮件来创建,并且未经验证邮件地址的用户可以访问支持票据,那么目标就会受到该漏洞影响。此外,如果公共问题追踪及响应功能使用特有的@company.com邮箱来将信息直接提交给某个票据、论坛帖子、私人消息或者用户账户,那么也会收此漏洞影响。

2、企业存在漏洞后如何修复?

目前我知道有几种方法可以解决这一问题。类似AriBnb、LinkedIn以及GitHub之类的公司会使用不同域名的邮箱地址,比如@reply.linkedin.com或者@mail.github.com。这些邮箱无法用来注册类似Yammer或Slack之类的服务。GitLab根据此建议更新了他们的说明文档,以防止在问题追踪功能中存在这类漏洞。

某些公司选择禁用电子邮件功能、服务门户站点或者单点登录功能,其他公司使用了正确的邮箱验证机制。此外,我不建议公司使用官方的support@邮箱来注册Twitter、Slack或者Zendesk之类的服务。

3、作为受影响的厂商,我如何阻止这类漏洞?

对于使用客户服务邮箱注册的那些用户,你可以采用额外的安全措施,然而在许多情况下,这种方法并不实用也不高效。Facebook Workplace使用了更加巧妙的方法,他们利用随机生成的邮件地址来发送邮件,比如notification+ajivdw9kpwld@fbworkmail.com,攻击者无法猜中这类地址。在回复我的邮件中,Slack表示他们会采用这种随机化邮件地址。

4、目前还有上百个企业受到影响,你为什么公布这个漏洞?

受影响企业数目众多,我无法全部通知到,公布这个漏洞可能存在法律风险,因为某些公司并没有要求我提供安全公告。我只联系了少数几个受影响的公司及厂商,这些公司及厂商具备公众漏洞披露计划。对我来说,现在就公布详细信息是一个艰难的决定,因为这样可能直接导致安全风险,但根据历史经验,我们知道囤积隐藏漏洞也并不是个好主意。

5、你的身份?

我叫Inti,住在比利时。从孩时起我就擅长捣蛋破坏。今年我22岁,是比利时最大广播电台布鲁塞尔工作的创意编辑。晚上我会以善良黑客的身份搞些破坏,GoogleFacebookMicrosoftYahoo等都感谢过我的劳动成果。

6、还有其他成果吗?

我劫持过特朗普的推特,创办了StalkScan.com网站,这个网站可以深入挖掘Facebook的人际关系,我也喜欢在medium上分享我的研究成果。

大家可以关注我的推特了解更多信息。


原文链接:https://medium.freecodecamp.org/how-i-hacked-hundreds-of-companies-through-their-helpdesk-b7680ddc2d4c

未经允许不得转载:安全路透社 » 【技术分享】看我如何利用企业邮箱搞定上百企业内网或内部账号

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册