千家信息网

如何绕过Slack后端的SSRF防护机制

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,如何绕过Slack后端的SSRF防护机制,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。下面分享了一个存在于Slack接口api.sl
千家信息网最后更新 2025年02月01日如何绕过Slack后端的SSRF防护机制

如何绕过Slack后端的SSRF防护机制,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

下面分享了一个存在于Slack接口api.slack.com中的缺陷,通过利用Slack内置的斜线命令(Slash Commands)功能,可以绕过Slack后端的SSRF防护措施,在Slack接口上形成两个服务端请求伪造漏洞(SSRF)。

Slack是一个协同办公应用平台和聊天群组,它能将工作伙伴、沟通信息和使用工具进行聚合以便高效完成工作。从世界百强大公司到小型企业,全球有数百万人在使用Slack进行内部团队沟通协调,协同办公推动业务。

利用斜线命令(Slash Commands)绕过Slack的SSRF防护机制

漏洞分析

斜线命令/commands,为Slack中某些特定命令的快捷方式,在消息字段中输入斜线加命令,点击发送,即可完成一项命令操作。如/who为列出当前群组成员,/archive为对当前群组存档,/collapse为对当前群组进行视频图片的折叠显示。默认情况下,工作群组内所有成员都可使用斜线命令,群组管理员也可对组内成员进行斜线命令的权限设定。具体用法点此查看。

早前在Hackerone上,看到了Nicolas Grégoire 提交的一个"绕过Slack SSRF 防护机制"的漏洞,报告中Nicolas Grégoire有以下分析:

特殊情况下,一些Slack功能组合,如"Integrations / Phabricator",以及"Integration / Slash Commands",允许用户提交可由后端服务器处理的URL链接。在这种功能场景中,Slack自身有一个黑名单来限定对如loopback, 10.0.0.0/8, 192.168.0.0/24等特殊内部资源的访问,但是,可以使用"[::]"来作为某个Slack内部主机,对Slack后端服务器发起请求。这种请求方式仅对一些支持IPv6且绑定服务端口的Slack服务器有效。

在漏洞修复中,Nicolas Grégoire给出了在外部代理(Outgoing Proxy)和斜线命令中请求中禁用IPv6的建议。Slack也依此做了修复。

但是,这种修复过的SSRF防护机制,还是可以被绕过的。具体测试步骤如下:

1、登录 api.slack.com,在自己的slack服务中填写你预设的斜线命令(Slash Commands)配置,其中Request URL填写的请求网站 http://206.189.204.187/,为我自己控制的网站:

2、在这个我控制的206.189.204.187网站服务器中,设置一个index.php访问页面,内容为包含一个'Location' 头的重写向,跳转到一个新的地址http://[::]:22/。根据Nicolas Grégoire的漏洞,这个地址http://[::]:22/为Slack支持IPv6的内部主机。index.php:

3、通过api.slack.com,访问自己的slack服务 xxxx.slack.com,加入相应的斜线命令,该过程中通过请求http://206.189.204.187/的操作,间接执行了对Slack内部服务器22端口的请求-http://[::]:22/,结果如下:

4、在http://206.189.204.187/的index.php访问页面加入http://[::]:25/后,由于Slack内部服务器25端口是关闭的,所以结果如下:

也就是,如果Slack内部服务器22端口是开放的,则会有以下响应:

Protocol mismatch.
SMTP on TCP/25

如果Slack内部服务器22端口是关闭的,则会有以下响应:

220 squid3.tinyspeck.com ESMTP Postfix
221 2.7.0 Error: I can break rules, too. Goodbye.

漏洞影响

攻击者利用这种SSRF漏洞,可以借由服务端的功能特性,去读取服务器内部资源信息,探测内部服务端口和版本情况。

漏洞上报进程

2018.7.13 漏洞初报

2018.7.13 漏洞分类

2019.1.23 Slack $500发放

2019.2.22 漏洞披露

在Slack的Event Subscriptions接口参数处绕过SSRF防护机制

漏洞分析

Slack的事件接口(Event API)https://api.slack.com/events-api,可在各种时间发生时进行触发调用,比如消息发送的时候、channels改变的时候等。当我们在创建一些私人定制化的Slack应用时,经常会用到Slack事件接口(Event API)。

配置Slack事件接口时,我们须在事件订阅处(Event Subscriptions)设置一个Request URL用来作为事件的订阅地址。设置好该地址后,当事件发生时,Slack会向该地址发送HTTP POST请求,其中会包含事件验证的"type"、"challenge"和"token"参数。

这里,SSRF防护绕过漏洞就存在于此- https://api.slack.com/apps/YOUAPPCODE/event-subscriptions?,当我们设置的订阅地址URL不符合Slack API标准时,会返回以下响应消息:

Your request URL gave us a 500 error. Update your URL to receive a new request and challenge value.

经过测试,我发现同样用IPv6地址格式 [::] 同样在此可以利用。比如,在我的管理网站中,设置一个x.php,内容如下:

我们构造一个URL地址:http://hacker.site/x.php/?u=http://[::]:22/,URL编码后为:http://hacker.site/x.php/?u=http://%5B::%5D:22/,把它填写在订阅地址的Request URL处,会有以下响应:

也就是说,这种请求Slack内部服务器22端口,且端口开放的响应如下:

"body": { SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.4Protocol mismatch.}

如果Slack内部服务器端口未开放(25),会有如下响应:

"body": { 220 squid-iad-ypfw.tinyspeck.com ESMTP Postfix221 2.7.0 Error: I can break rules, too. Goodbye.}

如果Slack内部服务器端口不存在,会没有任何响应:

漏洞影响

攻击者利用这种SSRF漏洞,可以借由服务端的功能特性,去读取服务器内部资源信息,探测内部服务端口和版本情况。漏洞上报后,Slack安全团队认为我的漏洞是重复报,但我觉得他们搞错了,最终Slack还是认为我的漏洞有效。

关于如何绕过Slack后端的SSRF防护机制问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

服务 漏洞 服务器 命令 端口 斜线 防护 事件 地址 机制 接口 端的 功能 情况 网站 分析 订阅 信息 内容 消息 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 企业微信协同服务器异常 数据库管理系统的主要作用多选 学校校园网络安全措施 紫金桥数据库组点对话框 科恩教育软件开发 昆山正规网络技术哪家便宜 三十岁学软件开发晚吗 数学差的计算机网络技术好学吗 重庆储存服务器虚拟主机 扬州银联软件开发管理方法 合肥网络安全支队 罗修的斗罗大陆服务器 软件开发人员数量 校园网络安全论文选题 软件开发工作优点 软件开发任务书怎么写 网络安全公益广告词 两个数据库主机名重复 数据库机房运营是干嘛的 房车互联网科技服务新巨头 超聚变服务器价格没有优势 数据库非负数怎么设置 天长常见软件开发技术代理商 网络安全审查要多久 英国国家网络安全 什么是网络技术咨询售后服务 数据库怎么查以前的数据带日期 两个数据库主机名重复 无线网络安全密钥无法输入 软件开发常用的快速原型工具
0