美文网首页
URL跳转漏洞

URL跳转漏洞

作者: david161 | 来源:发表于2022-09-06 16:13 被阅读0次

URL跳转漏洞(URL重定向漏洞),跳转漏洞一般用于钓鱼攻击。

https://link.zhihu.com/?target=https://edu.lagou.com/

原理:
URL跳转漏洞本质上是利用Web应用中带有重定向功能的业务,将用户从一个网站重定向到另一个网站。其最简单的利用方式为诱导用户访问http://www.aaa.com?returnUrl=http://www.evil.com,借助www.aaa.com让用户访问www.evil.com,这种漏洞被利用了对用户和公司都是一种损失。

使用场景

1)登录功能一直是URL跳转漏洞的重灾区,用户访问网站某个业务,当涉及到账号角色权限的时候一定需要跳转到登陆界面,为了确保用户体验认证结束之后需要自动返回用户之前浏览的页面。这一去一回之间就产生了URL跳转漏洞的隐患。
举个例子,比如用户正在访问http://www.aaa.com/detail?sku=123456的商品,添加购物车时触发登录操作,跳转到统一登陆认证页面进行登录,这时的访问链接为http://login.aaa.com?returnUrl=http://www.aaa.com/detail?sku=123456,认证成功之后浏览器继续返回商品详情页面方便用户进行购买操作。若login.aaa.com对returnUrl参数检查不严格甚至未检查,通过该链接可跳转至任意网站。

image.png
登录之后302跳转到百度首页,此处returnUrl未进行任何检查,可任意跳转到第三方页面。与登录功能同理,网站的退出功能同样存在URL跳转漏洞的风险。其他类似的跳转功能还有短信验证码认证之后跳转、分享或者收藏之后跳转、给第三方授权之后跳转,他们的共同特点都是从一个页面为了某种操作进入另一个页面,操作之后返回原页面继续浏览。有的多步操作业务中,点击下一步按钮时会传递fromUrl参数,该参数会成为返回上一步的超链接,如下所示:
image.png
甚至有的业务中callback参数也存在URL跳转漏洞。常见的参数值有return、redirect、url、jump、goto、target、link等,平时挖漏洞的过程中不妨关注下请求中是否含有比较完整的URL地址,对该类参数进行下测试。
(2)如果 lagou.com 下的某个 web 应用程序存在这个漏洞,恶意攻击者可以发送给用户一个 lagou.com 的链接,但是用户打开后,却来到钓鱼网站页面,将会导致用户被钓鱼攻击,账号被盗,或账号相关财产被盗。
(3)漏洞发生的场景:
  1. 用户登录、统一身份认证处,认证完后会跳转
  2. 用户分享、收藏内容过后,会跳转
  3. 跨站点认证、授权后,会跳转
  4. 站内点击其它网址链接时,会跳转
  5. 业务完成后跳转
    比如修改密码,修改完成后跳转登陆页面,绑定银行卡,绑定成功后返回银行卡充值等页面
    比如评价系统,填写完问卷调查、客服评价等业务操作后跳转页面
    (4)漏洞出现的原因:
    写代码时没有考虑过任意URL跳转漏洞,或者根本不知道/不认为这是个漏洞;
    写代码时考虑不周,用取子串、取后缀等方法简单判断,代码逻辑可被绕过;
    对传入参数做一些奇葩的操作(域名剪切/拼接/重组)和判断,适得其反,反被绕过;
    原始语言自带的解析URL、判断域名的函数库出现逻辑漏洞或者意外特性,可被绕过;
    原始语言、服务器/容器特性、浏览器等对标准URL协议解析处理等差异性导致被绕过。
    (5)常见的参数名
    redirect
    redirect_to
    redirect_url
    url
    jump
    jump_to
    target
    to
    link
    linkto
    domain

URL跳转漏洞挖掘

后面假设源域名为:www.abc.com 要跳转过去的域为:www.evil.com (钓鱼)
(1)无任何检查,直接跳转

//获取参数 
String url = request.getParameter("returnUrl"); 
//重定向 
response.sendRedirect(url);

