ssrf之黑名单绕过

admin 2024年9月1日16:38:10评论21 views字数 1336阅读4分27秒阅读模式

正文

正常情况

在正常情况下,Slack的集成功能允许用户提交一个合法的外部URL,然后服务器会访问该URL。例如:


POST /services/4814366410 HTTP/1.1
Host: agarri.slack.com
...
url=http://example.com/resource

~

在这种情况下,服务器会访问http://example.com/resource,这是一个正常的请求行为。

受到攻击后的请求(SSRF攻击)

如果攻击者利用了SSRF漏洞,他们可以提交一个恶意的URL,例如使用IPv6格式的地址[::]来绕过黑名单,并访问内部服务:

POST /services/4814366410 HTTP/1.1
Host: agarri.slack.com
...
url=http://[::]:25/

在这个例子中,Slack的服务器会尝试访问http://[::]:25/,而这个地址实际上指向了攻击者意图访问的内部网络的端口25(通常是SMTP服务)。

攻击流程详细解释

步骤 1: 发现SSRF漏洞

攻击者首先发现了Slack集成功能中可以提交URL的地方,并且意识到这些URL会由服务器直接访问。同时,攻击者注意到黑名单检查可以通过使用IPv6的特定表示法[::]绕过。

步骤 2: 构造恶意请求

攻击者构造了一个恶意的HTTP请求,这个请求中包含了一个绕过黑名单的URL。具体来说,他们使用了[::]表示法来指向内部网络中的服务。例如:

POST /services/4814366410 HTTP/1.1
Host: agarri.slack.com
...
url=http://[::]:25/

这个URL中的[::]表示本地的IPv6地址,而端口25通常用于SMTP服务,攻击者希望通过这个请求访问内部网络的SMTP服务器。

步骤 3: 发送恶意请求

攻击者发送这个构造好的HTTP请求,Slack服务器会尝试访问攻击者指定的内部服务:

curl -X POST https://agarri.slack.com/services/4814366410 
-H "Content-Type: application/x-www-form-urlencoded" 
--data "url=http://[::]:25/"

步骤 4: 分析响应

服务器访问该URL后会返回响应,攻击者可以通过这个响应判断内部服务的存在。例如,如果SMTP服务在运行,可能会返回类似于220 squid3.tinyspeck.com ESMTP Postfix的响应。攻击者可以进一步分析这个响应以确定内部网络中的服务状态和版本信息。

步骤 5: 利用漏洞进行进一步攻击

一旦确认了内部服务的存在,攻击者可能会尝试进一步利用其他已知漏洞进行更深入的攻击,比如尝试通过SMTP服务发送恶意邮件,或者通过其他服务获取更高权限的访问。

这里Slack使用了一个黑名单机制来阻止访问内部网络(如localhost、10.0.0.0/8、192.168.0.0/24等),但这个黑名单可以通过使用“[::]”作为主机名来绕过。这个攻击手法只能影响那些绑定了所有接口并支持IPv6的服务。

原文始发于微信公众号(迪哥讲事):ssrf之黑名单绕过

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月1日16:38:10
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   ssrf之黑名单绕过https://cn-sec.com/archives/3117602.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息