了解服务器端请求伪造攻击
服务器端请求伪造(SSRF)是今年(2021年)发布的OWASP十大名单中最新增加的一项。它在名单上排在第10位。根据OWASP的数据,其发生率仍然比较低。
SSRF攻击常见于从服务器获取数据以显示给客户端的网络应用。当应用程序在没有验证所提供的URL的情况下获取资源时,该应用程序就容易受到SSRF的攻击。攻击者可以改变应用程序的请求并发送一个恶意请求。
前提条件
要跟上这篇文章,需要一些关于使用[Burpsuite]、[OWASP Zap]或其他工具拦截流量的知识。
SSRF攻击的概述
服务器端请求伪造是一个网络应用程序漏洞,当服务器端应用程序被诱导向攻击者选择的任意域发出任意的HTTP请求时,就会发生这种情况。
这仅仅意味着网络应用在没有验证用户提供的URL的情况下获取远程资源。通常情况下,当攻击者试图从 "已知 "的网络应用程序以外的其他来源访问服务器的资源时,他们大多会被阻止。
在我们的案例中(使用SSRF),服务器将接收请求,就像它来自网络应用程序一样,并且请求将被接受。攻击者的请求的限制力量将是给这个网络应用的权限范围。
SSRF攻击可以通过不同的方式进行,例如。
- 针对托管服务器- 通过这种方式,请求被发送到托管网络应用的网络服务器。攻击者也可以利用这种攻击来进行其他类型的攻击。
- 针对其他后端系统- 攻击者可以利用上述攻击,访问与托管应用程序的网络服务器相同网络后端的其他服务。这些其他服务器可能不会阻止请求,因为它们来自一个已知的来源。
SSRF攻击的类型
一些常见的SSRF攻击类型有。
- 常规SSRF
- 盲目的SSRF
1.常规SSRF
在这种类型的攻击中,攻击者可以收到反馈。例如,如果攻击者请求文件,他们可以在完成请求后查看文件。
2.盲目的SSRF
在这种类型的攻击中,攻击者无法通过错误信息或HTTP响应从服务器获得响应。虽然攻击者没有得到响应,但这并不意味着这种攻击对攻击者没有价值。
测试SSRF攻击。
我们可以通过几种方式来测试我们的应用程序是否存在SSRF漏洞。最值得推荐的是手动代码审查,检查URL输入是否被验证。
有时,我们可能会发现,我们无法访问我们应用程序的源代码,但这不应该妨碍我们测试我们的应用程序。
为了说明在你无法访问源代码的情况下我们如何测试SSRF,我将使用Portswigger的[这个本地服务器实验室]。
在我们的实验室中,为了识别SSRF漏洞,我们需要在Web应用程序中删除一个用户。这里的应用程序从服务器上请求数据,以显示当前可用的股票数量。
当你拦截该请求时,你会看到股票请求的URL。

通过这个,我们尝试用一个新的请求服务器产生管理页面的URL来替换原来的请求URL。

如上图所示,我们对我们的URL进行了编码,但即使不进行编码,该URL也能在这个给定的实验室中工作。一旦请求被提交,我们就能看到管理页面。

这是第一个迹象,表明我们的实验室容易受到SSRF的攻击。为了升级这一点,我们将尝试删除这个管理面板中显示的一个用户。当我们检查HTML页面时,我们可以看到删除用户的URL。

现在我们有了执行删除操作的特定URL,我们将再次请求股票金额,并用我们找到的这个新的URL来替换。

一旦提交,这些应该就是结果了。

为了确认我们的请求是成功的,我们重新提交我们对管理页面的请求。现在我们可以确认,我们的行动是成功的。

有时,当组织使用一个保留的IP地址时,我们可能需要尝试几个地址来获得内部网络页面。这些地址中的一些包括
- 10.0.0.0/8
- 127.0.0.0/8
- 192.168.0.0/16 在测试你的应用程序时,你也可以从可能得到的错误中获得更多信息。
错误通常包含有关在应用程序中运行的服务的信息,还包括某些端口是否关闭或开放。这些信息将帮助你决定在攻击应用程序时使用哪些端口或方法。
SSRF攻击的影响
SSRF攻击的一些影响是。
- 容易受到SSRF攻击的应用程序有可能将其机密数据泄露给公众。
- 代码执行。当攻击者通过SSRF进入你的内部系统时,他们可以执行恶意代码并获得你的系统的反向外壳,用它来造成进一步的伤害。
- 由于这些系统通过SSRF攻击的访问,内部系统网络的网络扫描成为可能。
如何防止SSRF攻击
防止SSRF攻击的一些方法是。
- 加密数据并验证所有内部连接。
- 对资源访问进行分段,将有助于减少SSRF的影响。
- 服务器端输入的白名单。
- 禁用HTTP重定向。
- 应阻止用户输入的直接使用。
结语
随着无服务器平台和微服务的兴起,我们预计SSRF攻击的影响会随着时间而扩大。如果不加以预防或检测,公司可能面临巨大的经济和数据损失。
在这篇文章中,我们看了一下。
- SSRF攻击的概述。
- SSRF攻击的类型。
- 对SSRF攻击的测试。
- SSRF攻击的影响。
- 如何防止SSRF攻击。
让我们确保我们的网络应用是安全的。