会员登录|免费注册|忘记密码|管理入口 返回主站||保存桌面|手机浏览|联系方式|购物车
URL跳转漏洞详解与实战
2024-12-30IP属地 湖北0

服务端未对传入的跳转url变量进行检查和控制,可导致恶意用户构造一个恶意地址,诱导用户跳转到恶意网站。
跳转漏洞一般用于钓鱼攻击,通过跳转到恶意网站欺骗用户输入用户名和密码来盗取用户信息,或欺骗用户进行金钱交易;还可以造成xss漏洞。
常见的可能产生漏洞的参数名redirect,redirect_to,redirect_url,url,jump,jump_to,target,to,link,linkto,domain

漏洞产生地方

  1. 用户登录、统一身份认证处,认证完后会跳转

  2. 用户分享、收藏内容过后,会跳转

  3. 跨站点认证、授权后,会跳转

  4. 站内点击其它网址链接时,会跳转

URL漏洞检测

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

实现方式

我们发送给用户这样的url

绕过URL跳转限制

1.利用?号绕过限制

比如:http://www.aaa.com/acb?Url=http://login.aaa.com
这是一个跳转链接,跳转到它的二级域名下,那么这个问号放哪里可以绕过呢?其实就是放到它自身的域名前面也就是你添加的想要跳转的域名的后面,如:http://www.aaa.com/acb?Url=http://test.com?login.aaa.com 。它其实是会跳转到这个test.com域名下,这个域名是我想要跳转的任意域名,而后面的它自身域名一定要带上,不带上就无法辅助用问号?这个特性来跳转到指定域名了,而跳转后,问号和问号后面的内容会变为这样:http://www.test.com/?login.aaa.com
(引用)


2.利用反斜杠和正斜杠绕过限制

比如:http://www.aaa.com/acb?Url=http://login.aaa.com/ 同样是在它本身域名钱加上正斜杠,然后正斜杠前面跟上你想跳转的域名地址
:http://www.aaa.com/acb?Url=http://test.com/login.aaa.com
反斜杠有三种思路
(1)两个反斜杠绕过方法
比如:http://www.aaa.com/acb?Url=http://login.aaa.com/ 同样是在它本身域名钱加上两个反斜杠,然后两个反斜杠前面跟上你想跳转的域名地址
:http://www.aaa.com/acb?Url=http://test.comlogin.aaa.com
(2)一个反斜杠绕过方法
:http://www.aaa.com/acb?Url=http://test.comlogin.aaa.com
(3)另一种思路,一个反斜杠一个点
利用.这样的格式,也就是一个反斜杠加一个点来跳过限制
:http://www.aaa.com/acb?Url=http://test.com.login.aaa.com
(引用)

3.利用@绕过URL限制

如果你用这方法在火狐里进行跳转,会有弹窗提示,在其它游览器则没有。
:http://www.aaa.com/acb?Url=http://login.aaa.com@test.com后面的test.com就是要跳转到的域名,前面的域名都是用来辅助以绕过限制的
(引用)

4.利用#号绕过

:http://www.aaa.com/acb?Url=http://test.com#login.aaa.com(引用)

5.利用白名单缺陷绕过

有的域名白名单限制是不全的,比如如果想利用一个跳转,而这个跳转是通用,在这个公司网站很多子域名等都可以跳转,那么你买个域名也不算贵对吧,为什么这么说呢,这个问题就是白名单限制不当,比如,当跳转的域名包含这个网站下的所有域名,比如
http://www.aaa.com/acb?Url=http://login.aaa.com,这个login.aaa.com也可以改成aaa.com同样可以跳转对吧,因为白名单里只要有包含这个域名就直接成功跳转。那么当我在这个域名前面加上如testaaa.com,白名单里会检查是否包含aaa.com这个域名,包含,然后直接跳转,而并没有检查这个域名的整个信息,然后可以利用这个问题,直接注册一个testaaa.com这个域名就可以利用这个跳转。
(引用)

6.多重验证&跳转绕过限制

现在很多网站都有多重验证,比如你登陆账户后会出现另一个验证页面,输入手机验证码进行验证,此时这上面的URL很可能存在任意跳转的问题。
多重跳转的问题导致可绕过URL限制
比如http://www.aaa.com/acb?Url=http://login.aaa.com/acb?url=http://login.aaa.com。当然,还有多重的,这个结构的多重跳转你修改最后面的URL就可以达到任意URL跳转,中间的URL就没必要动了。
(引用)

7.点击触发达到绕过URL跳转限制

比如很多登陆页面的地方,其URL是一个跳转的URL,如:http://www.aaa.com/acb?Url=http://test.com。你直接修改了后面为任意URL,但是还是停留在原地,似乎没什么问题,但是,当你输入账号和密码后点击登陆按钮后,就会触发跳转,当然,这个账户和密码不一定要对的,随便都可以,但得视系统而定吧。这个我遇到了很多,比如你修改了域名,然后点击登陆,登陆成功后便可触发跳转,这也是一个比较隐蔽的绕过URL限制的跳转。(引用)

8.POST参数中的URL跳转

