DNS Rebinding 攻击
DNS Rebinding攻击的相关资料:http://wiki.ioin.in/search?word=dns+rebinding ,我就不再赘述。
在DNS模块中,每个用户会分配一个三级域名,我们可以添加这个域名每次解析到的IP地址,如:
如上图,你的三级域名第一次解析会解析到8.8.8.8
,第二次会解析到127.0.0.1
。
点击增加,还可以增加第三次、第四次……的解析地址。
我们可以利用dig命令来查看解析结果:
可见,执行两DNS次请求,返回的A记录结果不同。但有一点要注意,这两次请求需要在5秒内进行,否则顺序将被重置,5秒后的DNS请求将再次返回第0个结果。
有了这个功能,下述的SSRF检测代码在某些情况下即可绕过:
<?php
$url = 'http://675ba661.s.2m1.pw/';
$ip = gethostbyname(parse_url($url, PHP_URL_HOST));
if($ip !== '127.0.0.1') {
echo file_get_contents($url);
}
如下图,三次请求中,第三次成功请求到127.0.0.1的HTTP页面(默认页面),绕过SSRF检查: