URL重定向漏洞(中风险)

URL重定向漏洞(中风险)

风险级别: 中风险
风险描述: 攻击者可以将参数中URL值引入任意开发者的URL或者钓鱼网站;
风险分析: 部分HTTP参数会保留URL值,这会导致Web应用程序将请求重定向到指定的URL,攻击者可以将URL改为恶意站点,从而启动钓鱼网站欺骗用户,窃取用户隐私;



钓鱼攻击:

模拟网站或者软件,几乎与官方的软件完全相同,连域名也十分相似。
网络钓鱼是互联网上流行已久且行之有效的黑客攻击机制之一。这种攻击,通过诱导用户去访问钓鱼网站,进而获取用户数据信息,或是用恶意软件感染用户系统。



使用场景:

如今Web 登录很多都接入了QQ、微信、微博,新浪等第三方服务登录,以 QQ 第三方服务授权登录为例,在我们调用 QQ 授权服务器进行授权时,将会在参数中传入redirect_url(重定向)地址,告知 QQ 授权服务器,授权成功之后页面会跳转到这个地址,然后进行站点登录操作。但是如果你的重定向地址在传输过程中被篡改成了一个钓鱼网址,那么就是导致用户的授权信息被非法获取。

当然,QQ 第三方登录,也有自己的策略,就是接入 QQ 第三方登录的应用,会在开发者平台,配置相关的跳转白名单(白名单限制),只有属于白名单中的域名,子域名或 url ,QQ授权服务器才跳转,如果发现 redirect_url 不合法,则跳转到非法页面。



漏洞分析:

1,成因:

对于URL跳转的实现一般会有以下几种实现方式:
<1>HTML内meta标签内跳转
<2>javascript跳转
<3>header头跳转

2,原理:

恶意用户借用URL跳转漏洞来欺骗安全意识低的用户,从而导致“中奖”,“游戏礼包”之类的欺诈,同时借助URL跳转,也可以突破常见的基于“白名单方式”的一些安全限制,对于大公司的域名及URL将直接允许通过并且显示会可信的URL,而一旦该URL里包含一些跳转漏洞将可能导致安全限制被绕过。



3. 常见的绕过手段:

3.1. 利用问号绕过限制:

URL重定向漏洞(中风险)_第1张图片

3.2. 利用反斜杠和正斜杠绕过限制:

URL重定向漏洞(中风险)_第2张图片

3.3. 利用@绕过URL限制:

如:http://www.aaa.com/acb?Url=http://[email protected]后面的test.com就是要跳转到的域名,前面的域名都是用来辅助以绕过限制的;

3.4. 利用#号绕过

如:http://www.aaa.com/acb?Url=http://test.com#login.aaa.com

3.5. 利用白名单缺陷绕过限制:

URL重定向漏洞(中风险)_第3张图片

3.6. 多重验证&跳转绕过限制:
URL重定向漏洞(中风险)_第4张图片

3.7. 点击触发绕过URL跳转限制(类似于点击劫持漏洞)
3.8. 利用超链接绕过可信站点限制:

URL重定向漏洞(中风险)_第5张图片

3.9. POST参数中的URL跳转:

URL重定向漏洞(中风险)_第6张图片

4. 防御方式:

在任何拼接重定向url的位置加入http://***/(附加绝对前缀)不将用户输入拼接入url尽量不要基于dom数据在客户端脚本进行重定向(类似dom型xss,避免数据不经服务器的安全验证)
检测域名结尾是不是当前域名,正确话才会跳转!!!

检测当前的域名字符串是否完整地存在要跳转过去的字符串中,是子字符串时才会跳转;

另一种类似,如果程序的跳转白名单限制比较严格,只能是自己域的地址,这时需要有一个目标其它域的任意跳转漏洞,比如在url中添加自己的域地址;https://auth.landgrey.me/jump.do?url=evil.com,然后测试时:

https://www.landgrey.me/redirect.php?url=https://auth.landgrey.me/jump.do?url=evil.com

中间部分加入自己要跳转的url地址,后缀仍然使用白名单限制的域名地址;
URL重定向漏洞(中风险)_第7张图片




漏洞测试:pikachu漏洞练习平台

URL重定向漏洞(中风险)_第8张图片

URL重定向漏洞(中风险)_第9张图片URL重定向漏洞(中风险)_第10张图片

URL重定向漏洞(中风险)_第11张图片

url没有任何限制策略,直接跳转目标地址;
URL重定向漏洞(中风险)_第12张图片

5. 漏洞发生:

  1. 用户登录、统一身份认证处,认证后
  2. 用户分享、收藏内容
  3. 跨站点认证、授权
  4. 站内点击其它网址链接

防护方法:

  1. 代码固定跳转地址,不让用户控制变量
  2. 跳转目标地址采用白名单映射机制
    比如1代表auth.landgrey.me,2代表www.landgrey.me,其它不做任何动作
  3. 合理充分的校验校验跳转的目标地址,非己方地址时告知用户跳转风险之所以会出现跳转 URL 漏洞,就是因为服务端没有对客户端传递的跳转地址进行合法性校验;

所以,预防这种攻击的方式,就是对客户端传递过来的跳转 URL 进行校验。

常用的方式:(配置白名单)

服务端配置跳转白名单或域名白名单,只对合法的 URL 做跳转,所有跳转的URL都要加上一次验证参数,保证不会跳转到未授权的URL即可。


6. 漏洞总结:

理论上讲,url跳转属于CSRF的一种,我们需要对传入的URL做有效性的认证,保证该URL来自于正确的地方,限制的方式同防止csrf一样可以包括:

<1>referer的限制如果确定传递URL参数进入的来源,我们可以通过该方式实现安全限制,保证该URL的有效性,避免恶意用户自己生成跳转链接。

<2> 加入有效性验证Token我们保证所有生成的链接都是来自于我们可信域的,通过在生成的链接里加入用户不可控的Token对生成的链接进行校验,可以避免用户生成自己的恶意链接从而被利用,但是如果功能本身要求比较开放,可能导致有一定的限制。



参考大佬博客:

https://blog.csdn.net/qq_35569814/article/details/100569909

https://blog.csdn.net/weixin_39157582/article/details/86682900

你可能感兴趣的:(漏洞,csrf,安全漏洞,前端)