精华内容
下载资源
问答
  • 原标题:任意URL跳转漏洞修复与JDK中getHost()方法之间的坑*本文作者:ChangeS,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。任意URL跳转漏洞服务端未对传入的跳转url变量进行检查和控制,导致可恶意构造任意一...

    原标题:任意URL跳转漏洞修复与JDK中getHost()方法之间的坑

    *本文作者:ChangeS,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

    任意URL跳转漏洞

    服务端未对传入的跳转url变量进行检查和控制,导致可恶意构造任意一个恶意地址,诱导用户跳转到恶意网站。由于是从可信的站点跳转出去的,用户会比较信任,所以跳转漏洞一般用于钓鱼攻击,通过转到恶意网站欺骗用户输入用户名和密码盗取用户信息,或欺骗用户进行金钱交易。

    修复该漏洞最有效的方法之一就是校验传入的跳转url参数值,判断是否为预期域名。在java中可使用下列方法:

    String url = request.getParameter("returnUrl"); String host = ""; try { host = new URL(url).getHost; } catch (MalformedURLException e) { e.printStackTrace; } if host.endsWith(".bbb.com"){ //跳转 }else{ //不跳转,报错 }

    上述代码中主要校验了客户端传来的returnUrl参数值,使用java.net.URL包中的getHost方法获取了将要跳转url的host,判断host是否为目标域,上述代码中限制了必须跳转到xxx.bbb.com的域名,从而排除了跳转到不可信域名的可能。

    但是,getHost方法真的靠谱吗??

    getHost方法的坑之一

    可以被反斜线绕过,即returnUrl=[http://www.aaa.com](http://www.aaa.com)\[www.bbb.com](http://www.bbb.com)会被代码认为是将要跳转到bbb.com,而实际在浏览器中反斜线被纠正为正斜线,跳转到,最终还是跳到的服务器。

    使用下列代码进行测试:

    public class Main { public static void main(String[] args) { String url = "https://www.aaa.com\\www.bbb.com?x=123"; String host = ""; try { host = new URL(url).getHost; } catch (MalformedURLException e) { e.printStackTrace; } System.out.println("host---"+host); System.out.println("url---"+url); } }

    url参数的域名getHost之后是还是呢?打印结果如下:

    d03d1a4bf9ab8f03ea61b7a6dda25931.png

    该结果会被endsWith(“.bbb.com”)方法判断为真,从而成功执行跳转,但实际在浏览器中跳转到了网站。

    getHost方法的坑之二

    getHost方法的结果在不同JDK版本中对井号#的处理结果不同,通常井号被用作页面锚点,对于这个url,较高版本的JDK中,取出结果为,低版本中为,从而低版本又可绕过endsWith(“.bbb.com”)方法,成功跳转。

    这里所说的高版本指的是java version 1.8.0_181或者java version 1.7.0_161中的181和161,与JDK7还是8无关。可能java在某个时间集中修复了JDK6/7/8中的URL库。

    测试过程中发现1.6.0_45,1.7.0_71,1.8.0_25均可被#绕过,即不同的JDK中低版本均存在问题。

    通过对比rt.jar---java---net--URLStreamHandler.java代码(低版本为左边,高版本为右边)找到问题所在如下图所示,代码中的start为url中冒号位置,limit为url中井号位置:

    5f4e98ca1544f51a4f680c8be4772a00.png

    从代码中可以发现,低版本中未考虑到一个完整url中斜线/或者问号?之前会出现井号#的情况,如果url中有斜线/或者问号?,取host就以斜线或者问号为终止,即使中间包含井号也不处理;而高版本中进行了井号位置的判断,排除了使用井号绕过的可能。但是线上生成环境的JDK版本又不是敢随便乱升级的,只能从代码里提前预防。

    下图为使用不同版本JDK测试的结果:

    同一段代码在不同JDK版本中打印出的host值不同,在低版本中包含了井号及其后边的部分。

    c887fe8928a9a27cef34457b6c91b0db.png

    eb70765e9352e852a17bf23d5cacff6b.png

    综合上述两个坑,若想使用getHost来修复任意URL跳转漏洞,需要考虑到反斜线和井号绕过,可使用如下代码:

    String url = request.getParameter("returnUrl"); String host = ""; try { url = url.replaceAll("[\\\\#],"/"); //替换掉反斜线和井号 host = new URL(url).getHost; } catch (MalformedURLException e) { e.printStackTrace; } if host.endsWith(".bbb.com"){ //跳转 }else{ //不跳转,报错 } 附送一个真实例子

    该站可使用井号配合斜线或者问号来绕过域名检测,即将target设置为URL编码后的,该站即可302跳转到百度。

    *本文作者:ChangeS,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。返回搜狐,查看更多

    责任编辑:

    展开全文
  • 网站渗透测试是指在没有获得网站源代码以及服务器的情况下,模拟入侵者的攻击手法对网站进行漏洞检测,以及渗透测试,可以很好的对网站安全进行全面的安全检测,把安全做到最大化。...URL跳转漏洞,大多数被攻击者...

    网站渗透测试是指在没有获得网站源代码以及服务器的情况下,模拟入侵者的攻击手法对网站进行漏洞检测,以及渗透测试,可以很好的对网站安全进行全面的安全检测,把安全做到最大化。在挖掘网站漏洞的时候我们发现很多网站存在域名跳转的情况,下面我们来详细的讲解一下。

    域名劫持跳转,也可以叫做url重定向漏洞,简单来讲就是在原先的网址下,可以使用当前域名跳转到自己设定的劫持网址上去。URL跳转漏洞,大多数被攻击者用来进行钓鱼获取用户的账号密码,以及COOKIES等信息。我们SINE安全在对客户网站进行安全检测的时候,很多公司网站在登录接口,支付返回的页面,留言的页面,充值页面,设置银行卡等操作的页面都存在着域名跳转的漏洞。

    我们来模拟下真实的渗透测试,本地搭建一个网站环境,域名地址//127.0.0.1/ 最简单的也是最容易通俗易懂的,我们在用户登录网站的时候,进行跳转劫持,将我们设计好的钓鱼页面伪造成跟客户网站一模一样的,然后代码是:http://127.0.0.1/login.php?user=&pswd=&url=http://我们构造好的钓鱼地址/websafe.php,我们把这个地址发给用户,让他们去登录即可。 如下图所示:

    从上面的2个图中,可以看出URL跳转漏洞被利用的淋漓尽致,有些网站可能会对跳转的代码进行防护,但是我们可以利用免杀的特征码进行绕过。比如@号,问号?,#,斜杠绕过,反斜线绕过,https协议绕过,XSS跨站代码绕过。充值接口绕过以及跳转劫持漏洞,大部分的平台以及网商城系统都会有充值的页面在充值成功后都会进行跳转到商户的网站上去,在跳转的过程中,我们需要充值一部分金额才能测试出漏洞导致存在不存在,只要你勇敢的去尝试,渗透测试漏洞,都会有收获的,针对充值的漏洞我们前端时间测试成功过。如下图:

    利用域名跳转漏洞,我们将可以获取到客户登录的cookies以及管理员的cookies值,使用管理员的cookies值进行登录网站后台,对网站上传webshell,进一步的对网站篡改,以及控制。

    关于如何修复网站跳转漏洞,我们SINE安全公司建议在程序代码上进行漏洞修复,加强域名后输入的字符长度,以及URL地址后的http以及.com.cn等域名字符的限制与安全过滤,对以及特殊的字符以及参数值也加强过滤,比如:redirect,jump,redurl,等参数值的过滤。时刻提醒网站用户,不要随意的打开其他人发过来的网站链接地址,将网站安全做到最大化。

    展开全文
  • 在path开头为//example.com的情况下,Django没做处理,导致浏览器认为目的地址是绝对路径,最终造成任意URL跳转漏洞。 该漏洞利用条件是目标URLCONF中存在能匹配上//example.com的规则。 注意:必须是

    一.漏洞简介

    Django默认配置下,如果匹配上URL,路由中的最后一位是/。如果用户访问的时候没加/,Django默认会跳转到带/的请求中。(由于配置项中的django.middleware.common.CommonMiddleware、APPEND_SLASH来决定)。
    在path开头为//example.com的情况下,Django没做处理,导致浏览器认为目的地址是绝对路径,最终造成任意URL跳转漏洞。
    该漏洞利用条件是目标URLCONF中存在能匹配上//example.com的规则。
    注意:必须是http://目标机ip:8000//跳转url
    不能是http://目标机ip:8000//跳转url/,也不能是http://目标机ip:8000/跳转url
    在这里插入图片描述
    在这里插入图片描述

    二.漏洞影响

    Django < 2.0.8

    三.漏洞复现

    复现环境:vulhub
    1.开启该环境
    命令:docker-compose up -d
    在这里插入图片描述
    2.访问网址:http://127.0.0.1:8000/
    在这里插入图片描述
    3.只要在url后加上//想跳转的网页,即可实现跳转
    在这里插入图片描述
    在这里插入图片描述
    链接点击后即可实现跳转
    抓包分析:
    1.直接访问http://10.0.78.22:8000/,进行抓包,放到Repeater
    在这里插入图片描述
    将原来的包GET/后面加上text请求,Go
    在这里插入图片描述
    发现301,跳转到了text
    如果漏洞存在的话,说明APPEND_SLASH=True并且初始URL没有以斜杠结尾,并且在urlpatterns中找不到它,则通过在末尾附加斜杠来形成新的URL。如果在urlpatterns中找到此新URL,则将HTTP重定向返回到此新URL。
    换句话说就是对那些末尾没加/的url自动填补/然后重新发起请求 所以如果在末尾加上了/是不会跳转成功的
    在这里插入图片描述
    可以看到无法跳转
    在这里插入图片描述
    将其改成//访问网址,即可成功返回301,进行跳转。

    展开全文
  • 0x01 url任意跳转  未做任何限制,传入任何网址即可进行跳转漏洞示例代码: <?php $redirect_url = $_GET['url']; header("Location: " . $redirect_url); exit; ?> Payload:?url=...

    0x01 url任意跳转

      未做任何限制,传入任何网址即可进行跳转。

    漏洞示例代码:

    <?php  
        $redirect_url = $_GET['url'];
        header("Location: " . $redirect_url);
        exit;
    ?> 

    Payload:?url=http://www.baidu.com,即可跳转到百度首页

    0x02 编码解码

      之前黑盒测试遇到过一个案例,感觉有点意思,写个demo复现一下

    漏洞示例代码:

    <?php  
        $url = base64_decode($_GET['url']);
        header("Location: " . $url);
    ?> 

    将url进行base64编码,参数传递到服务端解码,然后进行url跳转。

    http://www.baidu.com   base64编码后   aHR0cDovL3d3dy5iYWlkdS5jb20=

    Paylod:?url=aHR0cDovL3d3dy5iYWlkdS5jb20=  

    0x03 白名单限制

     

     

    0x04 绕过姿势

     

    利用默认协议

    ?url=\\www.baidu.com
    ?url=\/www.baidu.com
    ?url=\\\\www.baidu.com 等价于:?url=http://www.baidu.com

    前缀式

        利用问号?: ?url=http://www.evil.com?www.aaa.com

        利用井号#:  http://www.aaa.com?returnUrl=http://www.evil.com#www.aaa.com

        其他形式:

          ?url=http://www.baidu.com\aaa.com

          ?url=http://www.baidu.com\\aaa.com

     后缀式

        利用@符号:?url=http://www.aaa.com@www.evil.com

        其他形式: http://www.aaa.com.evil.com

     

    其他思路: 使用IP地址、IPv6地址、更换ftp、gopher协议



     

     

     

     

     

     

     

    绕过案例:

     

    白名单限制

    ?redirect_uri=http://www.baidu.com

    利用问号绕过限制

    ?redirect_uri=http://www.baidu.com

     

     

    尝试进行跳转到其他网站时发现做了白名单限制,非QQ域名禁止跳转,会报错说跳转链接非法

     

    ?redirect_uri=http://www.baidu.com

    ?redirect_uri=http://www.qq.com?http://www.baidu.com 

     

    ?redirect_uri=http://www.baidu.com?&http://www.qq.com

    ?redirect_uri=http://www.baidu.com/test.html?&http://www.qq.com

    ?redirect_uri=http://www.baidu.com\\test.html?&http://www.qq.com

     

    在代码中判断是否为目标域名,但开发小哥哥们喜欢用字符串包含来判断

    http://www.aaa.com?returnUrl=http://www.aaa.com.evil.com

    http://www.aaa.com?returnUrl=http://www.evil.com/www.aaa.com

    http://www.aaa.com?returnUrl=http://www.xxxaaa.com

    若再配合URL的各种特性符号,绕过姿势可是多种多样。比如

     

    利用反斜线:

    http://www.aaa.com?returnUrl=http://www.evil.comwww.aaa.com

    http://www.aaa.com?returnUrl=http://www.evil.com\www.aaa.com

     

    多次跳转,即aaa公司信任ccc公司,ccc公司同样存在漏洞或者提供跳转服务:

    http://www.aaa.com?returnUrl=http://www.ccc.com?jumpto=http://www.evil.com

    实际挖掘过程中还可以将上述方法混合使用,甚至使用URL编码、ip地址替代域名等手段。

     

    参考链接:

    web渗透基础案例——URL跳转绕过腾讯限制进行跳转

    http://www.apgy.club/temp/url.html

    分享几个绕过URL跳转限制的思路

    https://www.anquanke.com/post/id/94377

    展开全文
  • 背景: 这个漏洞是有CVE的CVE-2018-11784,这是一个任意URL跳转漏洞,具体案例可以参考H1的一个漏洞,https://hackerone.com/reports/387007 下面就来剖析一下。CVE描述:...
  • URL跳转漏洞

    2021-03-16 15:00:45
    URL跳转漏洞产生的原因 没有考虑过任意URL跳转漏洞,或者根本不知道/不认为这是个漏洞 考虑不周,用取子串、取后缀等方法简单判断,代码逻辑可被绕过 对传入参数做一些奇葩的操作(域名剪切/拼接/重组)和判断,...
  • URL跳转漏洞(总结)

    千次阅读 2020-04-24 16:19:26
    URL跳转漏洞描述 服务端未对传入的跳转url变量进行检查和控制,可导致恶意用户构造一个恶意地址,诱导用户跳转到恶意网站。 跳转漏洞一般用于钓鱼攻击,通过跳转到恶意网站欺骗用户输入用户名和密码来盗取用户信息,...
  • URL跳转漏洞实例

    千次阅读 2019-01-31 17:37:02
    a WooYun: 搜狗浏览器存在url跳转漏洞可被利用钓鱼 很老的 “@”字符 没有过滤啊 b WooYun: 百度URL跳转漏洞 百度MP3网存在URL跳转漏洞,已被利用进行钓鱼攻击,如图所示,攻击者利用被盗QQ向QQ群发送消息,钓QQ...
  • URL重定向/跳转漏洞

    万次阅读 2015-05-09 21:15:52
    0x00 相关背景介绍 由于应用越来越多的需要和其他的第三方应用交互,以及在自身应用内部根据不同的逻辑将用户引向到不同的页面,譬如一...对于URL跳转的实现一般会有几种实现方式: META标签内跳转 javascript跳转
  • URL跳转漏洞学习总结

    千次阅读 2019-11-05 11:16:48
    相关背景 现在web应用越来越多的需要和其他第三方应用交互,以及在自身应用...例如可以利用恶意的URL跳转进行钓鱼等。 URL重定向(301/302) 301重定向:当域名或者网址永久弃用后,为了方便可以将此域名或网...
  • 跳转漏洞的检测和修复

    万次阅读 2014-06-04 11:42:23
    由于是从可信的站点跳转出去的,用户会比较信任,所以跳转漏洞一般用于钓鱼攻击,通过转到恶意网站欺骗用户输入用户名和密码盗取用户信息,或欺骗用户进行金钱交易; 也可能引发的XSS漏洞(主要是跳转常常使用302...
  • URL重定向(跳转漏洞

    万次阅读 2019-01-28 21:15:03
    转自:https://landgrey.me/open-redirect-bypass/下面是owasp对URL跳转漏洞,也叫开放重定向漏洞(open redirect)的一段描述:Unvalidated redirects and forwards are possible when a web application accepts ...
  • 逻辑漏洞-url跳转漏洞

    2020-04-25 12:42:36
    既然是url跳转漏洞,我们就需要让其跳转到指定的url里,https:2333333333这样的url明显是无法访问的,而冒号之后必须纯数字,http:127.0.0.1是无法pypass的。有什么方法呢?其实ip不仅只有常见的点分十进制表示法,纯...
  • URL跳转漏洞学习

    2021-09-06 10:49:59
    URL跳转漏洞,也叫开放重定向漏洞(open redirect) 。CWE-601对该漏洞的描述为:http 参数可能包含一个 URL 值,并可能导致 Web 应用程序将请求重定向到指定的 URL。通过修改恶意站点的 URL 值,攻击者可能成功发起...
  • URL跳转漏洞描述 服务端未对传入的跳转url变量进行检查和控制,可导致恶意用户构造一个恶意地址,诱导用户跳转到恶意网站。 跳转漏洞一般用于钓鱼攻击,通过跳转到恶意网站欺骗用户输入用户名和密码来盗取用户信息,...
  • url跳转漏洞原理及绕过方式

    千次阅读 2020-12-22 05:28:57
    注:本文仅供学习参考0x01 url跳转原理及利用0x02 url跳转bypass0x03 url跳转修复0x01 url跳转原理及利用先走个流程说些废话,url重定向漏洞也称url任意跳转漏洞,网站信任了用户的输入导致恶意攻击,url重定向主要...
  • url跳转漏洞

    2020-02-14 23:31:42
    url跳转漏洞 URL跳转漏洞的本质是利用web应用中带有重定向功能的业务,将用户从一个网站重定向到另一个网站。其最简单的利用方式为诱导用户访问http://www.aaa.com?returnUrl=http://www.evil.com,借助www.aaa.com让...
  • DedecmsURL重定向漏洞

    千次阅读 2020-09-11 14:53:59
    $link = base64_decode(urldecode($link)); link可以构造成任意地址! header(“location:$link”); 影响所有用到dedecms系统的网站。 漏洞证明: http://www.********.com/plus/download.php?open=1&link=...
  • Web安全之url跳转漏洞及bypass总结

    千次阅读 2019-05-22 22:00:00
    Web安全之url跳转漏洞及bypass总结 0x01 成因 对于URL跳转的实现一般会有几种实现方式: META标签内跳转 javascript跳转 header头跳转 通过以GET或者POST的方式接收将要跳转的URL,然后通过上面的几种方式的...
  • 风险描述: 应用程序未限制可跳转的URL格式和范围,导致存在未验证的任意URL跳转漏洞。利用此漏洞,攻击者可以随意定义将跳转的URL,这可能导致挂马攻击、钓鱼攻击等等,危害很大。 漏洞级别: 低危 定睛一看问题出
  • URL跳转漏洞笔记

    2021-03-16 10:36:07
    URL跳转漏洞 介绍 跳转实现方式 漏洞产生原因 漏洞危害 URL跳转利用方法 漏洞常出现地方 URL跳转常规绕过 URL跳转漏洞畸形绕过 漏洞修复方案绕过 10种常用的bybass方案 其他绕过思路 漏洞修复方式 URL...
  • URL重定向漏洞

    千次阅读 2019-09-06 00:37:41
    0X00: 什么是url重定向? URL重定向(URL redirection,或称网址重定向或网域名称转址),是指当使用者浏览某个网址时,将他导向到另一...1、属于转发,也是服务器跳转,也可以叫做内部重定向,相当于方法调用,...
  • 2.0.8 任意URL跳转漏洞 by ADummy 0x00利用路线 ​ 直接url打 0x01漏洞介绍 ​ Django默认配置下,如果匹配上的URL路由中最后一位是/,而用户访问的时候没加/,Django默认会跳转到带/的请求中。(由配置项中的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,326
精华内容 1,330
关键字:

url跳转漏洞修复