什么是SSRF?
SSRF(Server-side Request Forge, 服务端请求伪造)是由攻击者构造形成由服务端发起请求的安全漏洞。一般 情况下,SSRF攻击的目标是从外网无法访问的内部系统。正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统。
查看是否存在SSRF漏洞
1.排除法:浏览器f12查看源代码看是否是在本地进行了请求
eg:该资源地址类型为 http://www.xxx.com/a.php?image=(地址)的就可能存在SSRF漏洞
2.Dnslog等工具进行测试,查看是否被访问
生成一个域名用于伪造请求,看漏洞服务器是否发起 DNS 解析请求,若成功访问在 http://DNSLog.cn 上就会有解析日志。
3.抓包分析发送的请求是不是由服务器的发送的,如果不是客户端发出的请求,则有可能是,接着找存在HTTP服务的内网地址.
a、在平台的历史漏洞寻找泄漏的存在web应用内网地址
b、通过二级域名暴力破解工具模糊猜测内网地址
4. 访问日志检查:伪造请求到自己控制的公网服务器,然后在服务器上查看访问日志是否有来自漏洞服务器的请求,或者直接使用命令“nc -lvp”来监听请求.
存在SSRF的位置
-
分享:通过URL地址分享网页内容
-
转码服务
-
在线翻译
-
图片加载与下载:通过URL地址加载或图片下载
-
图片、文章收藏功能
-
未公开的api实现以及其他调用URL的功能
-
从URL关键词中寻找
常见的利用方式
1.获取敏感文件
提交参数:
http://ip/?url=www.baidu.com/robots.txt
2.端口扫描
a、设置参数URL为内网地址时,则会泄露内网信息,比如内网的某个服务是否开放
b、提交参数:?url=探测的ip:1234,1234为不存在端口,查看返回结果
3.读取系统本地文件
利用file协议可以任意读取系统本地文件,提交参数
http://ip/?url=file://c:windowssystem32driversetchosts
4.内网web应用指纹识别
web应用框架都有一些独特的文件目录,通过这些文件可以识别出应用的类型,甚至详细版本,据这些信息就可以针对性的搜集漏洞进行攻击
http://ip/?url=http://ip/phpmyadmin/README
6.SSRF结合XXE漏洞利用——端口探测
由于xml实体注入攻击可以利用http://协议,也就是可以发起http请求。可以利用该请求去探查内网,进行SSRF攻击,可以根据响应时间/长度判断端口是否开放
7.利用SSRF漏洞的gopher协议攻击Redis服务器
可以利用gopher协议进行攻击内网的redis、ftp等服务。
利用SSRF漏洞攻击Redis服务器的方式有以下几种:
1. 绝对路径写Webshell
2. 通过写SSH公钥到服务器用私钥连接,获取shell
3. 写contrab计划任务反弹shell
常见的绕过方式
1. 限制 http://www.aaa.com 域名
• 采用http基本身份认证的绕过方式,即使用@绕过。如:http://[email protected]
• 注意:在对@解析域名中,不同的处理函数存在处理差异。如:在PHP的parse_url中会识别www.ccc.com,而libcurl则识别为www.bbb.com
2.绕过IP限制
• 采取特殊域名,如:xip.io可以指向任意域名,即127.0.0.1.xip.io,可解析为127.0.0.1
• 采取进制转换。如:127.0.0.1 转换成十六进制 0x7f.0.0.1
• 多进制混合 IP,如 http://0177.0x0.0x0.1,相当于 127.0.0.1
3.绕过 URL 解析限制
• URL 欺骗方式,如
http://[email protected],http://evil$http://google.com,http://google.com#@http://evil.com……
• 302 跳转切换协议,如请求头注入"Location: dict://http://lagou.com"
• Unicode 转换,如
http://evil.c ℀.http://office.com
• 采取短网址绕过,站长工具短网址 http://tool.chinaz.com/tools/dwz.aspx
SSRF的危害
• 内网探测:端口扫描,web应用指纹识别,攻击web应用
• 读取本地文件
• 跳板攻击:借助存在 SSRF 漏洞的服务器对内或对外发起攻击,以隐藏自己真实 IP
• 拒绝服务攻击:请求超大文件,保持链接 Keep-Alive Always
SSRF的防御和修复
• 限制请求的端口只能为web端口,只允许访问HTTP和HTTPS的请求
• 设置白名单,或限制内网IP,以防止对内网进行攻击
• 禁止30x跳转
• 屏蔽返回的详细信息
• 禁用不需要的协议,仅仅允许http和https请求。可以防止类似于file://, gopher://, ftp:// 等引起的问题
最后附带一张SSRF的漏洞导图
团队介绍
点击关注银河护卫队super
原文始发于微信公众号(银河护卫队super):浅谈SSRF
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论