SSRF原理及攻防解析(简单明了)

原理解析

服务端请求伪造(SSRF)是指一种由攻击者构造形成由服务端发起请求的一个安全漏洞,一般情况下,SSRF攻击的目标都是从外网无法访问的内部系统,借助服务端发起伪造的请求,可以访问到与它相连而与外网隔离的内部系统。

之所以会形成SSRF主要是因为服务器提供了从其他服务器应用获取数据的功能,但是没有对目标服务器做过滤和限制。比如从指定URL地址获取数据(引入css/js等数据时)。假设如下的一个web应用服务场景:

服务器A:web应用对外网服务接口
服务器B:保存一些图片资源等等以供A网站请求。
当用户访问服务器A上的一些图片时,服务器向服务器B请求对应的img,以返回用户。
用户向服务器A请求图片的URL可能是www.A.com/getimg.php?Img=URL。

此时如果服务器A没有对URL进行过滤的话,就导致攻击者可以通过精心构造一个URL从而借助A服务器请求到内部网络B服务器的数据。

利用方式

  1. 对服务器所在内网或本地进行端口扫描,获取服务器banner信息。
  2. 攻击运行在内网或本地的应用程序
  3. 对内网web应用进行指纹识别
  4. 利用跨协议通信技术攻击内网应用程序或web服务
  5. 利用file协议,dict协议,gropher协议,ftp协议等读取本地文件
  6. 通过请其大文件进行Dos攻击

防御方式

  1. 过滤返回信息,验证远程服务器对请求的响应,对于返回给用户的结果,在返回给用户之前先检查是否符合标准。
  2. 统一错误信息,避免用户可以通过错误信息判断服务器的端口状态。
  3. 进行端口限制,将端口限制为80,443等http常用端口
  4. 设立黑白名单限制内网IP
  5. 仅允许http/https协议,以防止类似file协议等导致的问题

我的个人博客,欢迎大家访问 ~~~

你可能感兴趣的:(web安全)