当你填什么表格或者需要填写什么的,当你上传图片,点击下一步的时候,通常下一步就是预览你填写的信息,最后才是提交,当你上传了图片后点击下一步抓包,如果过滤不严,你会看到图片的完整地址包含在POST参数里,你就可以直接修改这个地址为任意URL,然后到达下一步,这时是确定信息也就是预览自己填写的信息的正确还是不正确,由于你刚刚修改了图片地址,这里是没有显示出来的,图像会是一个小XX,当点击图片右键选择查看图像时,就会触发URL跳转问题,其实这个也可以利用来进行钓鱼,钓后台审核员的信息(引用

8.利用xip.io绕过

请求是http://www.127.0.0.1.xip.io 这个绕过是在SSRF场景中的绕过,比如SSRF你要读取内网地址,一般都做了限制,可以尝试用这方法进行绕过限制,从而访问到内网。
另外一点,URL跳转涉及的安全问题大家常见的就是钓鱼,那么利用这个思路也可达成一个钓鱼问题,如,http://www.qq.com.220.181.57.217.xip.io 当你访问qq这个域名时,其实这个链接已经被解析到后面这个ip地址上了,那么实际访问的就是后面这个IP地址。
(引用

9.协议绕过

 
 

1.最常见的登陆跳转

登陆跳转我认为是最常见的跳转类型,几乎百分之七八十网站都会url里设置跳转,所以在登陆的时候建议多观察url参数,通常都会存在跳转至于存不存在漏洞需要自己测试。

上面的类型四,

漏洞url

 
 

为登陆页面,如果登陆成功那么跳转http://xxx.com/,但是所有方式都无法绕过,但是发现可以跳转aaxxx.com,也就是匹配规则为必须为xxx.com的网址,但是aaxxx.com同样也可以。

方法

百度 inurl:xxx.com,即可百度到很多域名包含xxx.com的url,即可实现跳转,不小心百度到一个黄域,正好证明危害登陆跳XX网。

还有一些花里胡哨的base64加码了的跳转,解码就是需要跳转的url,其实本质都一样

2.@绕过

@是最常见的一种绕过。

漏洞url

 

这种跳转在chrome浏览器可以直接跳转,但是在火狐会弹框询问,但是并不影响它的危害。

火狐下@的跳转。

还有一些是跳转目录的

 

修改为

 

这种情况通常@也可以跳转,大胆的去尝试

3.充值接口跳转

通常充值接口都会进行跳转,如充值成功会跳转到充值前访问的页面,因为充值接口需要充值才能知道到底存不存在漏洞,所以测试的人相对少一些,大胆去尝试,单车变摩托,充值完成后还可以提现其实并不影响,不嫌麻烦就多测测。这些都是跳转成功的案例。

4.xss造成的url跳转

在一次渗透测试中,碰到一个站点,对<>"这些字符都是进行了过滤。且没有其他姿势配合,基本上告别了XSS等漏洞。如下

可以发现我输入了xsstest<>",但是<>被直接删除过滤掉了,但是发现双引号还在,先看下源码是怎么处理的。

乍一看双引号也被转义了,输入的xsstest 搜索有十七处,大部分被实体化了,还有一部分双引号被url编码了,但是此时突然发现我箭头指的一处并未对双引号进行转义或者过滤,虽然<>已经完全被过滤掉了。

此时构造meta的url跳转。

payload

 

其中输入

 

最终闭合掉得到的源码为。

最终点击payload会跳转百度页面,其实这个严格意义上来说算XSS造成的跳转,构造应该也可以XSS。

5.业务完成后跳转

这可以归结为一类跳转,比如修改密码,修改完成后跳转登陆页面,绑定银行卡,绑定成功后返回银行卡充值等页面,或者说给定一个链接办理VIP,但是你需要认证身份才能访问这个业务,这个时候通常会给定一个链接,认证之后跳转到刚刚要办理VIP的页面。

通常这个点都会存在跳转至于存不存在任意跳转,师傅们自测,有些跳转业务不好码就不发了。

6.用户交互

在一些用户交互页面也会出现跳转,如请填写对客服评价,评价成功跳转主页,填写问卷,等等业务,注意观察url。

问卷调查提交跳转。

7.漏洞构造漏洞

一次渗透测试中碰到一个任意文件上传漏洞,但是不幸的是没办法解析任何后端语言,没办法进一步利用,只能前端造成一点危害,但是存放文件的服务器一般比较偏远,此时可以利用我们任意文件上传的html,然后来进一步利用,绕过本来无法绕过的url跳转漏洞。因为存放文件的域名肯定是符合网站跳转范围。

最终构成url跳转漏洞,当然可以获取cookie造成更多的危害,本文仅讨论url跳转。

ps:如果有其他小技巧我会更新到本篇文章。

参考:https://www.anquanke.com/post/id/94377?from=singlemessage

漏洞修复的方法

  1. 若跳转的URL事先是可以确定的,包括url和参数的值,则可以在后台先配置好,url参数只需传对应url的索引即可,通过索引找到对应具体url再进行跳转

  2. 若跳转的URL事先不确定,但其输入是由后台生成的(不是用户通过参数传入,则可以先生成好跳转链接然后进行签名,而跳转cg首先需要进行验证签名通过才能进行跳转

  3. 若1和2都不满足,url事先无法确定,只能通过前端参数传入,则必须在跳转的时候对url进行按规则校验:即控制url是否是你们公司授权的白名单或者是符合你们公司规则的url

  4. XSS漏洞的注意事项 :跳转url检测中也加入了CRLF头部注入漏洞的检测逻辑, 具体就是在请求参数中加入了%0d%0a这种测试代码,需要对这些参数进行删除处理(事实上:在判断到一个参数中包含 %00 -> %1f 的控制字符时都是不合法的,需对其进行删除)。