returnUrl 重定向漏洞

作者:vkvi 来源:ITPOW(原创) 日期:2013-6-10

在我们访问一个页面时(假如页面叫 a.aspx),如果需要登录,而我们又没有登录,则会重定向到登录页,此时一般会带一个参数 returnUrl=a.aspx,当登录成功后,再重定向到 returnUrl,即 a.aspx。

本来这是为了客户体验,但是如果不对 returnUrl 验证,将会有一个漏洞,类似于跨站攻击一类的漏洞。

比如:假如 QQ 邮箱支持 returnUrl,我做一个 QQ 邮箱的网址,后面跟一个 returnUrl 为攻击者的网址,发给网友,网友一看前面确实是 QQ 邮箱的网址,而后面的 returnUrl 经过 UrlEncode 编码,一般又不容易看出来,就去登录,登录成功后跳转到 returnUrl,也就是攻击者的网址,而我再把这个攻击者网址对应的网页做成和 QQ 邮箱登录界面一模一样,但提示密码错误,要求网友再输入。此时大多数网友都会上当。

解决方法是验证 returnUrl,只有本站,或者受信任的第三方才允许跳转。

相关文章