ssrf漏洞在厂商的处理下可能进行一些特殊处理导致我们无法直接利用漏洞
有以下四种:
1.ip地址限制绕过
2.域名限制绕过
3.30x跳转绕过域名限制
4.DNS rebinding绕过内网ip限制
本章我们讲2.域名限制绕过
域名限制绕过
厂商发现了ssrf漏洞,其采取的修复方式是设置白名单,在白名单中添加了192.168.112.12,
仅允许我们访问192.168.112.12的资源。
URL:http://192.168.112.12/pikachu-master/vul/ssrf/ssrf_curl.php?url=http://127.0.0.1
假设我们无法访问127.0.0.1,这样的话ssrf漏洞的危害就变的很低很低了。
绕过方式:
原理:对于目标地址的白名单限制也存在绕过可能性,例如限制仅加载目标为 192.168.112.12
的资源,由于HTTP 协议中 URL 地址中支持访问者提供用户名和密码来实现访问认证,这使得攻
击者可以构造特殊的URL 地址参数。
其实我们正常访问一个网站例如:
http://192.168.112.12/pikachu-master/
都是域名加资源路径的,但如果url地址支持访问者提供用户名和密码来实现访问认证,我们就
可以使用以下url:
http://username:password@192.168.112.12/pikachu-master/
而这种格式就存在风险可以使得我们进行绕过,例如:
http://192.168.112.12@127.0.0.1/pikachu-master/
此时 192.168.112.12 部分作为用户名和密码相关信息,127.0.0.1 则为目标地址,若白名单规
则为主机名部分包含 192.168.1.63 判定为满足条件就会导致绕过。
演示:
URL:http://192.168.112.12/pikachu-master/vul/ssrf/ssrf_curl.php?url=http://192.168.112.12@127.0.0.1:22

我们可以看到以这种格式的话是可以正常访问的。
注意:@符号在不同的语言与框架中的解析不一样:
例如:http://192.168.112.12@baidu.com:80@127.0.0.1这种加了两个@符号的我们最终访问的到
底是哪个域名呢?是baidu.com还是127.0.0.1?
URL:http://192.168.112.12@位置2 @位置3
如果是curl或者libcurl那就是访问的位置二
如果是 NodeJS URL
Perl URL
go net/URL
PHP parse_url
Ruby addressable
以上的就是访问的位置三
总结: cURL 和 libcurl 解析时中间生效,其它语言最后的地址生效。
我们一般来说就是构造一个就行不必写那么多。