参考文章


概述


总结


一、漏洞介绍

URL重定向(URLredirection)漏洞,又称跳转漏洞。指的是网络应用程序接受用户可控的输入作为到外部站点的链接,然后在重定向中使用该链接。可以认为是SSRF一种。


二、漏洞原理

http参数可能包含URL值,并且可能导致Web应用程序将请求重定向到指定的URL。通过将URL值修改为恶意站点,攻击者可以成功启动网络钓鱼诈骗并窃取用户凭据。由于修改后的链接中的服务器名称与原始站点相同,因此网络钓鱼尝试具有更可信赖的外观。

常见的URL跳转代码如下

  1. Java:
  2. response.sendRedirect(request.getParameter("url"))
  3. PHP:
  4. $redirect\_url = $\_GET\['url'\]; header("Location: " . $redirect\_url)
  5. .NET:
  6. string redirect\_url = request.QueryString\["url"\]; Response.Redirect(redirect\_url);
  7. Django:
  8. redirect\_url = request.GET.get("url") HttpResponseRedirect(redirect\_url)
  9. Flask:
  10. redirect\_url = request.form\['url'\] redirect(redirect\_url)
  11. Rails:
  12. redirect\_to params\[:url\]

三、漏洞危害

  • 网络钓鱼

    即攻击者将漏洞用比较有名的域名伪装,用户没有注意到以此放心点击。被窃取敏感信息。
  • 绕过保护机制;获取权限或假冒身份

    用户的访问可能会被重定向到不可靠的网页。不可靠网页中可能存在恶意软件并可能攻陷用户电脑。一旦用户电脑被攻陷,用户就暴露在大量各种网络危机中。而且用户和网络服务器的交互也可能被攻陷,导致个人身份,密码等关键敏感信息的泄漏。

四、利用前提

  1. URL从用户可控制的输入中提取;
  2. 该URL未经验证,就被用于网络应用程序的重定向地址。

五、挖掘利用

1、描述

由于该类型的漏洞与语言无关,因此没有细致的分类。

2、挖掘

==常见于任何需要跳转处。

  1. 用户登录、统一身份认证处,认证完后会跳转
  2. 用户分享、收藏内容过后,会跳转
  3. 跨站点认证、授权后,会跳转
  4. 站内点击其它网址链接时,会跳转
  5. 图片上传处(暴露图片存放路径的,并且可以修改的情况下)

    常见的参数名
  1. redirect
  2. redirect_to
  3. redirect_url
  4. url jump
  5. jump_to
  6. target
  7. to
  8. link
  9. linkto
  10. domain

可能性比较高的URL链接格式:http://www.aaa.com/bbb?url=http://ccc.com,如果成功跳转指定的URL,说明存在URL跳转漏洞。

但是,如果没有成功跳转,不能说明不存在URL跳转漏洞。后台可能会对用户请求的链接进行处理。这里我们要尝试绕过。

aaa.com是含有URL重定向漏洞的网站, ccc.com是需要跳转到的网站。

1.利用问号绕过

格式:http://www.aaa.com/bbb?url=http://ccc.com?aaa.com

注意:一定要带上aaa.com

跳转后的url是http://ccc.com?aaa.com

2.利用反斜杠和正斜杠绕过

正斜杠

格式1:http://www.aaa.com/bbb?url=http://ccc.com/aaa.com

反斜杠

格式2:http://www.aaa.com/bbb?url=http://ccc.com\aaa.com

" . ":

格式3:http://www.aaa.com/bbb?url=http://ccc.com.aaa.com

3.利用@绕过

格式:http://www.aaa.com/bbb?url=http://aaa.com@ccc.com

疑似只有火狐浏览器可以使用该方法

4.利用白名单缺陷绕过

白名单的限制往往是不全面的。

例如该网站想跳转到自己的内部页面,而只检查跳转url中有没有白名单的内容。那么:http://www.aaa.com/bbb?url=http://cccaaa.com

购买cccaaa.com的域名,这样也是可以绕过的。

5.多重验证&跳转绕过

现在很多网站都有多重验证,比如你登陆账户后会出现另一个验证页面,输入手机验证码进行验证,此时这上面的URL很可能存在任意跳转的问题。

比如http://www.aaa.com/acb?Url=http: … ttp://login.aaa.com

当然,还有多重的,结构的多重跳转你修改最后面的URL就可以达到任意URL跳转,中间的URL就没必要动了。

