一、原理
目标:从外网无法进入内部的系统
ssrf 即;服务器端请求伪造。
形成原因大都是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。
关于“服务端提供了从其他服务器应用获取数据的功能”实际上就是
web功能上有:
1.分享:通过url地址分享网页内容。
2.转码服务:通过url地址把原地址的网页内容调优,使其适合手机屏幕浏览。
3.在线翻译:通过url地址翻译对应文本的内容。提供此功能的国内公司有百度、有道等。
4.图片加载与下载:通过url地址加载或下载图片
5.图片、文章收藏功能。
6.未公开的api实现以及其他调用url的功能。
关于“没有对目标地址做过滤与限制” 当有过滤和限制时,我们也可以利用一些绕过知识。
ssrf漏洞主要和curl函数以及file_get_content函数有关。
在页面ssrf.php中,程序获取get参数url,通过curl.init()初始化curl组件后,将参数url带入curl_setopt(),但后调用curl_exec()请求该url。
二、pikachu中的ssrf靶场
1、ssrf(curl)
这里get参数url:
http://192.168.1.5/pikachu-master/vul/ssrf/ssrf_curl.php?url=http://127.0.0.1/pikachu-master/vul/ssrf/ssrf_info/info1.php
所以我们可以得到:
http://192.168.1.5/pikachu-master/vul/ssrf/ssrf_curl.php?url=
改变参数就可以了。
2、ssrf(file_get_content)
http://192.168.1.5/pikachu-master/vul/ssrf/ssrf_fgc.php?file=http://127.0.0.1/pikachu-master/vul/ssrf/ssrf_info/info2.php
练习1
练习2
访问header.php
http://192.168.1.5/pikachu-master/vul/ssrf/ssrf_fgc.php?file=http://192.168.1.5/pikachu-master/header.php
黑白盒测试
白盒:查找漏洞函数,定位函数,去判定是否存在可控变量,如果有过滤能绕过,有漏洞,没过滤就是有漏洞。
黑盒就是看web功能。