SSRF的原理和防范

背景

最近做的安全测评主要是SSRF,发现自己在这一块有挺大知识盲点,抓紧补一下。

1.介绍

  • SSRF(Server-Side Request Forgery:服务器端请求伪造),是一种攻击者利用服务端发起请求的安全漏洞。攻击者能够诱使服务端应用程序向攻击者选择的域发出HTTP请求。

  • SSRF针对的目标通常是从外部无法访问的内网系统。正因为它是由服务端发起的,所以它能请求到与它相通而与外部隔离的内网系统,可被用于作为代理来实施内网(或者远程服务器)的攻击。

2.成因

  • 大都是由于服务端提供了从其他服务器应用获取数据的功能,而没有对目标地址进行严格过滤与限制,一旦被发现,攻击者可以构造恶意请求实施攻击。

3.危害与防范

3.1 危害

  • 成功的SSRF攻击常用会导致黑客在易受攻击的应用程序本身或应用程序与之通信的其他后端系统执行未授权(恶意)操作,和对组织内数据的访问。特殊情况下,SSRF漏洞可能允许攻击者执行任意命令。
  • SSRF可能的攻击方式和危害如下:
    1. 让服务端去访问内网的一些WEB应用指纹文件来判断是否存在相应的CMS,从而收集内网CMS信息
    2. 可以使用file、dict、gopher、ftp协议进行请求访问相应的文件,可能造成文件任意读取,导致敏感信息泄漏
    3. 攻击内网web应用,可以向内部任意主机的任意端口发送精心构造的数据包,如果应用本身存在漏洞,可能造成远程命令执行
    4. 攻击内网应用程序(利用跨协议通信技术)
    5. 内网端口扫描,通过访问看是否有端口开放,从而获取内网端口开放信息
    6. 拒绝服务攻击,请求大文件,始终保持链接keep-alive alway,导致拒绝服务

3.2 防范

  • 禁止服务端跳转,防止以跳转方式绕过HTTP协议限制
  • 对于SSRF,回显是能够成功利用的重要条件,所以过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果WEB应用是去获取某一种类型的文件,那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
  • 禁用不需要的协议,仅仅允许HTTP和HTTPS请求。可以防止类似于file://gopher://ftp://等引起的问题
  • 设置URL白名单或者限制内网IP,避免应用被用来获取内网数据,攻击内网
  • 限制请求的端口为HTTP常用的端口,例如80、443、8080、8090
  • 统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态
posted @ 2021-06-28 21:02  AmyZYX  阅读(1099)  评论(0编辑  收藏  举报