SSRF
一、SSRF概念:
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF是要目标网站的内部系统。(因为他是从内部系统访问的,所有可以通过它攻击外网无法访问的内部系统,也就是把目标网站当中间人)
SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,文档,等等。
二、 SSRF用途:
1、让服务端去访问相应的网址
2、让服务端去访问自己所处内网的一些指纹文件来判断是否存在相应的cms
3、可以使用file、dict、gopher[11]、ftp协议进行请求访问相应的文件
4、攻击内网web应用(可以向内部任意主机的任意端口发送精心构造的数据包{payload})
5、攻击内网应用程序(利用跨协议通信技术)
6、判断内网主机是否存活:方法是访问看是否有端口开放
7、DOS攻击(请求大文件,始终保持连接keep-alive always)
三、可能出现的地方:
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
...
四、验证方法:
1)因为SSRF漏洞是让服务器发送请求的安全漏洞,所以我们就可以通过抓包分析发送的请求是否是由服务器的发送的,从而来判断是否存在SSRF漏洞。
2)在页面源码中查找访问的资源地址 ,如果该资源地址类型为 www.xxx.com/xxx.php?image=(地址)的就可能存在SSRF漏洞。
五、防护SSRF:
- 过滤返回信息,验证远程服务器对请求的相应,如果 Web 应用获取某种已知类型的文件,那么可以在把返回结果展示给用户之前先验证返回信息是否符合标准
- 统一错误信息,避免用户根据错误信息来判断远程服务器端口状态
- 限制请求的端口为 HTTP 常用端口,比如 80、443、8080、8090
- 黑名单内网 IP,避免应用被用来获取内网数据,攻击内网
- 禁用不需要的协议。仅仅允许 HTTP 和 HTTPS 请求。可以防止类似于file://、gopher://和ftp://等引起的问题
- 禁止302跳转。