0x00 简介

说起URL跳转漏洞,有些人可能会觉得,不就是单纯的跳转到某一个其他网页吗?有什么用???

给大家一个链接,你们进去看一下就明白了:

http://www.anquan.us/search?keywords=url%E8%B7%B3%E8%BD%AC&content_search_by=by_bugs

看完危害,回到正题:平时我们遇到的肯定都是很多基于这样的跳转格式:

http://www.xxx.xxx/xxx?xxx=http://www.xxx.xxx/xxxxx

基本的思路大家就是直接替换后面的URL来检测是否存在任意URL跳转,如果不存在,就直接返回到它自己的域名,如果存在,就跳转到你指定的URL,

这里我讲述我所知道的所有小点:

0x01 利用问号绕过限制

利用问号,这是一个特性,利用问号可以成功绕过URL限制

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

这是一个跳转链接,跳转到它的二级域名下,那么这个问号放哪里可以绕过呢?

其实就是放到它自身的域名前面也就是你添加的想要跳转的域名的后面:

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

那么,它其实是会跳转到这个test.com域名下,这个域名是我想要跳转的任意域名,而后面的它自身域名一定要带上。

不带上就无法实现用问号?这个特性来跳转到指定域名了,而跳转后,问号和问号后面的内容会变为这样:http://www.test.com/?login.aaa.com

0x02 利用反斜杠和正斜杠绕过限制

这个是我自己研究出来的,不知道是否网上有人说过:

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

同样是在它本身域名前加上正斜杠,然后正斜杠前面跟上你想跳转的域名地址。

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

反斜杠有三种思路:

2.1 两个反斜杠绕过方法

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

同样是在它本身域名前加上两个反斜杠,然后两个反斜杠前面跟上你想跳转的域名地址。

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

2.2 一个反斜杠绕过方法

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

2.3 一个反斜杠一个点

利用.这样的格式,也就是一个反斜杠加一个点来跳过限制,

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

0x03 利用@绕过URL限制

如果你用这方法在火狐里进行跳转,会有弹窗提示,在其它游览器则没有。

如:<a href=”http://www.aaa.com/acb?Url=http://login.aaa.com@test.com“”>http://www.aaa.com/acb?Url=http://login.aaa.com@test.com

后面的test.com就是要跳转到的域名,前面的域名都是用来辅助以绕过限制的。

0x04 利用白名单缺陷绕过限制

有的域名白名单限制是不全的,比如如果想利用一个跳转,而这个跳转是通用,在这个公司网站很多子域名等都可以跳转,那么你买个域名也不算贵对吧。

为什么这么说呢,这个问题就是白名单限制不当,比如,当跳转的域名包含这个网站下的所有域名,比如:http://www.aaa.com/acb?Url=http://login.aaa.com

这个login.aaa.com也可以改成aaa.com同样可以跳转对吧,因为白名单里只要有包含这个域名就直接成功跳转。

那么当我在这个域名前面加上如testaaa.com,白名单里会检查是否包含aaa.com这个域名,如果包含,就直接跳转,而并没有检查这个域名的整个信息,然后可以利用这个问题,直接注册一个testaaa.com这个域名就可以利用这个跳转。

0x05 多重验证&跳转绕过限制

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

多重跳转的问题导致可绕过URL限制:

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

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

0x06 点击触发达到绕过URL跳转限制

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

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

你直接修改了后面为任意URL,但是还是停留在原地,似乎没什么问题,但是,当你输入账号和密码后点击登陆按钮后,就会触发跳转。

当然,这个账户和密码不一定要对的,随便都可以,但得视系统而定吧。

这个我遇到了很多,比如你修改了域名,然后点击登陆,登陆成功后便可触发跳转,这也是一个比较隐蔽的绕过URL限制的跳转。

0x07 利用xip.io绕过

