SSRF漏洞
服务器会根据用户提交的 URL 发送一个 HTTP 请求。使用用户指定的 URL,Web 应用可以获取图片或者文件资源等
ssrf攻击的目标是内网应用,通过ssrf可以访问 根服务器下的其他机器可以绕过一些限制
概述
如果没有对用户提交 URL 和远端服务器所返回的信息做合适的验证或过滤,就有可能存在“请求伪造”的缺陷。“请求伪造”,顾名思义,攻击者伪造正常的请求,以达到攻击的目的。如果“请求伪造”发生在服务器端,那这个漏洞就叫做“服务器端请求伪造”,英文名字 Server Side Request Forgery,简称 SSRF。
SSRF 是一种由攻击者发起的伪造服务器发送的请求的一种攻击。
SSRF原理
- 服务器接受了来自于客户端的 URL 地址,并由服务器发送该 URL 请求。
- 对用户输入的URL 没有进行恰当的过滤,导致任意URL 输入。
- 没对响应的结果进行检验,直接输出。
SSRF危害
- 端口扫描
- 内网web 应用指纹识别
- 攻击内网应用
- 读取本地文件
SSRF利用
文件访问
可访问其他网站下的文件
?url=http://www.baidu.com/robots.txt
端口扫描
构造不同的请求,来实现不同的功能
构造服务器请求伪造,为127.0.0.1这个请求是服务器自己发送所以访问的目标服务器为自己
访问之后更换不同的端口,观察浏览器的回应判断是否开启此端口
curl.php?url=http://127.0.0.1:3389/
本地文件读取
根据file协议进行文件读取
- 需要有绝对路径
curl.php?url=file://C:/
内网应用指纹识别
根据一些系统下是有版本的显示文件的,通过ssrf可以jin’x
攻击内网web应用
通过SSRF 漏洞可以实现对内网的访问,从而可以攻击内网应用
根据实际情况相结合相结合,攻击手法有sql注入,xss注入等
注意:
在后面自己构造的url中需要传参时,需要对自己构造的url中的空格进行二次编码,如果是sql注入可以用/**/注释来代替空格
SSRF防御
过滤输入
- 限制协议,仅允许http 或 https 协议
- 限制 IP,避免应用被用来获取内网数据,攻击内网,比如:127.0.0.1
- 限制端口,限制请求端口为常用端口
过滤输出
- 过滤返回信息,只要不符合要求的,全部过滤
- 统一错误信息,让攻击无法对内网信息进行判断
SSRF挖掘
WEB功能 | URL关键字 |
---|---|
分享 | share |
转码服务 | wap |
在线翻译 | url |
图片加载与下载 | link |
图片、文章收藏功能 | src |
未公开的API实现 | source |
target | |
u | |
3g | |
display | |
sourceURL | |
imageURL | |
domain |