什么是SSRF攻击?该如何防御SSRF攻击?
时间:2023-02-15
什么是SSRF攻击?
SSRF是一 种由攻击者构造请求,由服务端发起请求的安全漏洞。一般情况下,ssrf攻击的目标是外网无法访问的内部系统。简单来说就是利用服务器漏洞以服务器的身份发送一条构造好的请求给服务器所在内网进行攻击。
SSRF漏洞( 服务器端请求伪造 )也被称为跨站点端口攻击,主要用于端口扫描 。
SSRF漏洞是如何产生的呢?
主要产生的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。
有哪些危害?
内网探测:攻击者若利用 SSRF 漏洞可以对内网服务器、办公机进行端口扫描、资产扫描、漏洞扫描,发现服务器内部的可用端口和漏洞等。
窃取本地和内网敏感数据:攻击者实施 SSRF 攻击后可以访问和下载内网的敏感数据,利用文件传输协议访问服务器本地文件,上传木马或者病毒。
攻击服务器本地或内网应用:攻击者借助 SSRF 漏洞发现服务器内部存在的其他漏洞,然后利用发现的漏洞进一步发起攻击利用。
跳板攻击:借助存在 SSRF 漏洞的服务器对内或对外发起攻击,以隐藏自己真实 IP 地址用来防止受害者溯源和追踪。
绕过安全防御:如果利用 SSRF 漏洞攻击者可以很简单的绕过常见的防御措施和设备,直接对内网进行攻击。
无视 CDN 的防护:CDN 主要可以对网站服务器的真实地址进行隐藏,而 SSRF 则可以无视 CDN 加速技术的防御直接识别真实的 ip 地址。
攻击 web 应用:攻击内外网的 web 应用,主要是使用 GET 参数就可以实现的攻击。
进行指纹识别:对内网 WEB 应用进行指纹识别,通过访问默认文件实现。
实现 CRLF 注入:利用 Redis 未授权访问,HTTP CRLF 注入实现 getshell。
该如何防御SSRF攻击?
1.过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果 web 应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
2.统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。
3.限制请求的端口为 http 常用的端口,比如,80、443、8080、8090 等端口。
4.黑名单内网 ip。避免应用被用来获取获取内网数据,攻击内网。
5.禁用不需要的协议。仅仅允许 http 和 https 请求。可以防止类似于 file:///、gopher://、ftp:// 等引起的问题。