6.点击触发实现绕过

很多登陆页面的地方,其URL是一个跳转的URL

如某一个登录页面,修改url:http://www.aaa.com/bbb?url=http://ccc.com

登录用户,有可能触发。

7.利用xip.io绕过

格式:http://www.aaa.com/bbb?url=http://www.aaa.com.ccc.com.xip.io

但是没有成功,暂且保留。

8.利用超链接绕过可信站点限制

比如一个URL,它是可以直接跳转的,但是一般测试跳转时大家习惯用www.baidu.com或qq.com这样的可信站点进行测试,但是有些网站是可以跳转这些网站的。

只要是可信站点且常用,基本都可以跳转,那么这就属于正常的业务逻辑了,难度就这样错失一个URL跳转漏洞了?

其实不然,只要你的URL被百度收录过,那么直接搜索你的域名,site:xxx.xxx

因为你在百度里点击你的域名,它会先是一个302跳转,而这个302跳转就是百度下的302跳转,那么这样就可以绕过可信站点的限制,从而达到跳转到指定URL。

当然,百度这个302有点长,你给它进行加密就行。

利用百度缓存链接,在其上再进行跳转

9.POST参数中的URL跳转

常见于上传图片、头像处。如果过滤不严,将会把图片的完整地址包含在POST参数里,这里我们修改其地址为ccc.com。

由于修改了地址,图片就会显示不出来,右键查看图片,就会触发URL跳转(可以配合其他绕过方式)

如果POST参数里就只是URL跳转参数,那么你可以给它转成GET方式,然后进行跳转就可以了,只要网站支持这样的GET方式就行。在Burp Suite里可以一键转换提交方式,右键选择Change request method就可以!

10.利用#号绕过

格式:http://www.aaa.com/bbb?url=http://ccc.com#aaa.com

11.其他绕过思路

  1. 1. 跳转到IP地址,而不是域名;
  2. 2. 跳转到IPV6地址,而不是IPv4地址;
  3. 3. 将要跳转到的IP地址用10进制、8进制、16进制形式表示;
  4. 4. 更换协议,使用ftpgopher协议等;
  5. 5. 借鉴SSRF漏洞绕过的tricks;
  6. 6. CRLF注入不能xss时,转向利用任意URL跳转漏洞;

3、利用

修改请求链接。钓鱼、获取敏感信息。进一步扩大危害。


六、修复防范

  1. 从实现角度,进行输入验证:对输入的信息进行验证。 比如说使用已知的有效输入验证机制,或是制定严格的说明来规范输入的信息等等。对于不符合规范的输入,或者是拒绝接受,或者对输入进行转换净化,让它符合规范要求。

  2. 从体系架构和设计上防范该安全漏洞,并尽量减少暴露的攻击面。


七、提出问题

与SSRF类似,不知道两者有何区别。

URL重定向漏洞解析的更多相关文章

  1. URL重定向漏洞,python打造URL重定向漏洞检测脚本

    前言: 今天学习了重定向漏洞,这个漏洞比较好理解 漏洞名:URL重定向漏洞 威胁:低 漏洞的来源:开发者对head头做好对应的过滤和限制 例子: 有漏洞的网站:http://a.com/x.php?u ...

  2. PJzhang:URL重定向漏洞的72般变化

    猫宁!!! 反射型xss的利用可以给对方发送钓鱼链接,窃取对方cookie,进入对方账户.   利用url重定向漏洞,发送给对方一个钓鱼链接,重定向到一个恶意网页,比如一个假的银行网站,被盗取账号密码 ...

  3. 【代码审计】XYHCMS V3.5URL重定向漏洞分析

      0x00 环境准备 XYHCMS官网:http://www.xyhcms.com/ 网站源码版本:XYHCMS V3.5(2017-12-04 更新) 程序源码下载:http://www.xyhc ...

  4. WordPress特制字符串URL重定向限制绕过漏洞

    漏洞版本: WordPress 3.6 漏洞描述: Bugtraq ID:62344 CVE ID:CVE-2013-4339 WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PH ...

  5. 代码安全丨第二期:URL重定向(跳转)漏洞

    URL重定向: URL重定向(URLredirection)漏洞,又称跳转漏洞,指的是网络应用程序接受用户可控的输入作为到外部站点的链接,然后在重定向中使用该链接.该安全漏洞给网络钓鱼攻击提供了极大的 ...

  6. 使用.htaccess实现apache URL重定向

    一.什么是URL重定向? URL重定向(URL redirection,或称网址重定向或网域名称转址),是指当使用者浏览某个网址时,将他导向到另一个网址的技术. 二.URL重定向怎么配置? 1)首先需 ...

  7. Django基础(10): URL重定向的HttpResponseDirect, redirect和reverse的用法详解

    利用django开发web应用, 我们经常需要进行URL重定向,有时候还需要给URL传递额外的参数.比如用户添加文章完成后需要转到文章列表或某篇文章详情.因此熟练掌握HttpResponseDirec ...

  8. Django---路由系统,URLconf的配置,正则表达式的说明(位置参数),分组命名(捕获关键字参数),传递额外的参数给视图,命名url和url的反向解析,url名称空间

    Django---路由系统,URLconf的配置,正则表达式的说明(位置参数),分组命名(捕获关键字参数),传递额外的参数给视图,命名url和url的反向解析,url名称空间 一丶URLconf配置 ...

  9. Web安全测试中常见逻辑漏洞解析(实战篇)

    Web安全测试中常见逻辑漏洞解析(实战篇) 简要: 越权漏洞是比较常见的漏洞类型,越权漏洞可以理解为,一个正常的用户A通常只能够对自己的一些信息进行增删改查,但是由于程序员的一时疏忽,对信息进行增删改 ...

