SSRF(Server-Side Request Forgery:服务器端请求伪造)
其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制
导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据
数据流:攻击者----->服务器---->目标地址
根据后台使用的函数的不同,对应的影响和利用方法又有不一样
PHP中下面函数的使用不当会导致SSRF:
file_get_contents()
fsockopen()
curl_exec()
这几个函数共同的特点就是 都能通过一些协议去访问目标服务器上的资源
如果一定要通过后台服务器远程去对用户指定(“或者预埋在前端的请求”)的地址进行资源请求,则请做好目标地址的过滤。
你可以根据"SSRF"里面的项目来搞懂问题的原因
我们来到pikachu
这里有个a标签,点进去以后是一首诗。
而且传了一个url到后台
来看一下后台源码是怎么出的问题
在源码中 这边会直接获取url,之后把请求返回的数据返回到前段
我们这时候就可以传一下其他的地址 试试
比如 我们把LOL官网给传上去
可以看到LOL的官网的数据显示出来,这并不是浏览器直接请求的LOL官网
而是浏览器把这个LOL的参数传到了后端,后端的服务器再通过某种方法去请求的LOL
然后把LOL返回的数据又返回到了前段
也就是说,我们可以通过这个漏洞来看看同一个类网中的端口是否是打开的
下面这个漏洞也是一个思路
只不过这里用的是file get contents这个函数 来获取本地的或者远程的服务器上的数据
当然这个函数也支持很多网络协议
比如我们试试把file名字改一下
也同样可以传入
我们可以PHP内置的方法去读取源码
我们可以来试试
这样就直接吧base64的编码返回到前端