URL跳转漏洞

版权声明:sh0rk https://blog.csdn.net/Home_pig/article/details/83692852

什么是URL跳转

借助未认证的URL跳转,将应用程序引导到不安全的第三方区域,从而导致的安全问题。

利用方法

Header头跳转:通过设置Location进行跳转
JavaScript跳转:通过window.location.href进行跳转

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    String url = request.getParameter("url");
    // 客户端跳转
    //response.sendRedirect(url);
    // META标签跳转:通过设置refresh进行跳转
    //response.setHeader("Refresh","1;url="+url);
%>

如上,http://localhost:8080/urlJump/jump.jsp?url=http://www.baidu.com, 当访问该链接的时候会跳转到百度,这样通过容易从一些知名的网站,跳转到不安全的第三方网站,比如:http://www.qq.com/?url=http://www.demo.com ,用户会容易以为点击的链接属于qq的网站,以为是安全的,但是会跳转到demo这个网站,用户容易信任该网站,如果攻击者设置了和qq一样的登陆界面,那么用户很有可能会登陆,从而信息被盗取。

进阶

防御

  • referer的限制如果确定传递URL参数进入的来源,我们可以通过该方式实现安全限制,保证该URL的有效性,避免恶意用户自己生成跳转链接
  • 加入有效性验证Token我们保证所有生成的链接都是来自于我们可信域的,通过在生成的链接里加入用户不可控的Token对生成的链接进行校验,可以避免用户生成自己的恶意链接从而被利用,但是如果功能本身要求比较开放,可能导致有一定的限制。

猜你喜欢

转载自blog.csdn.net/Home_pig/article/details/83692852
今日推荐