服务器端请求伪造攻击 (SSRF) 利用 Webapplications中的缺陷来访问内部资源。 了解如何保护您的应用程序和 API。

SSRF 是一种安全漏洞,当攻击者操纵 Web应用或 API 向内部资源发出请求时会发生,可能导致未授权访问、数据暴露、系统入侵和远程代码执行。 即使受到防火墙或虚拟专用网络 (VPN)解决方案的保护,攻击者也会绕过输入验证并强迫应用s访问恶意 Web 目标。

什么是 SSRF 攻击?它是如何运作的?

在 SSRF 攻击中,攻击者通常会操纵用于指定服务器端 HTTP 请求的目标 URL 的输入。 当应用在从远程资源提取数据之前没有验证或清理用户输入的 URL 时,就会出现这种情况。 攻击者可以让目标服务器向任意目的地执行请求,从而可能导致各种安全风险。 

如果目标资源与其他系统(例如云元数据服务或后端 API)具有信任关系,也会导致这些攻击,从而允许攻击者向这些受信任的服务发出请求并提取敏感信息或执行未经授权的操作。

由于现代 Webapplications为最终用户提供了便捷的功能,因此获取 URL 已成为一种常见的场景。 因此,SSRF 的发病率正在增加。 此外,随着 API 和云服务变得越来越普遍,计算架构变得越来越分散和复杂,SSRF 的严重性也随之增加。

SSRF 是OWASP 十大应用安全风险之一,是广泛认可的最关键的 Web应用安全风险的汇编。 SSRF 也是OWASP十大安全风险之一,对应用程序和 API 都很常见,在实施安全解决方案时需要特别考虑。 

SSRF 攻击的工作原理如下:

  • 该应用允许用户输入来确定服务器端请求的目标 URL 或资源。 此输入可能来自 URL 中的参数、表单字段的用户输入或其他数据源。
  • 攻击者提交特制的请求,操纵输入以指向攻击者想要访问或利用的资源。 该资源可以是内部服务器、后端服务、API 或其他位于防火墙后面且无法从外部网络访问的内部系统。
  • 服务器处理用户的恶意输入并构建对指定URL的请求。 此请求是从服务器的角度而不是用户的浏览器发出的,因此它是服务器端请求。
  • 如果目标服务器位于内部网络内,攻击者可能会尝试从内部资源访问和检索敏感信息,然后将该数据泄露到攻击者控制的外部位置。 SSRF 还可用于扫描内部系统上的端口,帮助攻击者识别潜在的弱点和漏洞。
  • SSRF 攻击在云环境中尤其令人担忧,因为实例可能有权访问敏感的元数据服务。
  • SSRF 攻击的影响可能非常严重,从未授权访问敏感数据和服务、利用内部系统甚至危及整个云环境。

SSRF 攻击示例

以下是 SSRF 攻击在现实生活中的具体表现。

想象一个不安全的网络应用,它允许用户上传图像进行处理,并且其功能允许用户提供他们想要处理的图像的 URL。 然而,攻击者并没有提供合法的图像 URL,而是提交了一个精心设计的输入,其中包含一个指向应用服务器上的内部资源(例如内部文件或后端数据库)的恶意 URL。 应用服务器盲目处理恶意URL,并按照攻击者的输入,向URL指定的内部资源发出请求,以获取敏感数据或查询数据库并将数据返回给攻击者。

一旦服务器受到攻击,攻击者还可以向外部系统发出请求、探测漏洞或与服务器有权访问的服务进行交互。 SSRF 攻击的影响可能因系统架构和受感染服务器的权限而异。 攻击可能导致未经授权的数据访问、服务中断或内部系统受到损害。

三种基本类型的 SSRF 攻击

根据攻击者与服务器交互和提取信息的方式,SSRF攻击可以分为不同的类型。

标准 SSRF 攻击

在标准的 SSRF 攻击中,攻击者将恶意 URL 作为用户输入的一部分注入,触发服务器向指定资源发出请求。 攻击者可以直接观察服务器的响应并收集有关内部网络的信息,例如如何检索数据或识别可访问的服务。

盲目 SSRF 攻击

在盲 SSRF 攻击中,攻击者不会直接从服务器接收响应。 相反,攻击者通过观察应用程序行为的变化来间接确认 SSRF 攻击的成功或失败。

攻击者提交精心设计的输入,迫使服务器向外部或内部资源发出请求。 攻击者寻找应用程序活动中可观察到的变化,例如错误消息、响应时间或其他副作用的差异。 即使攻击者没有直接看到响应,这些信息也能帮助攻击者推断 SSRF 是否成功。

基于时间的盲 SSRF 攻击

