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

0x01 成因

对于URL跳转的实现一般会有几种实现方式:

  1. META标签内跳转
  2. javascript跳转
  3. header头跳转

通过以GET或者POST的方式接收将要跳转的URL,然后通过上面的几种方式的其中一种来跳转到目标URL。一方面,由于用户的输入会进入Meta,javascript,http头所以都可能发生相应上下文的漏洞,如xss等等,但是同时,即使只是对于URL跳转本身功能方面就存在一个缺陷,因为会将用户浏览器从可信的站点导向到不可信的站点,同时如果跳转的时候带有敏感数据一样可能将敏感数据泄漏给不可信的第三方。

譬如一个典型的登录跳转如下:

<?php

$url=$_GET[‘jumpto‘];

header("Location: $url");

?>

如果jumpto没有任何限制,所以恶意用户可以提交

http://www.wooyun.org/login.php?jumpto=http://www.evil.com

来生成自己的恶意链接,安全意识较低的用户很可能会以为该链接展现的内容是www.wooyun.org从而可能产生欺诈行为,同时由于QQ,淘宝旺旺等在线IM都是基于URL的过滤,同时对一些站点会一白名单的方式放过,所以导致恶意URL在IM里可以传播,从而产生危害,譬如这里IM会认为www.wooyun.org都是可信的,但是通过在IM里点击上述链接将导致用户最终访问evil.com。

0x02 攻击方式及危害

恶意用户完全可以借用URL跳转漏洞来欺骗安全意识低的用户,从而导致“中奖”之类的欺诈,这对于一些有在线业务的企业如淘宝等,危害较大,同时借助URL跳转,也可以突破常见的基于“白名单方式”的一些安全限制,如传统IM里对于URL的传播会进行安全校验,但是对于大公司的域名及URL将直接允许通过并且显示会可信的URL,而一旦该URL里包含一些跳转漏洞将可能导致安全限制被绕过。

如果引用一些资源的限制是依赖于“白名单方式”,同样可能被绕过导致安全风险,譬如常见的一些应用允许引入可信站点如youku.com的视频,限制方式往往是检查URL是否是youku.com来实现,如果youku.com内含一个url跳转漏洞,将导致最终引入的资源属于不可信的第三方资源或者恶意站点,最终导致安全问题。

0x03 修复方案

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

1 referer的限制

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

2 加入有效性验证Token

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


0x04 url跳转漏洞bypass总结

10种bypass方式:

1. 单斜线"/"绕过
https://www.landgrey.me/redirect.php?url=/www.evil.com
2. 缺少协议绕过
https://www.landgrey.me/redirect.php?url=//www.evil.com
3. 多斜线"/"前缀绕过
https://www.landgrey.me/redirect.php?url=///www.evil.com
https://www.landgrey.me/redirect.php?url=////www.evil.com
4. 利用"@"符号绕过
https://www.landgrey.me/redirect.php?url=https://[email protected]
5. 利用反斜线"\"绕过
https://www.landgrey.me/redirect.php?url=https://www.evil.com\www.landgrey.me
6. 利用"#"符号绕过
https://www.landgrey.me/redirect.php?url=https://www.evil.com#www.landgrey.me
7. 利用"?"号绕过
https://www.landgrey.me/redirect.php?url=https://www.evil.com?www.landgrey.me
8. 利用"\\"绕过
https://www.landgrey.me/redirect.php?url=https://www.evil.com\\www.landgrey.me
9. 利用"."绕过
https://www.landgrey.me/redirect.php?url=.evil           (可能会跳转到www.landgrey.me.evil域名)
https://www.landgrey.me/redirect.php?url=.evil.com       (可能会跳转到evil.com域名)
10.重复特殊字符绕过
https://www.landgrey.me/redirect.php?url=///www.evil.com//..
https://www.landgrey.me/redirect.php?url=////www.evil.com//..

原文地址:https://www.cnblogs.com/-qing-/p/10908842.html

时间: 2024-11-08 21:53:04

Web安全之url跳转漏洞及bypass总结的相关文章

URL重定向及跳转漏洞

URL跳转漏洞 URL 跳转漏洞是指后台服务器在告知浏览器跳转时,未对客户端传入的重定向地址进行合法性校验,导致用户浏览器跳转到钓鱼页面的一种漏洞. 使用场景    现在 Web 登录很多都接入了QQ.微信.新浪等第三方登录,以 QQ 第三方授权登录为例说明,在我们调用 QQ 授权服务器进行授权时,会在参 数中传入redirect_url(重定向)地址,告知 QQ 授权服务器,授权成功之后页面跳转到这个地址,然后进行站点登录操作.但是如果你的重定向地址在 传输过程中被篡改成了一个钓鱼网址,那么就

