最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 【安全系列】XXX域名存在URL任意跳转漏洞

    正文概述 掘金(Hecate)   2021-03-19   589

    前言

    下午收到公司一条漏洞工单标题是:www.xxx.com存在URL任意跳转漏洞

    定睛一看问题出现在我负责的项目的用户登录授权接口上。 链接参数中含有returnUrl(登入成功后返回的页面)。其中未做域名限定处理导致。

    emmm~因为代码在后端,立马对接给相应后端开发去处理啦~

    内心OS(WTF? URL任意跳转漏洞是什么?!!怎么预防处理?赶紧学习普及一下!)

    URL跳转漏洞原理与加固方案

    什么是URL跳转漏洞?

    URL跳转攻击(URL Redirection),Web业务系统接收到用户提交的URL参数后,未对URL参数进行“可信URL”校验,就向用户浏览器返回跳转到该URL。

    URL跳转漏洞危害

    如果 hecate.vip域名下某个Web业务系统存在URL跳转漏洞,攻击者向用户发送一个存在URL跳转的链接,该链接跳转到钓鱼网站页面,可能回导致用户被钓鱼攻击。

    URL跳转原理

    后台通过GET或是POST的方式接收url中的参数,并作为302,301等重定向跳转的地址填入响应头的location字段中,或使用js代码进行跳转,meta标签内跳转等。

    输入点:

    • url中的参数
    • post请求提交的数据

    输出点:

    • header中的location字段中。(可能有CRLF注入的危险,注入头部信息或内容部分)
    • meta标签的url参数中
    • 后台逻辑跳转中
    • 网页js代码中(可能导致js代码注入问题)

    URL重定向(301/302)

    301重定向:当域名或者网址永久弃用后,为了方便可以将此域名重定向到新的域名或URL。

    302重定向:当域名或网址临时弃用时,为了方便可以将此域名重定向到新的域名或URL。

    302URL劫持与302任意URL跳转的不同点:

    • 302URL劫持:是由于搜索引擎的算法导致的问题。例如:A网站暂时弃用,要302重定向到B网站,但是由于B网站URL太过复杂,而搜索引擎的算法判定A网站更加适合,所以爬取的还是A网址,这个时候访问网站显示的URL是A网站的,而显示的内容是B网站,造成了302重定向 --- URL劫持。
    • 302任意URL跳转:是用户可以直接控制URL跳转的参数或者通过一些绕过方式控制URL跳转的位置造成的问题。

    通常发生URL跳转漏洞的地方以及参数

    发生原因

    web站点或者第三方的服务端没有对用户输入的参数进行合法性校验,或者校验不严格,在URL跳转时用户可控,导致恶意参数的传入以及执行,将应用程序引导到恶意的第三方区域产生的安全问题(短链接更加难以防范)。

    常见节点:

    • 用户登录、统一身份认证处,认证完成后会跳转
    • 用户分享、收藏内容后,会跳转
    • 跨站点认证、授权后,会跳转
    • 站内点击其他网站地址时,会跳转

    常见参数:

    • redirect
    • redirect_to
    • redirect_url
    • url
    • jump
    • jump_to
    • target
    • to
    • link
    • linkto
    • domain

    几种和框架版本常见的URL跳转代码

    //Java
    response.sendRedirect(request.getParameter("url"));
    
    //php:
    $redirect_url = $_GET['url'];
    header("Location: " . $redirect_url);
    
    .NET:
    string redirect_url = request.QueryString["url"];
    Response.Redirect(redirect_url);
    
    Django:
    redirect_url = request.GET.get("url")
    HttpResponseRedirect(redirect_url)
    
    Flask:
    redirect_url = request.form['url']
    redirect(redirect_url)
    
    Rails:
    redirect_to params[:url]
    

    URL跳转漏洞防御处理

    • 1、判断用户传染的URL参数是否为【mydomain】(网站域)的URL
    String url = request.getParameter("url");
    
    if(!url.startsWith("http://") && !url.startsWith("https://")){
    
    url = "http://" + url;
    
    }
    
    String host = "";
    
    String tempUrl=url;//临时变量做替换后判断,跳转任然用url
    
    try {
    
        tempUrl = tempUrl.replaceAll("[\\\\#]","/"); //替换掉反斜线和井号
        
        host = new URL(tempUrl).getHost();
    
    } catch (MalformedURLException e) {
    
        e.printStackTrace();
    
    }
    
    if host.endsWith(".mydomain.com"){
    
    //跳转到 url
    
    }else{
    
    //不跳转,报错
    
    }
    
    • 2、代码固定跳转地址,不让用户控制变量
    • 3、跳转目标地址采用白名单映射机制
    • 4、合理充分的校验跳转的目标地址,非己方地址时告知用户跳转风险。

    延展阅读

    感兴趣的同学可以继续阅读以下几篇带有实操案例的文章~

    URL跳转漏洞

    URL跳转漏洞远离及绕过


    起源地下载网 » 【安全系列】XXX域名存在URL任意跳转漏洞

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元