(2)域名字符串检测欺骗,代码不完善,存在漏洞

//获取参数 
String url = request.getParameter("returnUrl"); 
//判断是否包含域名 
if (url.indexOf("www.abc.com ") !=-1){ 
    response.sendRedirect(url); 
}
http://www.abc.com?returnUrl=http://www.abc.com.evil.com
http://www.abc.com?returnUrl=http://www.evil.com/www.abc.com

(3)bypass方式

http://www.aaa.com?returnUrl=http://www.aaa.com.evil.com
http://www.aaa.com?returnUrl=http://www.evil.com/www.aaa.com
若再配合URL的各种特性符号,绕过姿势可是多种多样。比如
利用问号?:
http://www.aaa.com?returnUrl=http://www.evil.com?www.aaa.com
利用反斜线:
http://www.aaa.com?returnUrl=http://www.evil.comwww.aaa.com
http://www.aaa.com?returnUrl=http://www.evil.com\www.aaa.com
利用@符号:
http://www.aaa.com?returnUrl=http://www.aaa.com@www.evil.com
利用井号#:
http://www.aaa.com?returnUrl=http://www.evil.com#www.aaa.com
http://www.aaa.com?returnUrl=http://www.evil.com#www.aaa.com?www.
aaa.com
缺失协议:
http://www.aaa.com?returnUrl=/www.evil.com
http://www.aaa.com?returnUrl=//www.evil.com
多次跳转,即aaa公司信任ccc公司,ccc公司同样存在漏洞或者提供跳转服务:
http://www.aaa.com?returnUrl=http://www.ccc.com?jumpto=http://www.e
vil.com

防护方案

限制referer、添加token,这样可以避免恶意用户构造跳转链接到处散播,修复该漏洞最根本的方法还是上述的严格检查跳转域名。

  1. 代码固定跳转地址,不让用户控制变量
  2. 跳转目标地址采用白名单映射机制 比如1代表edu.lagou.com,2代表job.lagou.com,其它记录日志
  3. 合理充分的校验机制,校验跳转的目标地址,非己方地址时告知用户跳转风险

相关文章

  • URL跳转漏洞

    URL跳转漏洞(URL重定向漏洞),跳转漏洞一般用于钓鱼攻击。 原理:URL跳转漏洞本质上是利用Web应用中带有重...

  • URL跳转漏洞

    0x00 相关背景介绍 由于应用越来越多的需要和其他的第三方应用交互,以及在自身应用内部根据不同的逻辑将用户引向到...

  • 常见WEB攻击之URL跳转漏洞

    一、什么是URL跳转漏洞 URL 跳转漏洞是指后台服务器在告知浏览器跳转时,未对客户端传入的重定向地址进行合法性校...

  • CVE-2018-14574

    Django < 2.0.8 任意URL跳转漏洞(CVE-2018-14574) 1.漏洞影响版本 django....

  • # 漏洞日常记录 之 url跳转

    url跳转是现在web安全中很常见的问题,是个比较不起眼的漏洞了。从日常中学会了一些不一样的角度,各种可绕过的防御...

  • 浅析渗透实战中url跳转漏洞

    前言 最近在一些厂商项目中开始接触到一些url任意重定向,虽然是低危,奖金较低,(虽然国外已经是几百$)但是一旦找...

  • 俩个应用间的循环跳转

    应用跳转是根据协议头跳转 A跳转B,需要B增加URL Types ,A应用根据URL的协议头跳转 iOS8之前的跳...

  • iOS开发之App之间的跳转

    一.设置需要跳转到的App的URL Scheme 设置该App的URL Schemes 二.配置要跳转App的跳转...

  • web安全(简) - URL跳转与钓鱼 & WebServer远

    URL跳转分为: (1)客户端跳转:又称为URL重定向,浏览器地址栏URL会有明显的变化。(2)服务器端跳转:又称...

  • URL跳转

    About — prefs:root=General&path=About Accessibility — pre...

网友评论

      本文标题:URL跳转漏洞

      本文链接:https://www.haomeiwen.com/subject/kqmlgrtx.html