什么是SSRF攻击?该如何防御SSRF攻击?

时间:2024-04-27 07:42:56

随着网络安全形式日益严峻,各式各样的攻击频繁发生。当前,应用程序为了给用户提供更多更方便的功能,从另一个URL获取数据的场景越来越多,因此出现了一种安全漏洞攻击-SSRF。并且,由于云服务和体系结构的复杂性,SSRF攻击产生的影响也非常大。今天德迅云安全就分享下关于SSRF攻击的情况,了解下什么是SSRF攻击,有什么防护措施可以处理。

一、什么是SSRF攻击

SSRF攻击,即服务器端请求伪造(Server-Side Request Forgery)攻击,是一种由攻击者构造请求,利用存在缺陷的Web应用作为代理,让服务端发起请求的安全漏洞。

一般情况下,SSRF攻击的目标是外网无法访问的内部系统。简单来说就是利用服务器漏洞以服务器的身份发送一条构造好的请求给服务器所在内网进行攻击。

当服务器向用户提交的未被严格校验的URL发起请求的时候,就有可能会发生服务器端请求伪造(SSRF,即Server-Side Request Forgery)攻击。

二、SSRF攻击类型

内部SSRF:攻击者利用漏洞与应用程序的后端或内部系统交互。这种情况下,攻击者可能试图访问数据库、HTTP服务或其他仅在本地网络可用的服务。这种类型的攻击能够绕过防火墙,利用服务器作为代理来访问通常无法访问的网络资源,甚至探测和扫描内部网络的主机和端口。

外部SSRF:攻击者利用漏洞访问外部系统。攻击者可能构造恶意的URL,利用Web应用程序的代理功能或URL处理机制,向存在漏洞的服务器发送请求,以获取外部网络资源或执行其他恶意操作。

三、SSRF是如何形成

SSRF 形成的原因大都是由于服务端提供了从其它服务器获取数据的功能,比如使用户从指定的URL web应用获取图片、下载文件、读取文件内容等,但又没有对目标地址做严格过滤与限制,导致攻击者可以传入任意的地址来让后端服务器对其发送请求,并返回对该目标地址请求的数据。具体主要来自以下三个方面:

1、URL处理不当:Web应用程序在处理用户提交的URL时,没有进行充分的验证和过滤。攻击者可以构造恶意的URL,利用这些漏洞来发起SSRF攻击。

2、代理功能存在漏洞:一些Web应用程序提供了代理功能,允许用户通过Web界面发起网络请求。如果这些代理功能没有实现正确的安全机制,攻击者可以利用它们来发起SSRF攻击。

3、文件包含和重定向漏洞:Web应用程序中的文件包含和重定向功能也可能存在漏洞,攻击者可以利用这些漏洞来读取敏感文件或执行恶意操作。

四、SSRF攻击的原理

SSRF攻击的原理基于Web应用程序的代理功能或URL处理机制。攻击者通过构造恶意的URL或利用Web应用程序的代理功能,向存在漏洞的服务器发送请求。由于Web应用程序没有对这些请求进行充分的验证和过滤,它会将这些请求转发给目标服务器。

攻击者可以构造指向内部网络资源的URL,利用Web应用程序作为代理来访问这些资源。由于请求是由Web应用程序发起的,因此可以绕过一些传统的安全防护措施,如防火墙等。通过解析响应内容,攻击者可以获取到目标地址的敏感信息,或者执行其他恶意操作。

此外,攻击者还可以利用SSRF漏洞来探测和扫描内网中的其他服务器和设备,了解网络拓扑结构,为后续的攻击做准备。由于存在防火墙的防护,导致攻击者无法直接入侵内网,这时攻击者可以以服务器为跳板发起一些网络请求,从而攻击内网的应用及获取内网数据。具体有以下几个方面:

1、输入URL

应用程序允许用户输入用于发起请求的 URL,例如,图片链接、文件下载链接、API 请求地址等。

2、没有校验 

应用程序没有对用户提供的 URL 进行充分的校验,或者校验不严格,给了攻击者构造或修改请求的 URL 的机会。

3、发起请求

应用程序使用用户提供的 URL 发起服务器端的 HTTP 请求或其他类型的请求。

4、利用漏洞

攻击者利用这个漏洞,构造特殊的 URL,使得服务器端应用程序向攻击者指定的目标服务器发起请求。

五、SSRF攻击有哪些危害?

1、内网扫描

攻击者可以探测内网中的开放端口和运行的服务,利用 SSRF 漏洞可以对内网服务器、办公机进行端口扫描、资产扫描、漏洞扫描,发现服务器内部的可用端口和漏洞等。

2、窃取本地和内网敏感数据

攻击者实施 SSRF 攻击后可以访问和下载内网的敏感数据,利用文件传输协议访问服务器本地文件,上传木马或者病毒。

3、攻击服务器本地或内网应用

攻击者借助 SSRF 漏洞发现服务器内部存在的其他漏洞,然后利用发现的漏洞进一步发起攻击利用。

4、跳板攻击

借助存在 SSRF 漏洞的服务器对内或对外发起攻击,以隐藏自己真实 IP 地址用来防止受害者溯源和追踪。

5、绕过安全防御

如果利用 SSRF 漏洞攻击者可以很简单的绕过常见的防御措施和设备,直接对内网进行攻击。

6、攻击 web 应用

攻击内外网的 web 应用,主要是使用 GET 参数就可以实现的攻击。

7、远程执行代码

如果内部服务存在漏洞,SSRF 可能被用来远程执行代码。

8、绕过IP限制和防火墙

攻击者可以访问仅限内网访问的服务,绕过 IP 限制和防火墙。

六、如何预防SSRF攻击

1、严格校验用户输入的URL,可以使用白名单过滤来限制输入,只允许特定的协议、主机和端口,列如限制请求的端口为 http 常用的端口,80、443、8080、8090 等。

2、不要把原始的响应数据返回给客户端,且过滤返回信息,在把返回结果展示给用户之前先验证返回的信息是否符合标准。

3、限制Web应用程序的网络访问权限,可以让远程资源访问功能使用单独的网络。

4、限制Web应用能够访问的URL范围,避免访问内网或其他敏感地址。可以配置网络访问控制列表(ACL),限制Web应用只能访问指定的外部服务。

5、建立安全监控机制,对网站进行安全监测,使用德迅云眼(云监测)对业务系统进行安全监测,可以及时发现和响应潜在的安全漏洞。