SSRF攻击,在Web应用中,存在着大量需要由服务器端向第三方发起请求的业务。例如,大多数网站具备的天气显示功能,页面首先会获取当前用户的IP地址,并根据IP地址所在的地理位置信息,向第三方天气查询服务器发起请求,最后将结果回显给用户。
类似这样的业务场景还有很多,在安全视角分析,这类业务的核心问题在于服务器需根据用户提交的参数进行后续的业务流程,因此如果用户提交恶意的参数信息,并且服务器未对用户提交的参数进行合法性判断而直接执行后续请求业务,就会导致出现安全隐患,这也是SSRF漏洞的主要成因。
SSRF攻击相对于CSRF攻击来说,攻击者需伪造的请求为服务器端发起的内容。前提是Web服务器存在向其他服务器发起请求并获取数据的功能,并且获取过程中并未对目标地址进行安全过滤或加以限制,导致服务器的请求被伪造,进而实现后续的攻击。在某种程度上,可认为SSRF漏洞本质上是利用服务器的高权限实现对当前系统敏感信息的访问。
由于SSRF漏洞存在的前提是服务器具有主动发起请求的功能,因此如果能控制服务器的漏洞点,那么就可实现大量针对内网及服务器的各类型探测及攻击。根据漏洞特点,可能存在SSRF漏洞缺陷的目标有以下几种。
● 图片加载与下载功能
通过URL地址远程加载或下载图片,常见于很多转载行为或远程加载。由于远程加载图片可有效降低当前服务器的资源消耗,因此得到广泛使用。
● 本地处理功能
例如,业务流程中需要对用户输入的参数进行本地处理,如要获取提交的URL中的header信息等,这类业务都会由服务器发起请求。
● 各类辅助功能
可针对用户输入的参数添加各类辅助信息,提升参数的可视化效果。
● 图片、文章收藏功能
将远程地址进行本地保存,这样可让用户在重新发起请求访问时由服务器重新加载远程地址即可。以上场景在用户视角理解起来比较抽象。