一、概述
SSRF(Server-Side Request Forgery),即服务器端请求伪造。其形成原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制。导致攻击者可以传入任意的地址让后端服务器接收其请求,并返回对该目标地址请求的数据。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。
通俗的来说就是我们可以“伪造”服务器端发起的请求,从而获取客户端所不能得到的数据。
二、主要危害
可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息;
攻击运行在内网或本地的应用程序(比如溢出);
对内网Web引用进行指纹识别,通过访问默认文件实现;
攻击内外网的Web应用,主要是使用GET参数就可以实现的攻击(比如:Struts2漏洞利用,SQL注入等);
利用file,dict,gopher,http,https等协议读取本地文件,访问敏感目标,反弹shell等高危操作。
三、可能存在的位置
1.分享功能,如通过URL分享网页的内容。
2.转码服务,通过URL地址把源地址的网页内容调优 使其适合手机屏幕浏览。
3.在线翻译,通过URL地址翻译对应文本的内容。
4.图片的加载与下载,通过URL地址加载或下载图片。
5.图片、文章收藏功能。
6.未公开的api实现以及其他调用的URL的功能。
7.从URL关键字中寻找。
四、防御手段
SSRF产生的本质原因是:WEB服务器(对外的服务器)请求了信任边界内其他主机,而且这个请求是由用户转入的(这个请求参数不受控)。所以防御手段如下:
1.检查服务器是否必须对其他主机进行请求。
2.检查服务器对其他主机请求是否半受控或者不受控。
3.如果必须采用不受控参数,必须对其合法性进行检查。