目录

Web安全之SSRF


1. SSRF介绍

来自维基百科

在计算机安全中,服务器端请求伪造(英语:Server-side Request Forgery,简称SSRF)是攻击者滥用服务器功能来访问或操作无法被直接访问的信息的方式之一。

服务器端请求伪造攻击将域中的不安全服务器作为代理使用,这与利用网页客户端的跨站请求伪造攻击类似(如处在域中的浏览器可作为攻击者的代理)。

SSRF,Server-Side Request Forgery,服务器端请求伪造。是指客户端构造请求发送给服务端,服务端解析请求,根据请求中的内容再去请求其他服务器,然后将请求到的结果返回给客户端。举个例子,一个Web应用的功能是根据用户输入的URL,获取内容并显示在界面上,这时攻击者可以传递内网地址给服务器,服务器收到请求后,会去请求这个内网地址,请求成功后会将内容返回,这就导致了可遍历内网所有机器的漏洞。


2. 漏洞危害

  • 获取内网资产,扫描内网服务、端口等
  • 攻击内网应用,如内网web服务的get型sql注入等
  • 敏感文件读取

3. 漏洞存在的位置

  • 代理服务:服务器代替浏览器去请求相应的URL,并把对应的网页展示回来
  • 社交分享功能:通过 URL 获取要分享网页的内容
  • 图片加载/下载功能:通过 URL 加载图片/下载图片
  • 识图功能:通过 图片URL 识别图片,例如百度识图、Google识图、360识图等

4. 利用方式

  • 利用不同的协议进行不同的攻击
    • file协议:读取本地文件
    • gopher协议:发送网络请求

4. 绕过


5. 防御方案

  • 设置URL白名单,限制内网IP
  • 禁用不需要的协议,例如只允许http和https请求
  • 屏蔽返回的详细信息,返回统一错误信息
  • 限制端口,仅允许需要的端口