A-A+

URL跳转漏洞检测与修复- URL跳转漏洞

2017年12月08日 原创文章 暂无评论 阅读 6,581 views 次

漏洞描述 
服务端未对传入的跳转url变量进行检查和控制,可能导致可恶意构造任意一个恶意地址,诱导用户跳转到恶意网站。
由于是从可信的站点跳转出去的,用户会比较信任,所以跳转漏洞一般用于钓鱼攻击,通过转到恶意网站欺骗用户输入用户名和密码盗取用户信息,或欺骗用户进行金钱交易;
也可能引发的XSS漏洞(主要是跳转常常使用302跳转,即设置HTTP响应头,Locatioin: url,如果url包含了CRLF,则可能隔断了http响应头,使得后面部分落到了http body,从而导致xss漏洞)。

某些URL跳转的方式可以带着HTTP referer头,这就会使得一些依赖referer校验的安全解决方案失效,比如仅做了referer校验的jsonp接口。这种问题不产生直接危害,但可能造成其他安全防护功能的绕过。

漏洞检测 
修改参数中的合法URL为非法URL,然后查看是否能正常跳转或者响应包是否包含了任意的构造URL
如:

       http://www.target.com/redirecturl=http://evil.com

常规绕过测试:

主要是利用浏览器对URL特性的支持,绕过一些正则匹配不严谨的防护。

1.“@”
http://www.target.com/redirecturl=http://[email protected]

2.“\”
        http://www.target.com/redirecturl=http://evil.com\a.whitelist.com

http://www.target.com/redirecturl=http://evil.com\\a.whitelist.com

http://www.target.com/redirecturl=http://evil.com\.a.whitelist.com

3.“\/”
        http://www.target.com/redirecturl=http://evil.com\/a.whitelist.com

3.“?”
http://www.target.com/redirecturl=http://evil.com?a.whitelist.com

4.“#”

http://www.target.com/redirecturl=http://evil.com#a.whitelist.com

其他另类绕过方式(这里的另类方式还可以配合上面的绕过方式一起使用):

1、直接指向IP地址。示例:

http://www.target.com/redirecturl=http://ip     或者配合上方绕过方式一起   http://www.target.com/redirecturl=http://[email protected] (这里会进入百度网址)

    2、将服务器IP转换为二进制后再次转换为十进制整数

         http://www.target.com/redirecturl=http://3232235777   访问后会跳转到 http://192.168.1.1/

    3、将服务器IP转换为八进制

         http://www.target.com/redirecturl=http://030052000401   访问后会跳转到 http://192.168.1.1/

    4、将服务器IP转换为十六进制

         http://www.target.com/redirecturl=http://0xC0.0xA8.1.1   访问后会跳转到 http://192.168.1.1/

    5、混合上面几种进制放在一起

         http://www.target.com/redirecturl=http://0300.0xA8.1.0x01    访问后会跳转到 http://192.168.1.1/

 

百度:www.baidu.com的IP是61.135.169.125,换算成整数型为1032300925
在浏览器内输入http://1032300925,即可正常访问该地址。 有兴趣的可以访问  http://1032300925 

 

漏洞修复的方法 

1,若跳转的URL事先是可以确定的,包括url和参数的值,则可以在后台先配置好,url参数只需传对应url的索引即可,通过索引找到对应具体url再进行跳转;
2,若跳转的URL事先不确定,但其输入是由后台生成的(不是用户通过参数传人),则可以先生成好跳转链接然后进行签名,而跳转cg首先需要进行验证签名通过才能进行跳转;
3,若1和2都不满足,url事先无法确定,只能通过前端参数传入,则必须在跳转的时候对url进行按规则校验,同时需要针对常规的绕过方法进行过滤

标签:

给我留言