一、URL跳转漏洞描述
服务端未对传入的跳转url变量进行检查和控制,可导致恶意用户构造一个恶意地址,诱导用户跳转到恶意的网站。
跳转漏洞一般用于钓鱼攻击,通过跳转到恶意网站欺骗用户输入用户名和密码来盗取用户信息,或欺骗用户进行金钱交易,还可以造成xss漏洞。
常见的可能产生漏洞的参数名:
-
redirect
redirect_to
redirect_url
url
jump
jump_to
target
to
link
linkto
domain
二、漏洞产生的地方
1、用户登录,统一身份认证处,认证完成后会跳转。
2、用户分享,收藏内容过后,会跳转。
3、跨站点认证,授权后,会跳转。
4、站内点击其他网站链接时,会跳转。
2.1、URL漏洞检测
修改参数中合法的URL为非法的URL,然后查看是否能正常的跳转或者响应是否包含任意的构造URL。
2.2、实现方式
1、META标签内跳转
2、javascript跳转
3、header跳转
2.3、实例解释
最简单的代码实例,也是很贴近真是渗透的案例,登录跳转,后面通常时加上自己业务的url,一旦存在url任意重定向,发送给用户,会毫不疑问的输入账号密码登录,然后跳转到我们想要他跳转的url。
我们发送给用户这样的url:http://127.0.0.1/url.php?username=&password=&redict=http://127.0.0.1/fish.php
用户正常输入账号密码登录,跳转到我们构造的钓鱼页面。
三、绕过URL跳转限制
3.1、利用?号绕过限制
正常链接:http://www.aaa.com/abc?url=http://login.aaa.com
这是一个跳转链接,跳转到它二级域名下,那么这个问号放在哪里可以绕过呢?其实就是放在它自身的域名前面也就是你添加的想要跳转的域名的后面。
绕过:http://www.aaa.com/abc?url=http://test.com?login.aaa.com
它其实是会跳转到这个test.com域名下,这个域名是我想要跳转的任意的域名,而后面的它自生域名一定要带上,不带上就无法辅助用问号?这个特性来跳转到指定域名了,而跳转后,问号和问号后面的内容会变为这样:
http://www.test.com/?login.aaa.com(引用)
3.2、利用反斜杠和正斜杠绕过限制
正斜杠/
比如:http://www.aaa.com/abc?url=http://login.aaa.com/同样是在它本身域名前加上正斜杠,然后正斜杠前面跟上你想要跳转的域名地址。
如:http://www.aaa.com/abc?url=http://test.com/login.aaa.com
反斜杠
1、两个反斜杠绕过方法
比如:http://www.aaa.com/abc?url=http://login.aaa.com/同样是在它本身域名前加上两个反斜杠,然后两个反斜杠前面跟上你想跳转的域名地址。
如:http://www.aaa.com/abc?url=http://test.com\login.aaa.com
2、一个反斜杠绕过方法
如:http://www.aaa.com/abc?url=http://test.comlogin.aaa.com
3、一个反斜杠一个点
利用:这样的格式,也就是一个反斜杠加一个点来跳过限制。
如:http://www.aaa.com/abc?url=http://test.com.login.aaa.com
3.3、利用@绕过URL限制
如果你用在火狐里进行跳转,会有弹窗提示,在其他浏览器则没有。
如:http://www.aaa.com/abc?url=http://login.aaa.com@test.com,后面的test.com就是要跳转到的域名,前面的域名都是用来辅助以绕过限制的。
3.4、利用#号绕过
http://www.aaa.com/abc?url=http://test.com#login.aaa.com
3.5、利用白名单缺陷绕过
有的域名白名单限制是不全的,比如如果想利用一个跳转,而这个跳转是通用,在这个公司网站很多子域名等都可以跳转,那么你买一个域名,为什么这么说呢?这个问题就是白名单限制不当,比如,当跳转的域名包含这个网站下的所有域名,比如:http://www.aaa.com/abc?url=http://login.aaa.com,这个login.aaa.com也可以改成aaa.com同样可以跳转的,因为白名单里只要有包含这个域名就直接成功跳转,那么当我在这个域名前面加上如testaaa.com,白名单里会检查是否包含aaa.com这个域名,包含,然后直接跳转,而并没有检查这个域名的整个信息,然后可以利用这个问题,直接注册一个testaaa.com这个域名就可以利用这个跳转。
3.6、多重验证&跳转绕过限制
现在很多网站都有多重验证,比如你登录账户后会出现另一个验证页面,输入手机验证码进行验证,此时这上面的URL很可能存在任意跳转的问题。
多重跳转的问题导致可绕过URL限制。
比如:http://www.aaa.com.abc?url=http://login.aaa.com/abc?url=http://login.aaa.com
,当然,还有多重的,这个结构的多重跳转你修改最后面的url就可以达到任意URL跳转,中间的url就没必要动了。
3.7、点击触发达到绕过URL跳转限制
比如很多登录页面的地方,其URL是一个跳转的URL,如:http://www.aaa.com/abc?url=http://test.com
,你直接修改后面为任意url,但是还是停留在原地,似乎没什么问题,但是,当你输入账号和密码后点击登录按钮后,就会触发跳转,当然,这个用户名和密码不一定要对的,随便都可以,但的视系统而定吧,这个问题之前遇到很多,比如你修改了域名,然后点击登录,登录成功后便触发跳转,这也是一个比较隐蔽的绕过URL的跳转。
3.8、POST参数中URL跳转
当你填什么表格或者需要填写什么,当你上传图片,点击下一步的时候,通常下一步就是预览你填写的信息,最后才是提交,当你上传了图片点击下一步抓包,如果过滤不严,你会看到图片的完整地址包含在POST参数里, 你就可以直接修改这个地址为任意的URL,然后达到下一步,这时事确定信息也就是预览自己填写的信息的正确还是不正确,由于你刚刚修改了图片地址,这里是没有显示出来,图像会是一个小xx,当点击图片右键选择查看图像时,就会触发URL跳转问题,其实这个也可以利用来进行钓鱼,钓后台审核员的信息。
3.9、利用xip.io绕过
请求是http://127.0.0.1.xip.io这个绕过是在SSRF场景中的绕过,比如SSRF你要读取内网地址,一般都做了限制,可以尝试用这个方法进行绕过限制,从而访问到内网。
另外一点,URL跳转涉及的安全问题大家常见的就是钓鱼,那么利用这个思路也可达成一个钓鱼问题,如:http://www.qq.com.220.181.57.217.xip.io当你访问qq这个域名时,其实这个链接已经被解析到后面这个ip地址上了,那么实际访问的就是后面这个IP地址。
3.10、协议绕过
http与https协议转换尝试,或者省略。
http与https协议转换尝试,或者省略
http://127.0.0.1/url.php?username=1&password=1&password=1&redict=//[email protected]
http://127.0.0.1/url.php?username=1&password=1&password=1&[email protected]//多斜线
四、实战案例
1、最常见的登录跳转
登录跳转我认为时最常见的跳转类型,几乎百分之七八十网站都会在url里设置跳转,所以在登录的时候多观察url参数,通常都会存在跳转至于存不存在漏洞需要自己测试。
漏洞url:
http://xx.xxx.com/User/Login?redirect=http://xxx.com/
为登录页面,如果登录成功那么跳转http://xxx.com/,但是所有方式都无法绕过,但是发现可以跳转aaxxx.com,也就是匹配规则为必须为xxx.com的网址,但是aaxxx.com同样也可以。
2、@绕过
@是最常见的一种绕过
漏洞url:
https://xx.xxx.com/user/goToLogin?toUrl=https://[email protected]
这种跳转在chrome浏览器可以直接跳转,但是在火狐会弹窗询问,当时并不影响它的危害。
还有一些是目录跳转。
比如:https://xx.xxx.com.cn/?redirect=/user/info.php
修改为:https://xx.xxx.com.cn/[email protected]
这种情况通常@也可以跳转,大胆的去尝试。
3、充值接口跳转
通常充值接口都会进行跳转,如果充值成功会跳转到充值前访问的页面,因为充值接口需要充值才能知道到底存不存在漏洞,所以测试的人相对较少一点,我们需要尝试,单车变摩托,充值完成后还可以体现,其实并不影响,不嫌麻烦的就多测测,这些都是跳转成功的案例。
4、业务完成后跳转
这可以归结为一类跳转,比如修改密码,修改完成后跳转登录页面,绑定银行卡,绑定成功后返回银行卡充值等页面,或者说给顶一个链接办理VIP,但是你需要认证身份才能访问这个业务,这个时候通常会给定一个链接,认证之后跳转到刚刚要办理的VIP页面。
通常这个点都会存在跳转至于存不存在任意跳转,自己测试就知道了。
5、用户交互
有一些用户交互页面也会出现跳转,如请填写对客服的评价,评价成功跳转主页,填写问卷,等等业务,注意观察url。
6、漏洞构造漏洞
一次渗透测试中碰到的一个任意文件上传漏洞,但是不幸的是没办法解析任何后端语言,没办法进一步利用,只能前端造成一点点危害,但是存放文件的服务器一般比较偏远,此时可以利用任意文件上传的html,然后来进一步利用,绕过本来无法绕过的url跳转漏洞,因为存放文件的域名肯定是符合网站跳转的范围。
最终构成url跳转漏洞,当然可以获取cookie造成更多的危害。
五、修复建议
1、若跳转的URL事先是可以确定的,包括url和参数的值,则可以在后台配置好,url参数只需要传对应的url的索引即可,通过索引找到对应具体url在进行跳转。
2、若跳转的url事先不确定,但其输入是由后台生成的(不是用户通过参数传入),则可以先生成好跳转链接然后进行签名,而跳转cg首先需要进行验证签名通过才能进行跳转;
3、若1和2都不满足,url事先无法确定,只能通过前端参数传入,则必须在跳转的时候对url进行按规则校验:即控制url是否是你们公司授权的白名单或者是符合你们公司规则的url:
4、XSS漏洞的注意事项 :跳转url检测中也加入了CRLF头部注入漏洞的检测逻辑, 具体就是在请求参数中加入了%0d%0a这种测试代码,需要对这些参数进行删除处理(事实上:在判断到一个参数中包含 %00 -> %1f 的控制字符时都是不合法的,需对其进行删除)。
5、开源项目及时进行升级,如Django升级 pip install django --upgrade
文章来源:https://blog.csdn.net/qq_51524329/article/details/121496393
原文始发于微信公众号(赤弋安全团队):SRC漏洞挖掘-URL跳转
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论