前言
菜某对ssrf漏洞的总结。
ssrf的作用
主要作用:访问外界无法访问的内网进行信息收集。
1.进行端口扫描,资源访问
2.指纹信息识别,访问相应的默认文件
3.利用漏洞或者和payload进一步运行其他程序
4.get类型漏洞利用,传参数实现攻击
5.post型漏洞利用,用gopher协议进行参数构造
6.拒绝服务攻击(访问大文件占用资源)
ssrf的原理
当网站有一个功能,能去访问网络上的其他资源时,我们可以更改他要访问的url地址,使其指向我们想让他访问的位置。
服务器处于一个内外网交界的位置,我们无法访问他们的内网,所以我们就可以利用ssrf漏洞,以他作为跳板去访问正常访问不到的内网的内容。
ssrf常出现的场景
任何服务器访问其他资源的地方,都可能有。
常常出现在:
1.通过URL地址进行页面分享
2.转码服务,通过URL把原文件地址的页面进行页面转换格式
3.在线翻译,一键翻译相应URL地址中的英文
4.图片加载与下载,通过URL进行图片获取的。
5.未公开的api实现以及其他调用URL的功能
6.设备后台管理进行存活测试,(测试开启状态时会访问)
7.远程图片访问或者加载
8.远程头像加载
10.打包附件或者内容编辑导出
ssrf漏洞的判定
1.回显变化,根据页面的回显情况进行判断
2.让他访问自己的服务器,然后看日志他是否访问过
3.从时间判断,有些外国网站明显访问速度应该比国内网站慢,有过有这种情况则存在
- DNS 请求检测:自己搭建 DNS 服务器,或者利用网上的 DNSLog
服务(比如http://www.dnslog.cn/),生成一个域名(l08bgh.dnslog.cn)用于伪造请求,看漏洞服务器是否发起DNS 解析请求,若成功访问在 DNSLog.cn 上就会有解析日志。
ssrf常用的攻击协议
http(s),file,dict,gopher
--http协议:最常用的ssrf漏洞利用协议
例:http://xxx.com?url=http://1.1.1.1/xxx
--file协议:可以读取服务器文件
例:http://xxx.com?url=file://1.1.1.1/xxx
--dict协议:可以利用此协议进行端口开放测试
例:http://xxx.com?url=dict://1.1.1.1/xxx
--gopher协议:支持发送get,post请求,可进行复杂漏洞利用。
但是支持的范围比较小
不同语言对于协议的支持情况
ssrf常用的绕过方法
开发人员常见的过滤手法:对域名和IP进行白名单或者黑名单的限制。
绕过方法
@字符:xxx.com@10.10.10.10访问10.10.10.10(对抗白名单)
后加xip.io:10.10.10.10.xip.io被解析成10.10.10.10
数字IP地址:127.0.0.1的十进制:2130706433
进制转换:127.0.0.1的八进制:0177.0.0.1。十六进制:0x7f.0.0.1
封闭式的字母数字:有些手机上打出来开的数字外面套着圈的也能被识别
DNS重绑定:使用此方法可以实现域名解析为内网IP
协议限制绕过:禁用了部分协议之后可以换用其他协议。
[::]绕过localhost:http://[::]:80/
ssrf案例
均在本地搭建简易漏洞
案例一
端口扫描敏感信息
因为mysql的端口在3306,当我们访问3306时得到了mysql的版本
案例2
利用get形式的其他漏洞
我同时装了xss-labs靶场,用这个端口可以去请求xss的第一关实现xss利用。
当然这个是对本机进行的,也可以对内网的其他机器进行。
(实战中通常是用内网中一些get型的软件漏洞进行攻击)
输入的内容
http://127.0.0.1/xss/level1.php?name=test<script>alert(1)</script>
案例三
查看文件
在对应的目录下,还有一个lookme的文件,可以用这个读取。
这里是看的本机的,如果把IP换成内网的就可以访问内网的了。