简介
- SSRF是服务器请求伪造,是一种攻击者构造形成由服务端发起请求的一个安全漏洞,一般SSRF是针对目标位置的内部系统。(因为是从内部系统访问的,所以是无法从外网进行攻击的)
- SSRF形成的原因大部分是由于服务器提供了从其他服务器应用获取数据的攻击,而且没有对目标地址进行过滤与限制。
- 漏洞危害:
1、探测内网服务以及内网拓扑
2、像内部主机的任意端口发送构造的payload
3、DOS攻击
4、攻击内网的web应用
5、利用file/dict/gopher等协议读取本地文件
- 常用协议
file协议可以用于查看文件
dict 协议用于探测端口
gopher协议支持GET/POST等请求,可用于攻击内网ftp/redis/telent/smtp等服务
漏洞函数:file_get_contents()/fsokopen()/curl_exec()
GOPHER
-
Gopher是Internet上一个非常有名的信息查找系统,它将Internet上的文件组织成某种索引,很方便地将用户从Internet的一处带到另一处。在WWW出现之前,Gopher是Internet上最主要的信息检索工具,Gopher站点也是最主要的站点,使用tcp70端口。但在WWW出现后,Gopher失去了昔日的辉煌。现在它基本过时,人们很少再使用它;gopher协议支持发出GET、POST请求:可以先截获get请求包和post请求包,在构成符合gopher协议的请求。gopher协议是ssrf利用中最强大的协议
-
协议格式:URL:gopher://:/_后接TCP数据流
-
漏洞挖掘
1、通过url地址栏进行网页内容的分享
2、转码服务
3、在线翻译
4、图片加载与下载:通过url地址栏进行图片加载或下载
5、图片文章收藏
6、‘未公开的API实现以及其他调用URL的功能
7、从URL关键子寻找
- 漏洞修复
1、过滤返回信息,验证远程服务器对请求的响应是比较容易的方式。
2、统一错误信息,避免用户根据错误信息来进行判断远端服务器的端口状态
3、限制请求的端口为http的常用端口
4、黑名单内网ip
5、禁止不需要的协议
- SSRF原理图: