一、SSRF概述(部分内容来自pikachu平台)
SSRF(Server-Side Request Forgery:服务器端请求伪造),其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制,导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据。
数据流:攻击者----->服务器---->目标地址
根据后台使用的函数的不同,对应的影响和利用方法又有不一样
PHP中下面函数的使用不当会导致SSRF:
file_get_contents()
fsockopen()
curl_exec()
三个函数支持的协议略有不同,那么进一步深层次的问题,又想了解的可以去百度搜索更多的资源。
如果一定要通过后台服务器远程去对用户指定("或者预埋在前端的请求")的地址进行资源请求,则请做好目标地址的过滤。
二、演示环节
2.1 SSRF(curl)
1、我们来到pikachu实验平台,打开对应的模块。
2、向后端传入的URL我们是否可以改成别的呢?我们来试一下同网段的其它地址。
3、由于我测试的机器并没有联网,如果你在你的远端服务器上搭建的pikuchu,在这里你甚至可以将URL地址改为www.baidu.com,都没有问题。现在我们来看一下源码。
2.2 SSRF(file_get_contents)
1、来到对应的模块
2、我们再来看一下源代码。
3、采用内网请求的方式,我们来测试一下漏洞。