这个我还没有在测试中应用过,其请求是http://www.127.0.0.1.xip.io 这个绕过是在SSRF场景中的绕过,比如SSRF你要读取内网地址,一般都做了限制,可以尝试用这方法进行绕过限制,从而访问到内网。

另外一点,URL跳转涉及的安全问题大家常见的就是钓鱼,那么利用这个思路也可达成一个钓鱼问题。

如:http://www.qq.com.220.181.57.217.xip.io

当你访问qq这个域名时,其实这个链接已经被解析到后面这个ip地址上了,那么实际访问的就是后面这个IP地址。

0x08 利用超链接绕过可信站点限制

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

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

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

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

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

0x09 POST参数中的URL跳转

当然,这个影响就很小了,比如当你填什么表格或者需要填写什么的,当你上传图片,点击下一步的时候,通常下一步就是预览你填写的信息,最后才是提交。

当你上传了图片后点击下一步抓包,如果过滤不严,你会看到图片的完整地址包含在POST参数里,你就可以直接修改这个地址为任意URL,然后到达下一步。

这时是确定信息也就是预览自己填写的信息的正确还是不正确,由于你刚刚修改了图片地址,这里是没有显示出来的,图像会是一个小XX。

当点击图片右键选择查看图像时,就会触发URL跳转问题,其实这个也可以利用来进行钓鱼,钓后台审核员的信息。

为什么呢,比如审核看到图片无法加载,一般都会点击查看图片,然后跳转,如果安全意识不知就会造成安全影响。

当然,如果POST参数里就只是URL跳转参数,那么你可以给它转成GET方式,然后进行跳转就可以了,只要网站支持这样的GET方式就行。

在Burp Suite里可以一键转换提交方式,右键选择Change request method就可以!

0x10 利用'井号'绕过

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

0x11 把ip转换为数字

数字地址计算方式1

111.13.100.92 转成数字地址的方式为:111256256256 + 13256256+100256+92*1

这样得到:1863148636

这种数字地址不需要在前面加0,即访问:http://1863148636 即可访问到百度。

转换地址:https://ip.911cha.com/

数字地址计算方式2

可以是十六进制,八进制等。

115.239.210.26 >>> 16373751032

首先把这四段数字给分别转成16进制,结果:73 ef d2 1a

然后把 73efd21a 这十六进制一起转换成8进制

记得访问的时候加0表示使用八进制(可以是一个0也可以是多个0 跟XSS中多加几个0来绕过过滤一样),十六进制加0x。

访问:http://016373751032 ,即可访问到百度。

0x12 总结

想找到任意URL跳转问题,不要光看表面,一个修改一个回车,不存在就不继续深入了,这将永远无法成长!

本文转载自: t00ls.net

如若转载,请注明出处:https://www.t00ls.net/thread-43001-1-2.html

