一种绕过403的新技术,跟大家分享一下。研究HTTP协议已经有一段时间了。发现HTTP协议的1.0版本可以绕过403。于是开始对lyncdiscover.microsoft.com域做FUZZ,并且发现了几个403Forbidden的文件。
(访问fsip.svc为403)
在经过尝试后,得出一个结论:当清除所有header头的值时,服务器会对客户端作出响应。
结论1:
将HTTP协议版本更改为1.0,而且不要在标题中设置任何值。
结论2:
如果服务器和任何其他安全机制没有以正确的方式配置,不把Host放在header头内时,服务器将会自己把目标地址放在header中,这会导致服务器将我们的请求认做本地请求。
(访问fsip.svc为200)
用同样的方式尝试了另一个文件,并且再次成功bypass。
(403)
(200)
还要补充一点:你也可以用同样的方式去绕过CDN获取服务器IP。
例如:
如你所见,在Location中,它在返回中显示了域本身的地址。
再次使用相同的方法并发送请求时,显示了服务器的主地址。
以上技术已经被添加到burp工具当中:
https://portswigger.net/bappstore/444407b96d9c4de0adb7aed89e826122
------------------------------
以上这种思路虽然已经被添加到了burp插件,但我们依旧需要去学习了解插件运行背后的逻辑,而不只是当一个脚本小子。
尤其是在做黑盒测试中,秉持改变原有数据结构的FUZZ思路进行一切可能的尝试,才会挖掘出更有趣的漏洞。
在burp权限绕过插件中,除了以上尝试,还有诸多修改url请求的尝试,例如:
https://www.example.com..;/api/v1/users
https://www.example.com/api..;/v1/users
https://www.example.com/api/v1..;/users
这些尝试本质也是在破坏数据原有结构,利用后端,服务器等处理特性实现绕过。
其实除此外还可以进行任何可能的尝试:https://www.example.com/api/v1/users
例如将v1改成v2,利用通配符代替数字,或者添加多余的字符串等等操作。