0x00:使用场景
现在 Web 登录很多都接入了QQ、微信、新浪等第三方登录,以 QQ 第三方授权登录为例说明,在我们调用 QQ 授权服务器进行授权时,会在参数中传入redirect_url(重定向)地址,告知 QQ 授权服务器,授权成功之后页面跳转到这个地址,然后进行站点登录操作。但是如果你的重定向地址在传输过程中被篡改成了一个钓鱼网址,那么就是导致用户的授权信息被非法获取。当然,QQ 第三方登录,也会有自己的策略,就是接入 QQ 第三方登录的应用,会在开发者平台,配置相关的跳转白名单,只有属于白名单中的域名、子域名或 url ,QQ授权服务器才跳转,如果发现 redirect_url 不合法,则跳转到非法页面。
漏洞通常发生在以下几个地方:
1. 用户登录、统一身份认证处,认证完后会跳转
2. 用户分享、收藏内容过后,会跳转
3. 跨站点认证、授权后,会跳转
4. 站内点击其它网址链接时,会跳转
0x01:利用方法
利用反斜杠绕过限制
如:http://www.qwe.com/?Url=http://login.qwe.com/
同样是在它本身域名前加上正斜杠,然后正斜杠前面跟上你想跳转的域名地址
如:http://www.qwe.com/acb?Url=http://test.com/login.qwe.com
利用反斜杠绕过限制
如:http://www.qwe.com/acb?Url=http://login.qwe.com/
同样是在它本身域名钱加上两个反斜杠,然后一个反斜杠前面跟上你想跳转的域名地址
如:http://www.qwe.com/acb?Url=http://test.com\login.qwe.com
同样是在它本身域名钱加上两个反斜杠,然后两个反斜杠前面跟上你想跳转的域名地址
如:http://www.qwe.com/acb?Url=http://test.com\\login.qwe.com
一个反斜杠一个点 利用.这样的格式,也就是一个反斜杠加一个点来跳过限制
如:http://www.qwe.com/acb?Url=http://test.com\.login.qwe.com
利用@绕过URL限制
如:http://www.qwe.com/acb?Url=http://login.qwe.com@test.com
后面的test.com就是要跳转到的域名,前面的域名都是用来辅助以绕过限制的
利用#号绕过
如:http://www.qwe.com/acb?Url=http://test.com#login.aaa.com