[WEB安全]绕过URL跳转限制的思路的更多相关文章

  1. Web安全之url跳转漏洞及bypass总结

    0x01 成因 对于URL跳转的实现一般会有几种实现方式: META标签内跳转 javascript跳转 header头跳转 通过以GET或者POST的方式接收将要跳转的URL,然后通过上面的几种方式 ...

  2. Web安全之URL跳转科普

    跳转无非是传递过来的参数未过滤或者过滤不严,然后直接带入到跳转函数里去执行. 0x01 JS js方式的页面跳转1.window.location.href方式 <script language ...

  3. PHP代码审计笔记--URL跳转漏洞

    0x01 url任意跳转 未做任何限制,传入任何网址即可进行跳转. 漏洞示例代码: <?php $redirect_url = $_GET['url']; header("Locati ...

  4. 27.【转载】挖洞技巧:如何绕过URL限制

    大家对URL任意跳转都肯定了解,也知道他的危害,这里我就不细说了,过~ 大家遇到的肯定都是很多基于这样的跳转格式:http://www.xxx.xxx/xxx?xxx=http://www.xxx.x ...

  5. URL跳转漏洞

    URL跳转原理: 由于越来越多的需要和其他第三方应用交互,以及在自身应用内部根据不同的逻辑将用户引向到不同的页面,譬如一个典型的登录接口就经常需要在认证成功之后将用户引导到登录之前的页面,整个过程中如 ...

  6. WEB安全番外第一篇--其他所谓的“非主流”漏洞:URL跳转漏洞与参数污染

    一.URL跳转篇: 1.原理:先来看这段代码: <?php if(isset($_GET["url_redircetion_target"])){ $url_redirect ...

  7. Express URL跳转(重定向)的实现

    Express URL跳转(重定向)的实现   Express是一个基于Node.js实现的Web框架,其响应HTTP请求的response对象中有两个用于URL跳转方法res.location()和 ...

  8. android端,webview内url跳转到app本地

    这是和一个前端同事沟通. app内嵌入他的web页,要通过web页内的url跳转到app的详细内容. 他的android同事,没有思路. 其实嵌入web页,用的webview控件,只要能找到webvi ...

  9. 使用CSS中的meta实现web定时刷新或跳转的方法

    这篇文章主要介绍了使用CSS中的meta实现web定时刷新或跳转的方法,比使用JavaScript脚本实现起来更加简单一些,需要的朋友可以参考下 meta源信息功能之页面定时跳转与刷新 几乎所有的网页 ...

随机推荐

  1. 基于【 springBoot +springCloud+vue 项目】一 || 后端搭建

    缘起 本项目是基于之前学习的一个Dubbo+SSM分布式项目进行升级,基于此项目对前后端分离项目.微服务项目进一步深入学习.之前学习了vue.springBoot.springCloud后,没有进行更 ...

  2. 【转载】Sqlserver使用IsNull方法对空字段进行赋值操作

    在Sqlserver的SQL语句查询过程或者编写存储过程以及自定义函数过程中,有时候字段的值为空,如果为空的字段需要赋值一个默认值,可以使用Sqlserver内置系统函数IsNull来给定一个默认值, ...

  3. FPM-OVP增强实例-银行账户

    本文是基于NWBC银行账户信息进行增强,相关过程如下: 1.定位需要增强的界面 首先登陆SAP-GUI(尽量EN登陆,ZH可能乱码),输入TCODE:NWBC跳转到浏览器界面,新建银行账户: 注意上图 ...

  4. SSRF绕过IP限制方法总结

    SSRF绕过IP限制方法总结 - Summary of SSRF methods for bypassing IP restrictions -https://www.cnblogs.com/iAmS ...

  5. [AIR] NativeExtension在IOS下的开发实例 --- IOS项目的创建 (一)

    来源:http://bbs.9ria.com/thread-102037-1-1.html 最近看到本版块的很多关于NativeExtension的应用.但是都是在Android下面的应用.也有很多朋 ...

  6. mysql的左连接问题

    之前写过一个mysql语句,功能是将一个表ds的一个字段值同步更新到另一个表bk的字段,不过不是全部,只更新表bk中有的数据,如果表bk中有而表ds中没有,表B对应的这个字段值就为空 UPDATE b ...

  7. @ConfigurationProperties注解和@Value注解的区别

    都是读取配置文件属性 1.  @ConfigurationProperties(prefix = "person")读取多个属性 @Component @Configuration ...

  8. Flume 初探

    Apache 是一个高可用.高可靠的,分布式的海量日志采集.聚合.传输系统,基于流式架构,灵活简单. Flume 最主要的作用就是实时读取服务器本地磁盘的数据,将数据写入HDFS中. Flume组成架 ...

  9. 18,flask项目中使用celery

    导包: from celery import Celery from celery.result import AsyncResult app.config['CELERY_BROKER_URL'] ...

  10. Bash基础——减号-

    参考:Bash基础——pipe pipe命令在 bash 的连续的处理程序中相当重要.在pipe命令当中,常常会使用到前一个命令的 stdout 作为这次的 stdin , 某些命令需要用到文件名 ( ...