URL重定向=url跳转漏洞
http://www.zhenggui.com/
http://www.zhengguilcom?url=1
一般看到这里我们会去测试sql注入漏洞,但是除了sql注入漏洞,我们还可以去测试url跳转漏洞
http://www.zhengguilcom?url=http://www.xxx.com
访问: http://www.zhengguilcom?url=http://www.xxx.com 直接就会跳转到http://www.xxx.com
这就是URL漏洞的展现形态和他最初的思路
我们在学漏洞的时候,最关心的就是漏洞这么挖,以及这个漏洞怎么利用才能造成危害
一般利用点
CRLF漏洞
在数据包里面修改成GET xxx/xxx?url=http://www.xxx.com发送,然后去看返红包里面有没有302的状态码进行跳转,返红包的头部有没有换行,有的话就存在crlf漏洞
302跳转: 即设置HTTP响应头Locatioin: url,如果ur包含了CRLF (回车换行),就可能隔断了http响应头,使得后面部分落到了http body,从而跳转到构造的网址。
http://www.xxx.com/index.php\r\n
URL跳转漏洞经常出现在登录和注册页面或者在功能处,还有一些用户分享、收藏内容过后跳转到下一步等等
注册登录跳转: 很多登录界面的网址后面会跟一个URL参数,引导我们登录成功后跳转到相应界面,当被我们利用时,则登录成功后可以跳转到我们指定的恶意网站。
http://www.xxx.com/login.php?url=www.hacker.com
http://www.xxx.com/regist.php?url=http://www.google.com
打开连接功能: 很多网站有个功能是打开外部连接,当输入要访问的网址时,会先将网址添加到url上,然后进行跳转,利用添加上url的网址可以进行引导到任意网址
http://www.xxx.com/admin.php?jump=www.baidu.com
像企查查和知乎这种的,你如果输入一个站位的站,他就会提醒你即将跳转到外部连接是否继续,可能有一定的风险,像有这种提示就说明了人家是做了相关的防护,如果说没有相关提示的话,就是一个漏洞
利用姿势
1.正常在测试网站时候,当发现url中存在以下参数,可以进行url跳转测试
1 redirect、redirect_to、redirect_url
2 jump、jump_to、target、domain
3 url、src、to.link、linkto
5公司:A
6a_url
当然这肯定不全,因为每个开发的公司都有自己一套开发的思想的,他可能命名不是那么标准
2.直接获取了用户输入的参数,直接就进行了跳转,没有做任何白名单和黑名单的限制,所以就会产生跳转
1 <?php2 $url=$_GET['url"];3 header("Location: $url");4?>
可以直接拼接上我们要跳转的网址
1 www.xxx.com/admin.php?url=http://www.baidu.com
因为代码写的不对,没有做任何防护就会出现直接跳过去
具体代码怎么写修复的,百度一下就可以了,已经有成型的标准了
3.当存在限制时 这个限制一般是限制只能跳转本网的网址或规定的网址比如www.xxx.com开头的网址
1<?php2 $url=$_GET['url'];3 if(preg_match(/^www\.xxx\.com/,$url)){header("Location: $url");4 }else(echo "error";5 }6 ?>
这样则只能跳转到www.xxx.com开头的网址,这个时候就需要一些绕过了。但这里存在几个url构造利用,能跳转到baidu
1 www.xxx.com:80@baidu.com2 www.xxx.com:80@baidu.com:803 www.xxx.com#@baidu.com4 www.xxx.com @baidu.com5 www.xxx.com @baidu.com:806 www.xxx.com\www.baidu.com7 www.xxx.com\\www.baidu.com8 www.xxx.com?www.baidu.com9 www.xxx.com#www.baidu.com11 http://www.xxx.com?url=http://www.bd.com12 绕过:13 http://www.xxx.com?url=http://www.bd.com@xxx.com
这有篇非常详细的url原理讲解
主要是在网址构造之间对特殊符号FUZZ测试进行自由组合";“、”/“、”“、”=“、”&“、”?“、”:“、”@“、”."
修复
1.限制Referer Referer是header字段,当浏览器向服务器发送请求时,通常会带上Referer,服务器判断是从哪个页面转过来的,然后限制Referer将能保证跳转URL的有效性,避免攻击者生成自己的恶意跳转链接;
2.加入有效性验证Token token验证能有效阻断很多漏洞的利用,保证所有生成的链接都来自可信任的网址,在生成的链接 加入随机不可控的Token,然后对生成的链接进行校验。
高端利用
1、构造xss漏洞 ?url=javascript;alert(1)
2、构造实现url跳转结合钓鱼或者跳转获取到认证
3、获取用户token,cookie
4、meta标签,通过设置meta标签内的refresh属性进行跳转: http://127.0.0.1/1.php?url=1;http://baidu.com" http-equiv="refresh&fsearch=yes
可以让有URL跳转漏洞的网站自动进行跳转
5、经常有的
登录: http://test.com/login/?url=http://baidu.com
退出: http://test.com/logout/?url=http://baidu.com
网络安全是做保障的,开发是做业务的,在甲方安全部门是花钱的
来源地址:https://blog.csdn.net/m0_53008479/article/details/128616524