【Web安全】逻辑漏洞之URL跳转漏洞:原理、场景与防御

文章目录

往期文章

【Web安全】一次性搞懂 ReDOS 漏洞原理/检测/防御

【Web安全】一次性搞懂 XSS 漏洞原理/检测/防御

【Web安全】一次性搞懂 CSRF 漏洞原理/检测/防御

【Web安全】一次性搞懂 SSRF 漏洞原理/检测/防御

【Web安全】一次性搞懂越权漏洞原理/检测/防御

【Web安全】逻辑漏洞之支付漏洞:原理、场景与防御

【Web安全】小白也能懂的并发漏洞:原理、场景与防御

前言

在Web安全的逻辑漏洞里,URL跳转漏洞可能不像支付漏洞那样直接关联金钱,但它却像一个"恶意导航员",能悄无声息地把用户引向钓鱼网站、病毒页面,进而导致账号被盗、信息泄露等问题。

简单说,当你点击一个"安全链接",本应跳转到官方网站,结果却跳到了骗子仿造的假网站------这背后可能就是URL跳转漏洞在搞鬼。它的危害不在于复杂的技术,而在于利用用户对"正规网站"的信任,完成钓鱼、诈骗等攻击。

一、漏洞本质

URL跳转漏洞的核心是服务器对"跳转目标URL"的校验逻辑失效

正常情况下,网站的跳转功能(比如登录后跳回原页面、点击链接跳转到相关页面)需要先检查"要跳转到的URL"是否合法(比如是否属于官方域名、是否在允许的范围内);但如果存在漏洞,服务器可能直接信任用户传来的跳转地址,或者校验时偷懒(比如只检查开头几个字符),导致攻击者可以随意修改跳转目标,把用户"骗"到恶意网站。

一句话总结:"该拦的坏链接没拦住,该验证的地址没验证"

二、攻击原理