基于时间的盲 SSRF 攻击涉及利用服务器响应中的延迟来推断 SSRF 的成功或失败,而无需直接看到响应。

与其他 SSRF 攻击一样,攻击者提交恶意输入,导致服务器向外部或内部资源发出请求。 攻击者观察应用响应所需的时间。 响应时间的延迟可能表明 SSRF 成功了。 攻击者反复调整有效载荷并监视时间延迟以提取有关内部网络或资源的信息。

如何防范 SSRF 攻击

为了防范 SSRF 攻击,请实施一系列预防性网络安全措施,包括: 

  • 输入验证。 严格验证和清理用户提供的输入,尤其是当应用向外部资源发出请求时。 实现 URL 允许列表,仅允许应用需要访问的受信任域或特定 URL。 确保仅允许预期的协议(例如 http 和 https),并避免允许潜在危险的协议(例如 file:// 或 ftp://),这些协议经常在 SSRF 攻击中被利用。 此外,验证用户提供的 URL 是否符合预期的模式或格式,以降低注入恶意 URL 的可能性。
  • 主机和 IP 地址的允许列表。 维护允许应用与之交互的主机和 IP 地址的允许列表。 这有助于将请求限制到受信任和预期的目的地,从而减少 SSRF 的攻击面。 
  • 限制对内部资源的访问。 实施网络分段以限制内部资源的暴露。 确保面向外部的服务器对内部系统和服务具有最少的访问权限。 配置Web应用防火墙 (WAF)访问控制以限制来自应用服务器的出站连接。 仅允许必要和预定义的连接并阻止不必要的出站流量。 部署反向代理作为应用和外部资源之间的中介。 配置代理来控制应用可以访问哪些外部资源,从而增加额外的控制层。

这些预防措施如何帮助防止 SSRF 攻击? 让我们来看一个假设的情况。

在线内容管理系统允许用户输入 URL 以将外部图像嵌入到他们的帖子中。 该系统在处理用户提供的 URL 时没有进行适当的输入验证。 攻击者意识到缺乏输入验证,试图通过提供指向内部资源(例如内部 API 端点或数据库服务器)的恶意 URL 来利用系统。 但是,该应用程序的安全团队增强了系统的输入验证,以对接受的 URL 实施严格的规则。 系统开始验证用户提供的 URL 是否符合预期模式,并且团队为外部资源实施允许域的白名单。 

攻击者提交带有精心设计的 URL 的帖子,旨在利用 SSRF 漏洞,但输入验证现在检测到恶意 URL。 输入验证在处理过程中拒绝恶意 URL,从而阻止应用向攻击者指定的内部资源发出请求。 增强的输入验证可以阻止 SSRF 攻击: 系统不允许对内部资源进行未经授权的请求,从而保证内部系统的完整性和安全性。

通过实施输入验证,应用可以拒绝或清除恶意输入,防止未经授权的请求并降低 SSRF 攻击的风险。

F5 如何提供帮助

SSRF 攻击非常危险,因为它们允许攻击者绕过防火墙和访问控制等传统网络安全措施,以访问通常在组织内部网络内受保护且不能直接从 Internet 访问的敏感信息和资源。 由于 SSRF 攻击对数据和系统的机密性、完整性和可用性构成重大风险,因此组织必须实施强大的安全措施和最佳实践,包括 WAF、适当的输入验证、访问控制和网络分段,以减轻 SSRF 漏洞的威胁并防止潜在的利用。

F5 WAF 解决方案可以阻止和缓解来自OWASP Top 10 的广泛风险,包括 SSRF。 F5 WAF 解决方案结合了签名和行为保护,包括来自F5 实验室的威胁情报和通过机器学习 (ML) 实现的自动化安全性,以跟上新兴威胁。 它们减轻了在云、本地和边缘环境中一致保护applications的负担和复杂性,并且提供了多种部署选项可供选择。 BIG-IP Advanced WAF(API 安全 - 新一代 WAF)是一种强大的解决方案,可以保护您的applications免受 SSRF 攻击,并为软件漏洞提供关键的权宜之计,而F5 分布式云 WAF 则通过易于使用的即服务安全平台,以显著简化的操作保护各地的应用程序。  

F5 Webapplication和 API 保护 (WAAP) 解决方案通过全面的保护来防御整个现代应用程序攻击面,这些保护包括 WAF、 API 安全、L3-L7 DDoS 缓解以及针对恶意自动化和自动化威胁的机器人防御。 分布式平台让您可以轻松地在整个应用程序和 API中部署一致的策略和扩展安全性,无论它们托管在何处,并将安全性集成到 API 生命周期和更广泛的生态系统中。