如何利用Slack客户端漏洞窃取Slack用户下载的所有文件

前言

在本文中,我们将主要讨论一个值得关注的功能滥用问题,通过该漏洞,攻击者可以窃取甚至控制Slack用户使用Windows环境的Slack桌面应用程序的下载内容。根据我们的协调披露政策,已经通过HackerOne平台向Slack报告了这一漏洞,并且Slack已经在其最新更新v3.4.0中修复了该漏洞。

这一漏洞可能允许远程攻击者在Slack频道中提交精心伪造的链接,一旦受害者点击该链接,那么就会将Slack客户端的下载位置更改为攻击者控制的SMB共享。这样一来,受害者此后下载的所有文档可能都会最终上传到攻击者控制的文件服务器上,直到受害者发现这一配置信息被篡改,并手动修改回来为止。在攻击者的服务器上,攻击者不仅可以窃取文件,甚至还可以在文件中插入恶意代码,从而在受害者下载该文件并通过Slack应用程序打开时,感染受害者的主机。

上述攻击技术依赖于Slack处理链接的方式,以及未正确配置的slack://协议链接。在本文中,我们将讨论此类攻击的一些有趣应用。

更改设置

Slack是一款Electron应用程序,它使我们的逆向工程工作变得非常容易。作为使用Slack的用户,我已经熟悉的一个功能是“slack://”超链接。我认为,这可能是一个值得关注的攻击向量,因此通过一些研究,我找到了处理这些协议链接的对应代码区域。查看这些函数,我们在protocol-link.ts模块中发现了一个值得关注的模块,它可以在单击时更改Slack应用程序的设置。

如何利用Slack客户端漏洞窃取Slack用户下载的所有文件

我们可以查看包含所有Slack设置的Settings-Reducer.ts模块,找到可以更改的可用设置项。中国菜刀

如何利用Slack客户端漏洞窃取Slack用户下载的所有文件

几乎所有这些设置,都可以通过slack://setting链接进行修改。

下载位置劫持

在研究了我们可以改变的所有设置之后,我发现通过slack://协议处理程序能够访问的设置中,有一个最值得关注的,就是“PrefSSBFileDownloadPath”设置。这一设置能够改变用户的下载目标路径。假如攻击者构造一个类似于“slack://settings/?update={‘PrefSSBFileDownloadPath’:’<pathHere>’}”的链接,那么在受害者单击时,就会更改默认的下载位置,直至用户发现并手动更改回来为止。天空彩

但是,在恶意构造的链接中,不能包含某些字符,因为Slack会将它们过滤掉。其中的一个字符就是“:”(冒号),这意味着我们实际上无法提供带有驱动器根目录的路径。然而,SMB共享完全绕过了这种限制。因为它不需要根驱动器,在设置远程SMB共享后,我们可以向用户或频道发送一个链接,在点击该链接后,会将所有下载重定向到该链接。

如何利用Slack客户端漏洞窃取Slack用户下载的所有文件

在单击此按钮之后,我们可以看到,在高级设置(Advanced Settings)中成功的进行了更改。

如何利用Slack客户端漏洞窃取Slack用户下载的所有文件

此时,如果我们下载文件,则如下所示。

如何利用Slack客户端漏洞窃取Slack用户下载的所有文件

实际上,会将其上传到相应的远程SMB共享。

如何利用Slack客户端漏洞窃取Slack用户下载的所有文件

攻击向量

从实际的角度来看,链接的文本应该是经过模糊的。如果该链接看起来存在明显的异常之处,具有一定安全意识的用户很有可能不会点击这一链接。为了实现这一点,攻击者可以选择几种方案。

(1)经过认证的频道成员

我们在研究Slack文档时,发现似乎不可能在频道中发送一个超链接:

如何利用Slack客户端漏洞窃取Slack用户下载的所有文件

但是,在对Slack API进行更深入的分析之后,我们又阅读了相应的文档,最终发现可以通过附件(Attachments)文功能实现本超链接。具体而言,这可以通过使用适当的字段,在Slack POST请求中添加“Attachment”字段来实现:

如何利用Slack客户端漏洞窃取Slack用户下载的所有文件

在将该消息发送至频道后,即可将 http://google.com 超链接到我们特定的恶意Slack链接,而不是在单击时。

如何利用Slack客户端漏洞窃取Slack用户下载的所有文件

在单击时,将会立即更改受害者Slack的下载位置。

(2)未经认证的频道成员

如果我们不是Slack频道的成员,那么可以使用这种方法。这种方法非常值得关注的,因为我们都想知道,是否能在不加入特定频道的情况下,向其中发送恶意链接呢?

答案是肯定的。

这可以通过RSS源的方式来完成。Slack频道可以订阅RSS源,并使用可以包含链接的站点更新来发送至频道。我们以reddit.com为例,进行实际分析,可以尝试发送帖子到一个非常受欢迎的Reddit社区,全世界的Slack用户都订阅了这一社区。在本文的测试用例中,我选择了一个我拥有的私有用户。由于slack://链接不允许在Reddit上实现超链接,因此我将尝试投放一个HTTP链接,它将重新定向到我们的恶意slack://链接,并在单击时更改设置。

如何利用Slack客户端漏洞窃取Slack用户下载的所有文件

一旦发布到这一Subreddit,我们的测试Slack频道(已经订阅到此Subreddit源)将会填充新文章条目,并预览包含该链接的文本。

如何利用Slack客户端漏洞窃取Slack用户下载的所有文件

然而,这种技术有一些缺点:比如当受害者点击该链接时,浏览器会提示如下的对话框,受害者必须单击“是”,才可以立即更改他们的Slack客户端的下载位置。

如何利用Slack客户端漏洞窃取Slack用户下载的所有文件

总结

具有一定安全意识的Slack用户可以发现这种恶意技术,然而,随着长期以来网络钓鱼事件频发,每一位用户都应该具有“不要随意点击链接”的安全意识。RSS源进行漏洞利用,这一漏洞的影响将会进一步扩大。此外,当我们控制上传的共享位置时,我们就可以轻松修改下载的内容,这意一旦攻击者通过不受信任的味着,Slack用户在打开或执行文件时,实际上是在与远程SMB共享中已经和攻击者修改的文档、脚本等文件进行交互,这也会为攻击者创造无限的可能性。

Slack官方对这一漏洞进行了调查,发现目前没有迹象表明这一漏洞曾经被利用过,也未发现用户受到影响的报告。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值