什么是SSRF?
服务器端请求伪造攻击(SSRF)利用Web应用中的漏洞访问内部资源。了解如何保护应用和API。
SSRF是一种安全漏洞。攻击者通过操纵Web应用或API,使其向内部资源发出请求,可能导致未经授权的访问、数据泄露、系统失陷和远程代码执行。攻击者会绕过输入验证,强制应用访问恶意Web目标,即使应用受到防火墙或虚拟专用网络(VPN)解决方案的保护也无法避免。
什么是SSRF攻击?其工作原理是什么?
在SSRF攻击中,攻击者通常会操纵用于指定服务器端HTTP请求目标URL的输入。如果应用在从远程资源提取数据之前,未对用户输入的URL进行验证或清理,就可能发生这种情况。攻击者可使目标服务器向任意目的地发出请求,从而可能引发各种安全风险。
如果目标资源与其他系统(例如云元数据服务或后端API)存在信任关系,也可能发生此类攻击。攻击者可借此向这些受信任的服务发出请求,并提取敏感信息或执行未经授权的操作。
随着现代Web应用为最终用户提供各种便捷功能,获取URL已成为常见场景。因此,SSRF的发生率正在上升。此外,随着API和云服务日益普及,计算架构愈发分散和复杂,SSRF的严重程度也随之增加。
SSRF是OWASP十大应用安全风险之一,该榜单广受认可,汇总了严重的Web应用安全风险。SSRF也是OWASP十大安全风险中应用和API均面临的风险之一,因此在实施安全解决方案时需要特别关注。
SSRF攻击的工作原理如下:
- 应用程序允许根据用户输入确定服务器端请求的目标URL或资源。这些输入可能来自URL中的参数、表单字段中的用户输入或其他数据源。
- 攻击者提交特制请求,通过操纵输入,使其指向攻击者想要访问或利用的资源。该资源可能是内部服务器、后端服务、API,或位于防火墙后且无法从外部网络访问的其他内部系统。
- 服务器处理用户的恶意输入,并构造一个发送到指定URL的请求。该请求由服务器发出,而非用户的浏览器,因此属于服务器端请求。
- 如果目标服务器位于内部网络中,攻击者可能会尝试访问内部资源并获取敏感信息,然后将这些数据外泄到攻击者控制的外部位置。SSRF还可用于扫描内部系统的端口,帮助攻击者识别潜在的薄弱环节和漏洞。
- 在云环境中,SSRF攻击尤其值得关注,因为云实例可能有权访问敏感的元数据服务。
- SSRF攻击可能造成严重影响,包括未经授权访问敏感数据和服务、利用内部系统,甚至导致整个云环境遭到入侵。
SSRF攻击示例
以下是SSRF攻击在现实中可能发生的方式。
假设有一个不安全的Web应用,允许用户上传图片进行处理,并支持用户提供待处理图片的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攻击十分危险,因为攻击者可利用此类攻击绕过防火墙和访问控制等传统网络安全措施,访问通常受组织内部网络保护且不应从互联网直接访问的敏感信息和资源。由于SSRF攻击会对数据和系统的机密性、完整性及可用性构成重大风险,组织必须实施可靠的安全措施和最佳实践,包括部署WAF、正确验证输入、实施访问控制和网络分段,以降低SSRF漏洞带来的威胁并防范潜在利用。
F5 WAF解决方案可阻止并缓解源自OWASP十大Web应用安全风险的多种风险,包括SSRF。F5 WAF解决方案将特征码防护与行为防护相结合,并利用F5 Labs提供的威胁情报和基于机器学习(ML)的自动化安全能力,持续应对新兴威胁。这些解决方案提供多种部署选项,可减轻跨云、本地和边缘环境持续保护应用的负担和复杂性。BIG-IP Advanced WAF是一款功能强大的解决方案,可保护应用免受SSRF攻击,并在软件漏洞修复前提供关键的临时防护;F5 Distributed Cloud WAF则通过易于使用的安全即服务平台,大幅简化运维,保护各处的应用。
F5 Web Application and API Protection (WAAP)解决方案通过全面的防护措施保护现代应用的整个攻击面,包括WAF、API安全、L3-L7 DDoS缓解,以及针对恶意自动化活动和自动化威胁的机器人防护。借助这一分布式平台,可以轻松部署一致的策略,并在整个应用和API环境中扩展安全防护,无论这些应用和API托管在何处,同时还可将安全防护集成到API生命周期和更广泛的生态系统中。

