目录
前言
SSRF是什么
危害(利用方式):
SSRF漏洞原理:
CURL协议:
SSRF常见场景
社会化分享功能:
如何发现SSRF漏洞
工具利用:
如何防御SSRF漏洞
前言
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。 一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统。 SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制,比如使用了curl_exec函数。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。
SSRF是什么
SSRF(Server-Side Request Forgery,服务器端请求伪造)漏洞,是一种由攻击者构造请求,由服务器端发起请求的安全漏洞,本质上是属于信息泄露漏洞。
危害(利用方式):
1、扫描资产
2、获取敏感信息
3、攻击内网服务器(绕过防火墙)
4、访问大文件,造成溢出
5、通过Redis写入WebShell或建立反弹连接
SSRF漏洞原理:
很多web应用都提供了从其他的服务器上获取数据的功能。使用用户指定的URL,web应用可以获取图片,下载文件,读取文件内容等。这个功能如果被恶意使用,可以利用存在缺陷的web应用作为代理攻击远程和本地的服务器。一般情况下, SSRF攻击的目标是外网无法访问的内部系统,黑客可以利用SSRF漏洞获取内部系统的一些信息 。( 正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统 )。
我们先来看一下php中关于curl函数的定义:
php curl扩展:
phpcurl扩展有三个作用:
- 获取网页资源——爬虫
- webservice——获取接口数据
- FTP——下载文件
一般在php.ini文件中设置,默认情况下是开启的。
extension=php_curl.dll
现在我们把这串代码保存为ssrf1.php,并且把他部署在我们的网站下:
这里我们并没有给他传任何参数, 他正常显示。然后我们给他参数url传参,去访问百度页面:
如下图所示,是不是跳转到了百度页面呢!:
那如果我们这里url参数后面跟的不是百度页面,而是系统文件呢?会发生什么呢?
如上图,通过url传参,也访问到了我们系统的资源。
那么,我们就把这种没有经过限制,任意访问网站或者资源的情况,称为SSRF漏洞。
一般在实战情况下,通常企业中内网和外网都是有隔离的,攻击者的外部网络是访问不到内部网络的,如果在Web服务器上存在在了SSRF漏洞,那么攻击者是不是就可以借助这个SSRF漏洞去访问一些属于内网的资源了。
curl在php中只是众多会引起SSRF漏洞的函数之一,我们再来看一些也会引起SSRF漏洞的函数:
CURL协议:
下面我们来看一些有关于CURL函数的协议,这些协议可以让我们知道SSRF漏洞可以通过哪些协议去干哪些事情:
SSRF常见场景
社会化分享功能:
转码服务:
在线翻译:
图片加载、下载功能:
图片、文章收藏功能:
网站采集、网站抓取:
如何发现SSRF漏洞
首先我们第一步要做的就是要去爬取这个网站的地址,看看在网站的url中有没有如下常见的关键字,查看这些关键字是否请求了其他资源,比如http://test.php?url=file///127.0.0.1/etc/passwd:
工具利用:
SSRF-Testing
下载地址:GitHub - cujanovic/SSRF-Testing: SSRF (Server Side Request Forgery) testing resources
Gopherus
下载地址:
GitHub - tarunkant/Gopherus: This tool generates gopher link for exploiting SSRF and gaining RCE in various servers
SSRFmap
下载地址:
https://github.com/swisskyrepo/SSRFmap
现在我们再来拿pikaqiu靶场做一下演示:
我们点一下这个链接:
然后出现了以上场景,这里注意看我们的url一栏,这里他是不是访问了自己的的资源呢?那是不是也可以访问百度页面呢?我们来试一下:
可以看到他这里成功访问到了百度的页面,假如他这里没有进行限制的话,那我们是不是就可以通过这个链接访问任意资源了呢?
我们通过dict协议去探测本机的80端口有没有开放:
很显然80端口是开放的。
我们再通过file协议去读取本机的host文件:
很显然也读取到了。
如何防御SSRF漏洞
1、禁用协议
2、限制请求端口
3、设置URL白名单
4、过滤返回信息
5、统一错误信息