SSRF如何产生的?
SSRF(Server-Side Request Forgery:服务器端请求伪造)是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统。SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。
网站访问大致步骤:
用户在地址栏输入网址 --》 向目标网站发送请求 --》 目标网站接受请求并在服务器端验证请求是否合法,然后返回用户所需要的页面 --》用户接收页面并在浏览器中显示。
SSRF的危害
- 可以扫描内部网络
- 下载内网资源
- 无视cdn
- 进行跳板
- 可以构造数据攻击内部主机
那么产生SSRF漏洞的环节在哪里呢?
目标网站接受请求后在服务器端验证请求是否合法 产生的原因:服务器端的验证并没有对其请求获取图片的参数(image=)做出严格的过滤以及限制,导致可以从其他服务器的获取一定量的数据。
SSRF漏洞的寻找(漏洞常见出没位置)
- 分享:通过URL地址分享网页内容
- 转码服务
- 在线翻译
- 图片加载与下载:通过URL地址加载或下载图片
- 图片、文章收藏功能
- 未公开的api实现以及其他调用URL的功能
- 从URL关键字中寻找: -- share wap url link src source target u 3g display sourceURl imageURL domain ...
SSRF漏洞的验证方法:
- 因为SSRF漏洞是构造服务器发送请求的安全漏洞,所以我们就可以通过抓包分析发送的请求是否是由服务器的发送的来判断是否存在SSRF漏洞。
- 在页面源码中查找访问的资源地址 ,如果该资源地址类型为http://www.xxx.com/a.php?image=(地址)的就可能存在SSRF漏洞
攻击场景
![1387286478507.png%21small](https://i-blog.csdnimg.cn/blog_migrate/0c2296c15ef514034df140b9386235b9.png)
1387286478507.png%21small
SSRF漏洞导图
![894412-20160910112127848-1995894242.jpg](https://i-blog.csdnimg.cn/blog_migrate/825c564a2180d96961fe7edd1f45192b.png)
894412-20160910112127848-1995894242.jpg
攻击者利用SSRF可以实现的攻击主要有3种:
- 获取web应用可达服务器服务的banner信息以及收集内网web应用的指纹识别,如开放的端口,中间件版本信息等。
- 攻击运行在内网的系统或应用程序,获取内网各系统弱口令进行内网漫游、对有漏洞的内网web应用实施攻击获取webshell,如st2命令执行、discuz ssrf通过redis实施getshell等。
- 利用有脆弱性的组件结合ftp://,file:///,gopher://,dict://等协议实施攻击。如FFmpeg任意文件读取,xxe攻击等。
绕过方法
- @ http://abc@127.0.0.1
- 添加端口号 http://127.0.0.1:8080
- 短地址 http://dwz.cn/11SMa
- 可以指向任意ip的域名:xip.io xip.io:10.0.0.1.xip.io = 10.0.0.1 www.10.0.0.1.xip.io = 10.0.0.1 mysite.10.0.0.1.xip.io = 10.0.0.1 foo.bar.10.0.0.1.xip.io = 10.0.0.1
- ip地址转换成进制来访问 115.239.210.26 = 16373751032
如何防御SSRF呢?
- 过滤返回信息,验证远程服务器对请求的响应是比较容易的方法;
- 统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态;
- 限制请求的端口为http常用的端口,比如,80,443,8080,8090;
- 黑名单内网ip。避免应用被用来获取获取内网数据,攻击内网;
- 禁用不需要的协议。仅允许http和https请求;
- 使用正则对参数进行效验,防止畸形请求绕过黑名单。
附:名词解释:
黑白名单:
黑名单启用后,被列入到黑名单的用户(或IP地址、IP包、邮件、病毒等)不能通过。如果设立了 白名单,则在白名单中的用户(或IP地址、IP包、邮件等)会优先通过,不会被当成垃圾邮件拒收,安全性和快捷性都大大提高。将其含义扩展一步,那么凡有黑名单功能的应用,就会有白名单功能与其对应。
区别
- 白名单是设置能通过的用户,白名单以外的用户都不能通过。
- 黑名单是设置不能通过的用户,黑名单以外的用户都能通过。
- 所以一般情况下白名单比黑名单限制的用户要更多一些。