📜  深度的服务器端请求伪造(SSRF)

📅  最后修改于: 2021-08-27 16:49:26             🧑  作者: Mango

服务器端请求伪造(SSRF):
SSRF代表服务器端请求伪造。 SSRF是服务器站点攻击,它导致应用程序后端服务器泄露敏感信息。在服务器站点中,请求伪造攻击者将恶意数据包发送到任何面向Internet的Web服务器,并且此Web服务器代表攻击者将数据包发送到在内部网络上运行的后端服务器。此漏洞通常在应用程序中发现,它们具有提供URL以便从相应服务器获取数据的功能,该漏洞也存在于应用程序中,其中来自不同主机的两个或多个服务器相互通信以进行信息共享。

让我们借助示例来探索概念:

在上图中,您可以看到攻击者将精心制作的数据包A发送到公用服务器,并填充用户查询公用服务器将请求与数据包B一起发送到后端服务器,因为此请求来自公用服务器后端服务器会信任来自内部网络的数据包B并接受其数据包并发送响应。这是可能的,因为攻击者代表其他服务器发出了请求。

SSRF的类型:
1.盲SSRF:
在盲SSRF中,攻击者无法控制在可信内部网络中发送到应用程序的数据包B的数据。攻击者可以在这里控制服务器的IP地址和端口。为了利用这种类型的SSRF,我们必须在URL后面加上冒号和端口号,通过观察服务器的响应和错误消息,我们可以找到服务器的打开和关闭端口。他们的地位。

例子 :

http://example.com:1337
http://example.com:9923
http://example.com:43
http://example.com:22

2.有限响应/部分SSRF:
在这种类型的SSRF中,我们从服务器获得的响应有限,例如页面标题或可以访问资源,但看不到数据。我们只能控制到达内部应用程序的数据包B的某些部分,这种类型的漏洞可用于读取本地系统文件,例如/ etc / config,/ etc / hosts,etc / passwd等。通过使用file://协议,我们可以读取系统上的文件。在某些情况下,使用XXE注入DDos这些漏洞类型可能对于利用Partial SSRF Vulnerability有用。

例子 :

file:///etc/hosts
file:///etc/config
file:///etc/passwd

3.全响应SSRF:
在完全SSRF中,我们可以完全控制数据包B(如图所示)。现在,我们可以访问内部网络上运行的服务,并找到内部网络中的漏洞。在这种类型的SSRF中,我们可以使用诸如file://,dict://,http://,gopher://等协议。在这里,我们可以创建不同的请求,并且可以在存在任何漏洞的情况下利用内部网络存在。完整的SSRF漏洞可能通过缓冲区溢出导致应用程序崩溃,通过在请求中发送大字符串导致缓冲区溢出。

例子 :

http://192.168.1.8/BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

测试SSRF漏洞期间的潜在障碍:

  • 白名单:服务器仅允许在请求中使用少数域名,如果该列表中的域名与请求中的域名匹配,则服务器具有该域名的白名单,然后仅接受该请求,否则服务器拒绝该请求。
  • 黑名单:-服务器丢弃服务器黑名单中包含IP地址,域名,关键字的所有请求。
  • 受限内容:-服务器仅允许用户访问特定数量的文件,它仅允许少数文件扩展名类型以供公共访问。

测试SSRF漏洞的关键点:

  1. 始终确保您代表公共服务器而不是浏览器向后端服务器发出请求。
  2. 要从服务器获取数据,还可以尝试将http:// localhost / xyz /与http://127.0.0.1/xyz一起使用。
  3. 服务器可能具有防火墙保护,如果可能,请始终尝试绕过防火墙。
  4. 确保该请求来自服务器,而不是来自本地主机。