SSRF(Server-Side Request Forgery:服务器端请求伪造)
其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据
数据流:攻击者----->服务器---->目标地址
根据后台使用的函数的不同,对应的影响和利用方法又有不一样
练习部分
打开pikachu靶场SSRF curl部分,在页面发现点击标签后有文字输出。
注意到网页点击侯有个url地址,单独访问,可见网页输出信息。将其替换为别的地址试一试。
弹出了百度的搜索框。
这里的原理是前端请求后端的数据,后端把url地址发送给前端,前端根据后端发送过来的url把对应的后端url数据输出出来。
根据此如果我们改变url地址,就可以有机会让前端把后端的其他url数据输出出来。
利用file协议让服务器访问自己本地的文件, 构造的payload为
url=file:///D:\phpstudy_pro\WWW\pikachu\flag.txt
(磁盘号为我们猜测的phpstudy目录,实战中要换为你想要查询数据的服务器后端目录)
利用dict协议扫描3306端口是否开放:
url=dict://127.0.0.1:3306
file_get_content
函数, 该函数的作用是读取文件的内容, 可直接读取主机绝对路径或相对路径的文件, 也可以使用php伪协议进行利用。不同一点是这里可以使用php的伪协议了。打开pikachu靶场的SSRF(file_get_content)部分,尝试用下列构造的代码以base64形式获取文件内容。
file=php://filter/read=convert.base64-encode/resource=D:\phpstudy_pro\WWW\pikachu\flag.txt
在解码器中对得到的base64代码进行解码
完成对漏洞的利用。