URL跳转

1.由于应用越来越多的需要和其他的第三方应用交互,以及在自身应用内部根据不同的逻辑将用户引 向到不同的页面,譬如一个典型的登录接口就经常需要在认证成功之后将用户引导到登录之前的页面,整个过程中如果实现不好就可能导致一些安全问题,特定条件下可能引起严重的安全漏洞. 2.成因 对于URL跳转的实现一般会有几种实现方式: (1)META标签内跳转 (2)javascript跳转 (3)header头跳转 通过以GET或者POST的方式接收将要跳转的URL,然后通过上面的几种方式的其中一种来跳转到目标U

百度跳转漏洞

不知道这算不算漏洞,我觉得是有一定的危险的. 偶然间在百度贴吧发现一个帖子是这样的: 点击之后会跳转到http://zmb338.com ,奇怪的是这个回复并没有被贴吧系统删除掉. 我试了一下,下面这两个帖子都没有被百度删除掉. 这说明百度对站点m.baidu.com不过滤,这是第一个存在的问题,第二是百度自己没有对http://m.baidu.com/相关跳转url的参数过滤. 这种跳转漏洞很容易被钓鱼,比如我可以构造这样一个URL,附加一些欺诈信息,比如你的账户最近被异地登陆,请点击下面的网

web工程中URL地址的推荐写法

在Javaweb开发中,只要写URL地址,建议以“/”开头,也就是使用绝对路径的方式. “/”:如果是给服务器的,代表当前的web工程.给浏览器的,代表webapps目录 代表web工程 ①.ServletContext.getRealPath(String path)获取资源的绝对路径 ②.在服务器端forward到其他页面 1 /** 2 * 2.forward 3 * 客户端请求某个web资源,服务器跳转到另外一个web资源,这个forward也是给服务器用的, 4 * 那么这个"/&qu

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

Express是一个基于Node.js实现的Web框架,其响应HTTP请求的response对象中有两个用于URL跳转方法res.location()和res.redirect(),使用它们可以实现URL的301或302重定向. res.location(path) res.location(path) 下面列举了几种,设置http响应头Location的方法 res.location('/foo/bar'); res.location('http://example.com'); res.lo

html-----018----HTML Web Server/HTML URL 字符编码

HTML Web Server 如果希望向世界发布您的网站,那么您必须把它存放在 web 服务器上. 托管自己的网站 在自己的服务器上托管网站始终是一个选项.有几点需要考虑: 硬件支出 如果要运行“真正”的网站,您不得不购买强大的服务器硬件.不要指望低价的 PC 能够应付这些工作.您还需要稳定的(一天 24 小时)高速连接. 软件支出 请记住,服务器授权通常比客户端授权更昂贵.同时请注意,服务器授权也许有用户数量限制. 人工费 不要指望低廉的人工费用.您必须安装自己的硬件和软件.您同时要处理漏洞

web开发中常见的安全漏洞及避免方法

1.安全攻击 1.SQL.HTML.JS.OS命令注入 2.XSS跨站脚本攻击,利用站内信任的用户,在web页面插入恶意script代码 3.CSRF跨站请求伪造,通过伪装来自信任用户的请求来利用受信任的网站. 4.目录遍历漏洞 5.参数篡改 6.会话劫持 2.防止攻击的措施总结 1) 对用户输入的数据进行全面安全检查或过滤,尤其注意检查是否包含SQL 或XSS特殊字符. 验证用户输入的数据,包括值.类型.范围等等,用验证控件进行验证 RequiredFieldValidator RangeVa

转载:web工程中URL地址的推荐写法

在JavaWeb开发中,只要是写URL地址,那么建议最好以"/"开头,也就是使用绝对路径的方式,那么这个"/"到底代表什么呢?可以用如下的方式来记忆"/":如果"/"是给服务器用的,则代表当前的web工程,如果"/"是给浏览器用的,则代表webapps目录. 1."/"代表当前web工程的常见应用场景 ①.ServletContext.getRealPath(String path)获取

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

Web安全测试中常见逻辑漏洞解析(实战篇) 简要: 越权漏洞是比较常见的漏洞类型,越权漏洞可以理解为,一个正常的用户A通常只能够对自己的一些信息进行增删改查,但是由于程序员的一时疏忽,对信息进行增删改查的时候没有进行一个判断,判断所需要操作的信息是否属于对应的用户,导致用户A可以操作其他人的信息.? 逻辑漏洞挖掘一直是安全测试中"经久不衰"的话题.相比SQL注入.XSS漏洞等传统安全漏洞,现在的攻击者更倾向于利用业务逻辑层的应用安全问题,这类问题往往危害巨大,可能造成了企业的资产损失和