正常跳转流程

  1. 用户在网站上触发跳转(比如点击"登录后返回""查看详情"按钮);
  2. 服务器生成跳转链接,其中包含目标URL参数(比如https://xxx.com/login?redirect=https://xxx.com/home);
  3. 服务器校验这个redirect参数里的URL是否合法(比如是否属于xxx.com域名);
  4. 校验通过后,用户被安全跳转到目标地址。

漏洞触发流程

  1. 攻击者发现网站的跳转链接里有可修改的参数(比如redirecturljump等);
  2. 攻击者篡改这个参数,把合法URL换成恶意地址(比如https://xxx.com/login?redirect=https://hack.com/fake);
  3. 服务器没有校验这个篡改后的URL(或者校验不严格),直接执行跳转;
  4. 用户点击链接后,被"骗"到恶意网站(比如仿造的登录页,用于盗取账号密码)。

三、抓包的关键时机:跳转参数生成时

URL跳转漏洞的攻击,关键是在**"生成跳转链接"的环节篡改参数**。

比如这些场景:

  • 登录页面:可能有redirect参数,用于登录后跳回原页面(例:https://xxx.com/login?redirect=https://xxx.com/user);
  • 退出登录:可能有logoutUrl参数,用于退出后跳转到首页(例:https://xxx.com/logout?logoutUrl=https://xxx.com/index);
  • 分享/广告链接:可能有url参数,用于跳转到目标页面(例:https://xxx.com/share?url=https://xxx.com/article)。

攻击者会用抓包工具(比如BurpSuite工具)抓住这些包含跳转参数的请求,把里面的合法URL改成恶意地址,再发给用户。

四、风险场景

URL跳转漏洞的危害主要是"诱导用户访问恶意网站",常见场景有这些:

1.登录/注册后跳转

很多网站登录后会自动跳回用户之前浏览的页面,比如https://xxx.com/login?redirect=https://xxx.com/cart(登录后跳购物车)。

如果有漏洞,攻击者可以把redirect改成恶意地址(比如https://hack.com/fake-login),然后把链接伪装成"官方登录页"发给用户。用户点击后,先正常登录官方网站,接着被自动跳转到假登录页------由于假页面长得和官方一样,用户可能会再次输入账号密码,导致信息被黑客盗取。

2.退出登录跳转

退出登录时,网站可能会跳转到首页,参数类似https://xxx.com/logout?redirectUrl=https://xxx.com/index

攻击者篡改后,链接变成https://xxx.com/logout?redirectUrl=https://hack.com/fake-home。用户退出后,会被跳转到假首页,假页面可能会弹窗"账号异常,请重新登录",诱导用户输入信息。

3.分享/广告链接跳转

比如某论坛的"分享到微博"功能,链接可能是https://xxx.com/share?url=https://weibo.com

攻击者篡改后,分享链接变成https://xxx.com/share?url=https://hack.com/virus。当其他用户点击"分享"时,会直接跳转到带病毒的页面。

4.密码重置链接跳转

有些网站重置密码后,会跳转回登录页,参数比如https://xxx.com/reset-password?jump=https://xxx.com/login

攻击者篡改后,用户重置密码成功后,会被跳转到假的"安全中心",骗取银行卡信息等。

五、漏洞挖掘:怎么找到这种漏洞?

即使是安全小白,也能通过简单步骤测试是否存在URL跳转漏洞,核心是"找参数、改地址、测跳转"。

1.找到跳转参数

先在网站上找包含"跳转"功能的地方,看看链接里有没有类似这些参数:

  • redirect(最常见,比如登录后跳转)
  • url(比如点击链接跳转)
  • jump(比如按钮跳转)
  • target(比如页面内跳转)

例:在登录页看到链接https://xxx.com/login?redirect=https://xxx.com/home,这里的redirect就是要测试的参数。

2.篡改参数测试

把参数里的合法地址换成自己能控制的地址(比如自己的博客、团队官网,别用baidu.com这类常见域名,很多网站会拉黑它们),然后访问修改后的链接,看是否会跳转过去。

例:把redirect=https://xxx.com/home改成redirect=https://myblog.com/test,如果能成功跳转到myblog.com,说明可能有漏洞。

3.绕过网站的简单拦截

如果直接改域名被拦截(比如提示"不允许跳转外部链接"),可以试试这些小技巧:

  • @符号:比如https://xxx.com/login?redirect=https://xxx.com@myblog.com(网站可能只校验@前面的xxx.com,实际跳转到myblog.com);
  • 用IP代替域名:比如把myblog.com换成它的IP地址(1.2.3.4),有些网站只拦域名不拦IP;
  • 加特殊符号:比如在URL后加/#https://myblog.com/#),可能绕过简单校验。

这里绕过的更多操作可以参考:SSRF漏洞中的URL绕过的 3.3 章节。

六、漏洞危害:被利用后会发生什么?

最常见的危害是钓鱼攻击:如今AI来造一个高仿的假页面已经很难从肉眼分辨出来了。

  • 攻击者伪造一个和官方网站一模一样的假页面(比如假登录页、假支付页);
  • 通过URL跳转漏洞,诱导用户从正规网站"无缝跳转"到假页面;
  • 用户以为还在正规网站上,输入账号、密码、银行卡信息,这些信息会被攻击者获取。

此外,还可能导致:

  • 传播恶意软件:跳转至带病毒的页面,自动下载木马;
  • 损坏网站信誉:用户被骗后,会认为是官方网站不安全。

七、URL 跳转漏洞危害实例:从正常登录到信息被窃的全过程

为了让安全小白更直观理解 URL 跳转漏洞的危害,我们结合具体场景拆解:黑客如何利用漏洞,一步步获取用户的敏感信息。

场景背景

假设aaa.bb.com是一个正规网站(比如某购物平台),用户需要登录才能使用功能;aaa.cc.com是该网站的关联域名(比如官方帮助中心)。正常情况下,登录后会自动跳转到用户需要访问的页面。

1. 正常登录流程(无漏洞时)

  1. 用户访问登录页,链接为:https://aaa.bb.com/login?redirectUrl=aaa.cc.com
    这里的redirectUrl参数表示:登录成功后,自动跳转到aaa.cc.com(比如用户原本在浏览帮助中心,点击 "登录" 后,登录成功会跳回帮助中心)
  2. 用户输入账号密码,点击 "登录";
  3. 服务器验证账号密码正确后,检查redirectUrl参数中的aaa.cc.com是否为可信域名(比如属于官方允许的跳转范围);
  4. 校验通过,用户被安全跳转到aaa.cc.com,同时浏览器会记录登录状态(比如生成一个临时凭证req=qweasdzxc123,用于证明 "已登录")。

整个过程中,用户始终在官方信任的域名内跳转,信息是安全的。

2. 漏洞被利用:黑客如何构造恶意链接?

黑客发现aaa.bb.com的登录页存在 URL 跳转漏洞 ------服务器没有校验redirectUrl参数,或者用了容易绕过的校验方式(比如只检查域名开头,不检查完整地址)。

于是,黑客做了两件事:

  1. 构造恶意登录链接:把redirectUrl换成自己控制的服务器地址11.2.12.4:8080(这是黑客电脑的 IP 和端口,用于监听用户信息),链接变成:https://aaa.bb.com/login?url=11.2.12.4:8080(这里的url参数和redirectUrl作用一样,都是控制跳转目标)。
  2. 用钓鱼手段诱导用户点击:比如伪装成 "官方活动链接""账号异常需验证",发给目标用户(用户看到链接开头是aaa.bb.com,会认为是正规网站,放松警惕)。

3. 用户中招:信息如何被黑客获取?

用户点击了黑客发的恶意链接https://aaa.bb.com/login?url=11.2.12.4:8080,接下来的流程对用户来说 "看似正常",但实际上已陷入陷阱:

  1. 用户在aaa.bb.com的登录页输入账号密码(因为页面确实是正规网站的登录界面,用户不会怀疑);
  2. 服务器验证账号密码正确后,由于漏洞存在,直接按照url参数的指示,把用户跳转到11.2.12.4:8080(黑客的服务器);
  3. 此时,用户的浏览器会带着 "登录凭证"(比如之前提到的req=qweasdzxc123)跳转到黑客服务器 ------ 这个凭证相当于 "已登录的通行证",能证明用户在aaa.bb.com上的登录状态;
  4. 黑客早已在自己的服务器上启动了监听工具(nc -lvvp 11.2.12.4:8080,这行命令的作用是 "打开 8080 端口,等待并记录所有连接过来的信息");
  5. 当用户的浏览器跳转到11.2.12.4:8080时,黑客的监听工具会捕获到用户的登录凭证req=qweasdzxc123

4. 最终危害:黑客拿到凭证后能做什么?

登录凭证req=qweasdzxc123是用户在aaa.bb.com上的 "身份令牌",黑客拿到后可以:

  • 直接用这个凭证访问aaa.bb.com(无需登录密码),查看用户的个人信息(姓名、电话、地址等);
  • 操作用户账号(比如购物平台的话,可能盗用优惠券、发起订单;社交平台的话,可能冒充用户发送诈骗信息);
  • 如果用户在aaa.bb.com绑定了银行卡、支付账号,甚至可能导致财产损失。

八、与SSRF漏洞的区别

很多小白会把URL跳转漏洞和SSRF漏洞搞混,其实它们的"攻击对象"完全不同:

区别 URL跳转漏洞 SSRF漏洞
受害者 普通用户(客户端) 服务器(网站后台)
行为 诱导用户跳转到恶意网站 诱导服务器主动请求恶意地址
例子 你点了一个链接,从官网跳到假网站 黑客让淘宝服务器主动去访问他的恶意服务器

九、防御方案:怎么堵住这个漏洞?

核心原则:不要相信用户传来的任何跳转地址,服务器自己把控跳转目标

1.用"白名单"限制跳转范围

服务器只允许跳转到提前设定好的合法域名(比如官网的域名xxx.com、合作网站域名),其他地址一律拒绝。

例:如果网站只允许跳转到xxx.compartner.com,那么当redirect参数是myblog.com时,直接拦截,不执行跳转。

2.不用URL,用"编号"代替

不直接在参数里写跳转地址,而是给每个合法地址编一个号,参数只传编号。

例:用redirect=1代表跳转到xxx.com/homeredirect=2代表跳转到xxx.com/cart。服务器收到编号后,自己去查对应的合法地址,再执行跳转。这样攻击者改编号也没用(不知道哪个编号对应哪个地址)。

3.限制"内部跳转",禁止跳外部

如果网站不需要跳转到外部域名,就明确规定:只能在自己的域名内跳转(比如xxx.com下的页面),一旦发现跳转地址包含其他域名,直接拦截。

4.加个"确认页"

在跳转前,给用户一个提示:"即将跳转到xxx网站,是否继续?"让用户有机会发现异常(比如看到要跳转到陌生网站,就取消操作)。

十、总结

URL跳转漏洞的本质,是服务器对"跳转地址"的校验太松懈,让攻击者有机可乘。它不像支付漏洞那样直接影响金钱,但却能通过钓鱼等方式间接危害用户的信息和财产安全。

对于普通用户:点击链接后,如果发现跳转的页面和预期不符(比如突然出现陌生登录框),一定要提高警惕,别轻易输入信息。

对于开发者:记住"客户端传来的跳转地址都不可信",用白名单、编号映射等方法,让服务器牢牢控制跳转目标。只有这样,才能挡住那些"恶意导航员"。

本文是「Web安全基础」系列的第 8 篇,点击专栏导航查看全部系列内容。

相关推荐
大咖分享课8 小时前
多租户系统中的安全隔离机制设计
人工智能·安全·安全隔离
荔枝吻8 小时前
软件异常读写威胁硬盘安全:从过往案例到防护之道
安全·硬盘
小马爱打代码8 小时前
Spring Boot 接口安全设计:接口限流、防重放攻击、签名验证
网络·spring boot·安全
北极光SD-WAN组网11 小时前
工业互联网时代,如何通过混合SD-WAN提升煤炭行业智能化网络安全
网络·安全·web安全
深圳安锐科技有限公司12 小时前
基坑渗压数据不准?选对渗压计能实现自动化精准监测吗?
安全·自动化·自动化监测·大坝监测·渗压计
落鹜秋水13 小时前
Cacti命令执行漏洞分析(CVE-2022-46169)
web安全·网络安全
Arwen30314 小时前
解密国密 SSL 证书:SM2、SM3、SM4 算法的协同安全效应
算法·安全·ssl
dingzd9514 小时前
通过 Web3 区块链安全评估,领先应对网络威胁
安全·web3·区块链·facebook·tiktok·instagram·clonbrowser
Safe network access15 小时前
2023江苏省第二届数据安全技能大赛决赛题
安全·ctf
未来之窗软件服务17 小时前
网站访问信息追踪系统在安全与性能优化中的关键作用——网络安全—仙盟创梦IDE
安全·web安全·性能优化·仙盟创梦ide·东方仙盟