成功的网络攻击最重要的因素之一是足够的访问权限。在安全得到充分考虑的应用程序中,外部用户通常没有足够的访问权限来造成伤害。在这种情况下,攻击者可以尝试不同的方法。与其尝试获得足够的访问并尝试获得足够的权限,他们可以尝试操作已经拥有足够访问和授权的应用程序实体(如服务器)。
服务器端请求伪造(SSRF)就是这样一种攻击,攻击者欺骗服务器发出意外请求。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统 。正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统。
现代应用程序本质上通常是分布式的,并且已经开始更多地依赖云服务。尽管这使得应用程序的开发、测试和故障排除很方便,但它增加了体系结构的复杂性并增加了挑战。其中一个挑战是确保应用程序的不同组件有足够的访问权限,以顺利地执行它们的功能。但是当我们不考虑这种访问的范围和可能的威胁时,它可能会导致服务器端请求伪造漏洞。
服务器端请求伪造是一种web应用程序漏洞,它允许攻击者向应用程序组件发送格式错误的请求,或与外部任意系统通信。
通常,应用程序的内部组件的配置方式是外界无法访问的。例如,防火墙后的服务器或只能从堡垒主机访问的服务器。因此,攻击者可以滥用SSRF漏洞来攻击应用程序的内部组件。
SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。利用的是服务端的请求伪造。SSRF是利用存在缺陷的web应用作为代理攻击远程和本地的服务器。
例如用户可以从本地或者URL的方式获取图片资源,交给百度识图处理。如果提交的是URL地址,该应用就会通过URL寻找图片资源。如果用户提供的URL和远端服务器返回的信息