4.1 知识要点与实验目标
4.1.1 开放重定向定义和产生原理
所谓开放重定向(Open Redirect),也称未经认证的跳转,是指当受害者访问给定网站的特定URL时,该网站指引受害者的浏览器在单独域上访问完全不同的另一个URL,会发生开放重定向漏洞。
开放重定向(Open Redirect),也称未经认证的跳转。
开放重定向产生原理:
由于应用越来越多地需要和其他的第三方应用交互,以及在自身应用内部根据不同的逻辑将用户引向到不同的页面,譬如一个典型的登录接口就经常需要在认证成功之后将用户引导到登录之前的页面,整个过程中如果实现得不好就可能导致一些安全问题,特定条件下可能引起严重的安全漏洞。
通过重定向,Web应用程序能够引导用户访问同一应用程序内的不同网页或访问外部站点。应用程序利用重定向来帮助进行站点导航,有时还跟踪用户退出站点的方式。当Web应用程序将客户端重定向到攻击者可以控制的任意URL时,就会发生Open Redirect漏洞。
攻击者可以利用开放重定向漏洞诱骗用户访问某个可信赖站点的URL,并将它们重定向到恶意站点。攻击者通过对URL进行编码,使最终用户很难注意到重定向的恶意目标,即使将这一目标作为URL参数传递给可信赖的站点时也会发生这种情况。因此,开放重定向常被作为钓鱼手段的一种而滥用,攻击者通过这种方式来获取最终用户的敏感数据。
对于URL跳转的实现一般会有几种实现方式:
1)META标签内跳转。
2)JavaScript跳转。
3)header头跳转。
通过以GET或者POST的方式接收将要跳转的URL,然后通过上面几种方式的其中一种来跳转到目标URL。一方面,由于用户的输入会进入Meta、JavaScript、Header头,所以都可能发生相应上下文的漏洞,如XSS等。即使只是对于URL跳转本身功能方面,就存在一个缺陷,因为这会将用户浏览器从可信的站点导向到不可信的站点,同时如果跳转的时候带有敏感数据一样可能将敏感数据泄露给不可信的第三方。