随机推荐

  1. [LeetCode]Minimum Moves to Equal Array Elements1,2

    1.将每次n-1个数+1,转化为每次最大的数-1 public int minMoves(int[] nums) { /* 看了看答案 ,很巧妙,最后的结果肯定是把数组元素都加到一个相同的值, 也就是 ...

  2. Access-Control-Allow-Headers等基础常识

    跨源资源共享 (CORS) (或通俗地译为跨域资源共享)是一种机制,该机制使用附加的 HTTP 头来告诉浏览器,准许运行在一个源上的Web应用访问位于另一不同源选定的资源. 当一个Web应用发起一个与 ...

  3. 第十章节 BJROBOT PID 动态调节【ROS全开源阿克曼转向智能网联无人驾驶车】

    1.把小车架空,平放在地板上,注意四个轮子一定要悬空.用资料里的虚拟机,打开一个终端 ssh 过去主控端启动 roslaunch znjrobot bringup.launch.   2.在虚拟机端再 ...

  4. #3使用html+css+js制作网页 番外篇 制作接收php

    使用html+css+js制作网页 番外篇 制作接收php 本系列链接 基础 php语法 例子 本系列链接 #1使用html+css+js制作网站教程 准备 #2使用html+css+js制作网站教程 ...

  5. 关于 RNN 循环神经网络的反向传播求导

    关于 RNN 循环神经网络的反向传播求导 本文是对 RNN 循环神经网络中的每一个神经元进行反向传播求导的数学推导过程,下面还使用 PyTorch 对导数公式进行编程求证. RNN 神经网络架构 一个 ...

  6. openstack octavia的实现与分析(二)原理,架构与基本流程

    [了解] 其实说白了,Octavia就是将用户的API请求经过逻辑处理,转换成Haproxy或者Nginx的配置参数,下发到amphora虚机中. Octavia的内部实现中,逻辑流程的处理主要使用T ...

  7. SpringMVC文件的上传与下载实现

    单文件上传 首先创建项目,开发工具是IDEA,选择Spring项目,勾选上Spring和SpringMVC. 然后命名,最后完成. 默认生成配置文件在web/WEB-INF下. 首先导入需要的jar包 ...

  8. Spring Cloud微服务Sentinel+Apollo限流、熔断实战总结

    在Spring Cloud微服务体系中,由于限流熔断组件Hystrix开源版本不在维护,因此国内不少有类似需求的公司已经将眼光转向阿里开源的Sentinel框架.而以下要介绍的正是作者最近两个月的真实 ...

  9. 【Oracle】 并行查询

    所谓并行执行,是指能够将一个大型串行任务(任何DML,一般的DDL)物理的划分为叫多个小的部分,这些较小的部分可以同时得到处理.何时使用并行执行:1.必须有一个非常大的任务 2.必须有充足的资源(CP ...

  10. 洛谷P1198 [JSOI2008]最大数(线段树/单调栈)

    题目链接: https://www.luogu.org/problemnew/show/P1198 题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询 ...