ssrf漏洞攻击防御php,SSRF防护方案

SSRF(server-side request

forge)攻击,是一种利用服务器代码缺陷,以服务器身份发送网络请求的攻击。可以通过此种攻击获取服务器上任意文件、识别并攻击服务器所在网络中的其他服务器、把服务器作为跳板对外发起攻击等等。

1、攻击原理

一段存在ssrf漏洞的php伪代码

if (isset($_GET[‘url’])){

$url = $_GET[‘url’];

$image = fopen($url, ‘rb’);

header(“Content-Type: image/png”);

fpassthru($image);

}​

2、​攻击示例

(1)获取服务器上任意文件:/?url=file:///etc/passwd

(2)探测服务器所在内网:/?url=http://192.168.11.1:8088/test.php

(3)攻击服务器内网中的服务器:/?url=http://192.168.11.1:8088/control.php?off=1

(4)攻击服务器上其他服务:/?url=dict://localhost:11211/stat

(5)把服务器作为跳板:/?url=http://www.baidu.com/info.php?id=’ or

‘a’=’a

3、防护措施

(黑名单)

(1)过滤10.0.0.0/8

、172.16.0.0/12、192.168.0.0/16、localhost私有地址​、IPv6地址

(2)过滤file:///、dict://、gopher://、ftp:// 危险schema

(3)​对返回的内容进行识别

(4)内网服务开启鉴权​(Memcached, Redis, Elasticsearch

and MongoDB)

4、绕过防护

(1)http redirect跳转 绕过过滤(注意设置 :curl_setopt($ch,

CURLOPT_FOLLOWLOCATION, 0);

(2)ip其他编码形式:参考http://every@www.pc-help.org/obscure.htm

206.191.158.55

十进制

191 * 256 * 256 + 158 * 256 + 55 = 12557879

http://206.12557879/obscure.htm

http://206.191.40503/obscure.htm

十六进制

191=0xBF 158=0x9E

http://0xCE.0xBF9E37/obscure.htm

http://0xCE.0xBF.0x9E37/obscure.htm

八进制

206=0316 191=0277  (先转到10进制,再依次取余8,转到8进制)

http://0316.057717067/obscure.htm

http://0316.0277.0117067/obscure.htm

混合进制

http://0xCE.191.0236.0×37/obscure.htm

(3)通配符DNS服务:xip.io(1.11.111.111.xip.io =>

1.11.111.111)

(4)DNS rebinding

5、最佳防护

(1)使用地址白名单

(2)对返回内容进行识别

(3)需要使用互联网资源(比如贴吧使用网络图片)而无法使用白名单的情况:首先禁用

CURLOPT_FOLLOWLOCATION;然后通过域名获取目标ip,并过滤内部ip;最后识别返回的内容是否与假定内容一致

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值