一、SSRF绕过WAF
当我们成功发现了一个应用存在SSRF漏洞后,我们又发现了应用后端有一个WAF,需要在不触发WAF的情况下继续利用该漏洞。这个时候,我们可以首先尝试一些常规的绕过办法,例如:
1、使用已知的绕过方式,例如使用CRLF绕过等
http://target.com/url.php?url=http://example.com%0d%0aAllowHeader:header1
2、使用已知的WAF规则绕过方式,例如对URL进行编码等
http://target.com/url.php?url=http://example.com/%2f../%2f../%2f../etc/passwd
3、使用HTTPS绕过方式,例如使用https://127.0.0.1都进行请求,此时的请求不能够引起SSRF的报错信息
https://127.0.0.1:8081/url.php?url=https://example.com
二、SSRF绕过方法有哪些
上述代码中的方法已经是比较基础的绕过方法,但总的来说,SSRF绕过方法并没有唯一确定的方案,各种应用有各种不同的实现,绕过方式也各有不同。下面列举一些常见的SSRF绕过方法:
1、协议限制绕过:当应用对协议有限制时,我们可以利用不同的协议进行绕过,例如file://, gopher://, dict://等
http://target.com/url.php?url=file:///etc/passwd
2、127.0.0.1绕过:当应用禁用了127.0.0.1地址时,我们可以使用0.0.0.0或localhost绕过
http://target.com/url.php?url=ftp://0.0.0.0:21/list.txt
3、限制URL绕过:当应用限制了URL的可用字符,我们可以使用base64编码或URL编码绕过
http://target.com/url.php?url=aHR0cDovL2V4YW1w
三、SSRF绕过手法
我们在利用SSRF漏洞时,需要结合具体场景和应用来选择不同的手法。下面是一些常用的手法:
1、DNS重绑定:对于某些应用,例如浏览器插件等,可以通过DNS重绑定来绕过SSRF漏洞,绕过方法比较简单,实现基础的DNS重绑定即可,例如使用Burp中的Hosts文件等。
2、利用URL重写:如果可以修改应用中的URL跳转,例如跳转至其他协议,可以直接利用URL跳转进行漏洞利用。
3、利用文件读取:有些SSRF漏洞可以读取文件,例如/etc/passwd等文件,利用文件读取可以获取一些关键信息,例如密码等。
四、SSRF绕过协议限制
在浏览器中,很多协议已经受到了限制,例如file://, gopher://协议等。要绕过这些协议限制,我们可以尝试以下方法:
1、利用URL跳转:对于可以修改应用中的URL跳转的场景,可以利用URL跳转,例如跳转至其他协议。
2、利用特殊协议:例如jar://协议、input://协议等,可以使用一些特殊协议来绕过协议限制。
http://target.com/url.php?url=javascirpt:alert(1)
或者是
http://target.com/url.php?input=http://example.com
五、SSRF绕过127.0.0.1
如果应用禁用了127.0.0.1地址,我们可以使用0.0.0.0或localhost轻松绕过,其他可以使用的地址还包括:
1、[::1]:IPv6的本地回环地址
2、0:0:0:0:0:0:0:1:IPv6的本地回环地址,与[::1]等效,其中0可以省略。
3、[::]:IPv6的通配地址
六、SSRF绕过中国大陆IP
由于中国大陆的IP段比较有限,因此应用往往会对大陆IP进行限制。一些绕过方法如下:
1、使用其他国家的IP:如果目标站点没有国家限制,可以使用其他国家的IP,例如使用美国的IP来发起请求。
2、利用代理:使用代理可以绕过目标应用的国家限制。
3、使用CDN:通过使用CDN等服务,可以隐藏真实的IP地址,绕过国家限制。
七、SSRF禁用127.0.0.1如何绕过
如果应用禁用了127.0.0.1地址,我们可以尝试以下方法:
1、使用IP地址对应的域名:例如使用localhost代替127.0.0.1
2、使用其他可用的IP地址:可以使用0.0.0.0或其他可用的地址来绕过127.0.0.1的限制。
3、使用其他协议:使用一些其他的协议,例如ftp://等。
以上是一些常见的SSRF绕过方法,当然,这仅仅只是冰山一角,同时也需要开发人员对于应用的漏洞具有充足的认识,才能够更好的发现和绕过这些漏洞。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/155230.html