url重定向漏洞绕过方式总结

url重定向漏洞

URL重定向(URL redirection,或称网址重定向或网域名称转址),是指当使用者浏览某个网址时,将他导向到另一个网址的技术。而url重定向漏洞产生的原因是这个网址可控且没有做足够的校验,导致网站接受恶意用户输入的链接,跳转到一个攻击者控制的网站,而攻击者控制的网站往往是一个钓鱼页面,用于骗取用户的个人信息和登录口令。

简单示例

存在漏洞的url往往都具有以下格式:

http://www.example.com/xxx?server=http://www.example.com/yyy

后面的url就是其跳转的url,一般由于regist、login、logout这些位置在操作完之后都会有跳转操作,url跳转漏洞也多出现于这类位置。

绕过方式

检测是否存在信任域名绕过

由于过滤机制往往只检查后面url是否包含信任域名,所以可构造如下url进行绕过:

http://www.example.com/xxx?server=http://www.example.com.hack.com/hack.html

hack.com是攻击者网站,攻击者在hack.com中构造www.example.com.hack.com的解析且http://hack.com/hack.html 页面为攻击页面即可。

http://www.example.com/xxx?server=http://hack.com/www.example.com/

hack.com是攻击者网站,攻击者在hack.com中构造http://hack.com/www.example.com/ 页面为攻击页面即可。

多次重定向绕过

某些过滤机制可以允许跳转某些信任站点如 baidu.com,如果存在这种情况,可以使用多重跳转来规避过滤机制。

http://www.example.com/xxx?server=https://www.baidu.com/link?url=fIqZTSHDWy6_CvKi0jDIAa8ZKUKwrwhQlmYecokJ9gy

link?url= 是百度的默认跳转方式,后面是百度的缓存链接,上面链接的缓存是google页面,此url可通过百度二次跳转到谷歌。

特殊符号绕过

以下例子中,www.example.com为可信网站,www.hack.com为恶意网站

@绕过

http://www.example.com/xxx?server=http://www.example.com@www.hack.com

/绕过

http://www.example.com/xxx?server=/www.hack.com

//绕过

http://www.example.com/xxx?server=//www.hack.com

////绕过

http://www.example.com/xxx?server=////www.hack.com

\绕过

http://www.example.com/xxx?server=http://www.hack.com\www.example.com

#绕过

http://www.example.com/xxx?server=http://www.hack.com#www.example.com

?绕过

http://www.example.com/xxx?server=http://www.hack.com?www.example.com

.绕过

http://www.example.com/xxx?server=.hack.com

防御建议

跳转地址白名单化

如无法使用白名单,要合理校验跳转地址,限制绕过手段

fork me on github