加载中…

加载中...

SSRF防护方案

转载 2017-11-08 17:55:20
标签: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) 评论(0) 收藏(0) 转载(0) 举报/Report
相关阅读
加载中,请稍后
zzzzfeng
  • 博客等级:
  • 博客积分:0
  • 博客访问:18,988
  • 关注人气:0
  • 荣誉徽章:

相关博文

新浪BLOG意见反馈留言板 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有