SSRF
1、SSRF
1.1 SSRF概述
SSRF(Server-Side Request Forgery:服务器端请求伪造)
其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制
导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据
数据流:攻击者----->服务器---->目标地址
根据后台使用的函数的不同,对应的影响和利用方法又有不一样
PHP中下面函数的使用不当会导致SSRF:
file_get_contents()
fsockopen()
curl_exec()
如果一定要通过后台服务器远程去对用户指定("或者预埋在前端的请求")的地址进行资源请求,则请做好目标地址的过滤。
1.2 SSRF---curl实验过程
(1)首先来看一下源码
(2)这段代码,首先会去获取前端传进来的url,然后会通过curl_init 去做一个初始化的操作,然后通过curl_exec去对他做了一个请求,最后把请求回来的数据返回到前端,但是这段代码并没有对传进来的其他地址进行过滤,那如果我们传入其他的地址是否会按照之前所说的,将请求回来的数据发送到前端
(3)通过测试,可以实现访问
(4)这也就意味着我们可以通过这个漏洞,对同一个内网中的服务器进行扫描探测获取到更多的内网资源。
1.3 SSRF---file_get_content实验过程
(1)这个漏洞和curl基本相同,也是可以再不加过滤的情况下改变url,对内网资源进行勘探扫描,但不同的是,它可以利用php的内置方法,在前端展示出后台的hphp源码,我们可以通过构造一个payload来进行测试php://filter/read=convert.base64-encode/resource=ssrf.php
(2)通过base64解密工具,获取到源码