目录
漏洞概述
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造特殊形成的请求,并且由指定服器端发起恶意请求的一个安全漏洞。由于业务运行的服务器处于内外网边界,并且可通过利用当前的这台服务器访问到与外部网络隔离的内网应用,所以一般情况下,SSRF漏洞的攻击目标是攻击者无法直接访问的内网系统。
SSRF漏洞的形成大多是由于服务端提供了,从其他服务器应用获取数据的功能而没有对目标地址做过滤和限制。例如,黑客操控服务端从指定URL地址获取网页文本内容,加载指定地址的图片,下载等,利用的就是服务端请求伪造,SSRF漏洞可以利用存在缺陷的Web应用作为代理攻击远程和本地的服务器.
漏洞危害
对内网进行端口扫描和主机存活探测等敏感信息收集 攻击内外网其他存在漏洞的应用(主要是Get参数攻击) 造成内外网DDOS攻击 通过file://读取本地任意文件,通过dict协议获取服务器端口服务,通过http协议探测web应用等等。
漏洞出现点
分享
通过url地址分享文章,例如
通过url参数的获取来实现点击链接的时候跳到指定的分享文章。如果对此功能中没有对目标地址的范围做过滤与限制,则就存在着SSRF漏洞。
图片的加载与下载
通过url地址来加载或下载图片
http://image.xxx.com/image.php?image=nup/ididhfid
图片加载存在于很多的编辑器中,编辑器上传图片处,有的是如载远程图片到服务器内。还有一些采用了加载远程图片的形式,本地文章加载了设定好的远程图片服务器上的图片地址,如果没对加载的参数做限制可能造成 SSRF.
图片、文章收藏功能
http://title.xxx.com/title?title=file:/letc/passwd
例如title参数是文章的标题地址,代表了一个文章的地址链接,请求后返回文章是否保存,收藏的返回信息。如果保存,收藏功能采用了此种形式保存文章,则在没有限制参数的形式下可能存在SSRF
利用参数中的关键字来查找
例如以下的关键字:
share
wap
url
link
src
source
target
u
3g
display
sourceurl
imageURL
domain
...
SSRF漏洞验证
SSRF漏洞是让服务器发送请求的安全漏洞,所以我们就可以通过抓包分析发送的请求是否是由服务器发送的,从而来判断是否存在SSRF漏洞。
SSRF常用协议
http/https协议
当前应用获取用户传递过来的url参数后端发送请求,并且将最终的请求结果返回到html前端页面。
file协议
如果服务器端对请求资源所使用的协议方式没有进行限制,那么就可以通过fle协议访问当前服务器的本地文件。
dict协议
通过 dict 协议可以远程访问一个指定的tcp 端口,并且会返回端口所提供的服务的部分组件信息,当目标端口开放(有服务信息显示,但会报错)
常见危险函数
file_get_contents()
fsockopen()
curl_exec()
漏洞利用方式
- 能扫描内部网络,获取端口,服务信息。
- 攻击运行在内网或本地的应用程序。
- 对内网web进行指纹识别
- 对内部主机和端口发送请求包进行攻击
- file协议读取本地文件
SSRF常见绕过方法
1.@ http://abc.com@127.0.0.1
2.添加端口号 http://127.0.0.1:8080
3.短地址 https://0x9.me/cuGfD
4.可以指向任意ip的域名 xip.io 原理是DNS解析。xip.io可以指向任意域名,即127.0.0.1.xip.io,可解析为127.0.0.1
5.ip地址转换成进制来访问 192.168.0.1=3232235521(十进制)
6.非HTTP协议
7.DNS Rebinding
8.利用[::]绕过 http://[::]:80/ >>> http://127.0.0.1
9.句号绕过 127。0。0。1 >>> 127.0.0.1
10.利用302跳转绕过 使用https://tinyurl.com生成302跳转地址
常见限制
- 限制为http://www.xxx.com 域名
采用http基本身份认证的方式绕过。即@http://www.xxx.com@www.xxc.com
- 限制请求IP不为内网地址
当不允许ip为内网地址时
(1)采取短网址绕过
(2)采取特殊域名
(3)采取进制转换
- 限制请求只为http协议
(1)采取302跳转
(2)采取短地址
防御办法
- 限制请求的端口只能为Web端口,只允许访问HTTP和HTTPS的请求。
- 限制不能访问内网的IP,以防止对内网进行攻击。
- 屏蔽返回的详细信息。