以pikachu靶场ssrf(curl)为例:
你会发现什么也没防御项访问基本的文件内容,端口开放都是可以看到的,没有任何防御措施。
我们去查看一下他的源码有没有过滤什么
没有任何过滤,咱么尝试进行过滤一下,禁止使用dict,file 等协议的黑名单
注:为了保险将原有的代码复制一份在进行测试黑白名单
黑名单:
简单来说就是什么不能访问咱就构造啥
$URL =$_GET['url'];
$lin =array("file" => "","dict" => ""
);
$URL1 = str_replace(array_keys($lin),$lin,$URL);
if ($URL1 != $URL){exit("你想咋滴!退");
};
场景测试:
防御成功。
尝试只能允许http和HTTPS协议
白名单:
$URL =$_GET['url'];$octet = explode( ":", $URL);if($octet[0]=="http" | $octet[1]=="https"){
echo $octet;die("小子你想干啥?");}$URL=$octet[0].":".$octet[1];
测试场景:
输入http协议的可以通过
输入file协议就会拦截不让访问
防御成功。