ssrf漏洞的成因及防范
ssrf:服务器端请求伪造,利用漏洞伪造服务器端发起请求,从而突破客户端获取不到数据限制
->利用一个可以发起网络请求的服务,当作跳板来攻击其他的服务器,通过web接口请求受保护的内网资源
引用百度:ssrf:服务器端请求伪造是一种由攻击者构造形成由服务器端发起请求的一个安全漏洞.一般情况下,ssrf的目标是网络的内部系统,(因为它是把目标网站当中间人,从而可以通过它攻击外网无法访问的内部系统)
ssrf形成的原因:
服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤或者限制,比如说从指定url地址获取网页文本内容,加载指定地址的图片,文档等等.
首先,我们要对目标网站的架构了解,脑子了要有一个架构图。比如 : A网站,是一个所有人都可以访问的外网网站,B网站是一个他们内部的OA网站。
所以,我们普通用户只可以访问a网站,不能访问b网站。但是我们可以同过a网站做中间人,访问b网站,从而达到攻击b网站需求。
正常用户访问网站的流程是:
输入A网站URL --> 发送请求 --> A服务器接受请求(没有过滤),并处理 -->返回用户响应
【那网站有个请求是www.baidu,com/xxx.php?image=URL】
那么产生SSRF漏洞的环节在哪里呢?安全的网站应接收请求后,检测请求的合法性
产生的原因:服务器端的验证并没有对其请求获取图片的参数(image=)做出严格的过滤以及限制,导致A网站可以从其他服务器的获取数据
例如:
www.baidu.com/xxx.php?image=www.abc.com/1.jpg
如果我们将www.abd.com/1.jpg换为与该服务器相连的内网服务器地址会产生什么效果呢?
如果存在该内网地址就会返回1xx 2xx 之类的状态码,不存在就会其他的状态码
终极简析: SSRF漏洞就是通过篡改获取资源的请求发送给服务器,但是服务器并没有检测这个请求是否合法的,然后服务器以他的身份来访问其他服务器的资源。
ssrf用途
那么SSRF 可以做什么呢?
1.内外网的端口和服务扫描
2.主机本地敏感数据的读取,任意文件读取
3.内外网主机应用程序漏洞的利用
4.内外网Web站点漏洞的利用
......
SSRF漏洞的寻找(漏洞常见出没位置):
注:个人觉得所有调外部资源的参数都有可能存在ssrf漏洞
1)分享:通过URL地址分享网页内容
2)转码服务
3)在线翻译
4)图片加载与下载:通过URL地址加载或下载图片
5)图片、文章收藏功能
6)未公开的api实现以及其他调用URL的功能
7)从URL关键字中寻找
share
wap
url
link
src
source
target
u
3g
display
sourceURl
imageURL
domain
...
SSRF漏洞的验证方法:
1)因为SSRF漏洞是让服务器发送请求的安全漏洞,所以我们就可以通过抓包分析发送的请求是否是由服务器的发送的,从而来判断是否存在SSRF漏洞
2)在页面源码中查找访问的资源地址 ,如果该资源地址类型为 www.baidu.com/xxx.php?image=(地址)的就可能存在SSRF漏洞
SSRF防御:
1.禁用不需要的协议.仅仅允许http和https请求.可以防止file://,gopher://,ftp://等引起的问题
2.统一错误信息,防止利用错误信息来判断远端服务器的端口状态.
3,禁止302跳转,或每跳转一次检查新的host是否为内网ip,后禁止
4.设置url名单或者限制内网ip.