web SSRF漏洞

SSRF 漏洞
SSRF(Server-Side Request Forgery,服务器端请求伪造),是一种由攻击者构造请求然后服务器
端发起的请求安全漏洞,SSRF攻击的目标是从外网无法访问内部系统,正因为是服务器端发起的,所以能够请求到与它相连的内网。
SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。
注释:除了http/https等方式可以造成ssrf,类似tcp connect 方式也可以探测内网一些ip 的端口是否开发服务,只不过危害比较小而已。

漏洞危害
利用file协议读取本地文件
对服务器所在内网进行端口扫描,获取内网信息
攻击运行在内网或服务器的程序
对内网web应用进行指纹识别,识别企业内部信息的资产
攻击内外网的web应用,主要是使用HTTP GET请求就可以实现的攻击

漏洞验证
1,排除法:浏览器f12查看源代码是否在本地进行了请求
该资源地址类型为 http://www.xxxxx.com/a.php?image=(地址)的就可能存在SSRF漏洞
2,dnslog等工具进行测试,查看是否被访问
可以在盲打后台用例中将当前准备请求的uri 和参数编码成base64,这样盲打后台解码后就知道是哪台机器哪个cgi触发的请求。
3,.抓包分析发送的请求是不是由服务器的发送的,如果不是客户端发出的请求,则有可能是,接着找存在HTTP服务的内网地址
–从漏洞平台中的历史漏洞寻找泄漏的存在web应用内网地址
–通过二级域名暴力猜解工具模糊猜测内网地址
4,直接返回的banner,title,content等信息
5,留意bool型SSRF。

漏洞利用
1,让服务端去访问相应的网址
2,让服务端去访问自己所处内网的一些指纹文件来判断是否存在相应的cms
3,可以使用file,dict,gopher[11],ftp协议进行访问请求
4,攻击内网web应用(可以向内部任意主机的任意端口发送精心构造的数据包{payload})
5,攻击内网应用程序(利用跨协议通讯技术)
6,判断内网主机是否存活:访问是否开发端口
7,DOS攻击(请求大文件,始终保持连接keep-alive always)

漏洞实例

访问百度
http://127.0.0.1/pikachu-master/vul/ssrf/ssrf_curl.php?url=http://www.baidu.com  

访问dnslog
http://127.0.0.1/pikachu-master/vul/ssrf/ssrf_curl.php?url=http://urqtyd.dnslog.cn

读取hosts文件
http://127.0.0.1/pikachu-master/vul/ssrf/ssrf_curl.php?url=file://c:\windows\system32\drivers\etc\hosts

读取/etc/passwd
http://127.0.0.1/pikachu-master/vul/ssrf/ssrf_curl.php?url=file:///etc/passwd

扫描端口,如果浏览器响应一直转圈表示没有开放端口
http://127.0.0.1/pikachu-master/vul/ssrf/ssrf_curl.php?url=dict://192.168.154.181:3306

读取源码文件
http://127.0.0.1/pikachu-master/vul/ssrf/ssrf_fgc.php?file=php://filter/read=convert.base64-encode/resource=ssrf.php

SRF漏洞的利用所涉协议
file协议:只能读取当前被攻击的文件,内网机器文件不能读取
dict协议:泄露安装软件版本信息,查看端口,操作内网redis服务等
gopher协议:gopher支持GET,POST请求。gopher协议是ssrf利用中一个最强大的协议(俗称万能协议)。可用于反弹shell。
http/s协议:探测内网主机

绕过技巧
本地攻击
http://127.0.0.1:22
http://localhost:22

利用@
http://www.baidu.com@192.168.10.1/ #实际上访问的是http://192.168.10.1

各种IP地址的进制转换
通过进制转换绕过,8进制,10进制,16进制。

URL跳转绕过
http://www.hackersb.cn/redirect.php?url=http://192.168.0.1/

短网址绕过
http://t.cn/RwbLKDx

xip.io来绕过
http://xxx.192.168.0.1.xip.io/ == 192.168.0.1 (xxx 任意)

探测内网域名
将自己的域名解析到内网ip

利用句号
127。0。0。1 >>> 127.0.0.1

漏洞挖掘
能够对外发起请求的地方
请求远程服务器资源的地方
数据库内置功能
邮件系统
文件处理
在线处理工具
http://127.0.0.1/pikachu-master/vul/ssrf/ssrf_curl.php? 这样的链接大概有ssrf。

漏洞修复
1.禁止跳转
2.过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
3.禁用不需要的协议,仅仅允许http和https请求。可以防止类似于file://, gopher://, ftp:// 等引起的问题
4.设置URL白名单或者限制内网IP(使用gethostbyname()判断是否为内网IP)
5.限制请求的端口为http常用的端口,比如 80、443、8080、8090
6.统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。

个人学习笔记,不是专业的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值