SSRF服务器端请求伪造

一、SSRF服务器端请求伪造

SSRF(Server-Side Request Forgery)服务器端请求伪造,一种由攻击者构造请求,由服务器端发起请求的安全漏洞,本质上是属于信息泄露漏洞。ssrf攻击的目标是从外网无法访问的内部系统(正是因为他是由服务器端发起的,所以他能够请求到与他相连而与外网隔离的内部系统)。

很多web应用都提供了从其他的服务器上获取数据的功能,(前端输入伪造的请求到服务器A,服务器A对接外部,再从服务器A通过这个伪造的请求去请求另一个内部服务器B,实现一个通过由服务器发起的伪造请求去请求内部系统,从而达到信息泄露等漏洞)。

一般情况下, SSRF攻击的目标是外网无法访问的内部系统,黑客可以利用SSRF漏洞获取内部系统的一些信息 。(
正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统 )。SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制
。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。

攻击者想要访问主机B上的服务,但是由于存在防火墙或者主机B是属于内网主机等原因导致攻击者无法直接访问主机B。而主机A存在SSRF漏洞,这时攻击者可以借助主机A来发起SSRF攻击,通过主机A向主机B发起请求,从而获取主机B的一些信息。

SSRF服务器端请求伪造_第1张图片

二、SSRF漏洞的利用所涉及的协议

  • file协议: 只能读取当前被攻击机的文件,内网机器文件不能读取;
    例如:
    读取本地系统文件和源码文件
    ?url=file://c:\windows\system32\drivers\etc\hosts
  • dict协议:泄露安装软件版本信息,查看端口,操作内网redis服务等
    例如:
    SSRF 常配合 DICT 或http或https协议探测内网端口开放情况,但不是所有的端口都可以被探测,一般只能探测出一些带 TCP 回显的端口,dict://ip地址:端口
  • gopher协议:gopher支持发出GET、POST请求。可以先截获get请求包和post请求包,再构造成符合gopher协议的请求。gopher协议是ssrf利用中一个最强大的协议(俗称万能协议)。可用于反弹shell
  • http/s协议:探测内网主机存活

三、SSRF防御方案

  • 限制协议: 仅允许http和https请求。
  • 限制IP: 避免应用被用来获取内网数据,攻击内网。
  • 限制端口: 限制请求的端口为http常用的端口,比如:80,443,8080,8090。
  • 过滤返回信息: 验证远程服务器对请求的响应是比较简单的方法。
  • 统一错误信息: 免用户可以根据错误信息来判断远端服务器的端口状态

你可能感兴趣的:(web安全,服务器,网络,安全)