对 pikachu SSRF 靶场进行黑白名单加固

Pikachu SSRF(curl) 增加黑白名单

网站漏洞

原网站的意图只允许使用 http 协议访问 /pikachu/vul/ssrf/ssrf_info/info1.php

http://10.9.47.208/pikachu/vul/ssrf/ssrf_curl.php?url=http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/info1.php

而此页面存在 SSRF 漏洞,未进行验证过滤,从而导致攻击者伪造正常的请求,以达到攻击的目的。

使用 file 协议查看 hosts 文件

http://10.9.47.208/pikachu/vul/ssrf/ssrf_curl.php?url=file:///c:/windows/system32/drivers/etc/hosts

image-20231125163846057

使用 http 协议访问其他 url

http://10.9.47.208/pikachu/vul/ssrf/ssrf_curl.php?url=http://www.baidu.com

image-20231125170420989

使用 dict 探测端口等操作

image-20231125170749147

黑名单过滤

禁止 gopher、file、dict 协议

对输入的协议字段进行过滤

添加以下代码

// 定义黑名单协议
$black = array("gopher","file","dict");
// 提取协议名
$protocol = explode(":",$URL);
// 检测参数中的协议是否在黑名单内
if(in_array($protocol[0],$black)){
    die("你干嘛~~嗨哟");
}

image-20231125173145238

效果

  • dict 协议被禁止

    image-20231125173225473

  • file 协议被禁止

    image-20231125173307479

问题

此处只是单纯的禁止了 gopher、file 和 dict 协议,但仍能使用 http 访问其他文件

image-20231125174120192

加固方法还可以设置文件的后缀名黑名单来禁止访问其他类型的文件

上篇文章有写到

但黑名但需要考虑的因素过多,相较于更加严格的白名单过滤,安全性稍差,比如仍能访问其他网站

如百度

image-20231125175822098

白名单过滤

过滤规则

只允许访问 http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/ 下的文件

$allow_url = "http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/";
$pre_url=substr($URL,0,strlen($allow_url));
if($allow_url != $pre_url){
    die("你干嘛~~嗨哟");
}

效果

无法使用 file 协议访问 hosts 文件

image-20231125180009421

无法使用 dict 协议探测端口

image-20231125180131176

也无法使用 http 协议访问其他 url

image-20231125180205612

问题

但仍能通过目录穿越等操作进行危险操作

image-20231125180347480

可以添加黑名单,禁止 url 中出现 ../ 等字样

网络安全需要多方面综合防护才能达到较为良好的效果,无法只通过某种手段而实现绝对的安全,此处只对的黑白名单防范进行了简单的演示

  • 20
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gjl_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值