目录
URL跳转漏洞
-
介绍
URL跳转漏洞是指后台服务器在告知浏览器跳转时,未对客户端传入的重定向地址进行合法校验,导致用户浏览器跳转到的钓鱼页面的一种漏洞。
不安全的URL跳转问题可能发生在一切执行了URL地址跳转的地方。如果后端采用了前端传进来的(可能是用户传参或者之前预埋在前端页面的URL地址)参数为了做跳的目的地,而又没有做判断的话就可能发生“跳错对象”的问题。
-
跳转实现方式
对于URL跳转的实现一般会有几种实现方式:
- META标签内跳转
- JavaScript跳转
- header头跳转
通过以GET或者POST的方式接收将要跳转的URL,然后通过上面的几种方式的其中一种来跳转目标URL。一方面,由于用户的输入会进入meta,JavaScript,http头,所以都可能发生的漏洞,如xss等等,但是同时,即使只是对于URL跳转本身功能方面就存在一个缺陷,因为会将用户浏览器从可信的站点导向到不可信的站点,同时如果跳转的时候带有敏感数据一样可能将敏感数据泄露给不可信的第三方。
META跳转源码
Header跳转源码
-
漏洞产生原因
- 没有考虑过任意URL跳转漏洞,或者根本不知道/不认为这是个漏洞;
- 考虑不周,用取子串、取后缀等方法简单判断,代码逻辑可被绕过;
- 对传入参数做一些奇葩的操作(域名剪切、拼接、重组)和判断,适得其反,反被绕过;
- 原始语言自带的解析URL、判断域名的函数库出现逻辑漏洞或者意外特性,可被绕过;
- 原始语言、服务器/容器特性、浏览器等对标准URL协议解析处理等差异性导致被绕过。