SSRF漏洞防御:黑白名单的编写
以pikachu靶场中SSRF(crul)为例
我们可以看到未做任何防御
我们查看源代码
黑名单的制作
思路: 什么内容不能访问
构造代码
$xy=array(
"file" => "",
"http" => "",
"https" => "",
"gopher" => "",
"dict" => "",
"ldap" => "",
"tftp" => ""
);
$URL1=str_replace(array_keys($xy),$xy,$URL);
if ($URL1 != $URL){
exit("输入错误");
};
插入到判断语句里
当有人进行ssrf攻击时返回输入错误
白名单的制作
思路:什么内容可以访问
构造代码
$bmd = "http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/info2.php";
$bmd1 = "http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/info1.php";
if ($URL == $bmd){
} elseif ($URL == $bmd1){
}else{
exit("输入错误!");
};
插入到判断语句中
实现效果: