【Web安全】URL跳转漏洞:XSS与未授权访问延伸危害

文章目录

前言

【Web安全】逻辑漏洞之URL跳转漏洞:原理、场景与防御已经对URL跳转漏洞进行了基础的介绍,但是近期在渗透中发现由该漏洞引发其他形式的问题,因此本文进行补充。

一、漏洞跳转的三种核心实现方式

URL跳转漏洞的触发不局限于常规的链接参数跳转,核心依托以下三种服务端/客户端跳转方式,只要跳转地址由用户可控参数生成,且无严格校验,就可能存在漏洞

  1. Header头跳转 :服务端通过返回Location响应头实现跳转,如Location: https://xxx.com/home,是登录/注册后跳转的最常见方式,也是参数篡改的主要目标;
  2. Javascript跳转 :前端通过window.location.hrefwindow.open等JS代码执行跳转,若跳转地址拼接了用户可控参数,可直接篡改触发漏洞;
  3. META标签跳转 :通过HTML的<meta http-equiv="refresh" content="0;url=xxx">标签实现自动跳转,多出现于静态页面、广告落地页,参数可控时同样存在风险。

二、URL跳转的常规危害:钓鱼攻击

最常见的利用形式为正常域名(登录/注册页)+恶意跳转地址,攻击者利用用户对官方域名的信任,构造带篡改参数的合法域名链接,诱导用户点击后跳转到钓鱼、带毒页面,核心场景为:

  • 登录页:https://official.com/login?redirectUrl=https://hack.com/fake-login
  • 注册页:https://official.com/reg?jump=https://hack.com/virus
    用户在官方页面完成操作后,被无缝跳转到恶意地址,进而导致账号密码、敏感信息被盗,这是URL跳转漏洞的基础危害,也是最易被发现的利用形式。

三、URL跳转的危害升级:未授权访问与越权操作

当跳转参数未做权限校验内网地址拦截 时,漏洞不再局限于钓鱼,可直接实现越权访问高权限页面未授权访问内网资源 ,这是比钓鱼更具破坏性的利用方式,核心依托服务端/浏览器的身份凭证携带特性:浏览器会将当前域名的Cookie、登录凭证自动携带至跳转后的同域/内网地址,服务器以此判定用户身份,若跳转地址无额外权限验证,直接触发未授权/越权。

3.1 越权访问:跳转至高权限页面

适用场景 :网站登录后跳转仅校验登录状态,未校验用户角色/权限,跳转参数可篡改至管理员、会员等高权限页面。
攻击示例

  1. 普通用户访问官方登录页:https://official.com/login?redirectUrl=https://official.com/user
  2. 篡改跳转参数为管理员后台:https://official.com/login?redirectUrl=https://official.com/admin
  3. 普通用户完成登录后,被直接跳转到/admin页面,因浏览器携带了登录凭证,且后台未对跳转入口做权限校验,实现低权限用户越权访问高权限页面

3.2 未授权访问:跳转至内网页面/接口

适用场景 :服务端未拦截内网IP(127.0.0.1/192.168相关)、本地端口,跳转参数可直接指向服务器仅能访问的内网资源。
攻击示例

  1. 攻击者构造登录页跳转链接:https://official.com/login?redirectUrl=http://192.168.1.100:8080/manager
  2. 用户点击后在官方域名完成登录,浏览器携带登录凭证跳转到内网管理台地址;
  3. 外网无法直接访问192.168.1.100:8080,但通过官方域名的跳转漏洞 ,借由浏览器的凭证携带特性,实现外网未授权访问内网资源,包括内网后台、数据库管理界面、本地敏感接口。

四、URL跳转的另一核心危害:触发XSS跨站脚本攻击

当跳转参数的校验逻辑仅限制域名,未过滤伪协议 时,攻击者可通过构造javascript伪协议地址 ,让跳转动作执行恶意JS代码,触发存储型/反射型XSS,这是URL跳转与XSS的结合利用,无需跳转至外部域名,在当前官方域名内即可执行攻击

4.1 核心测试Payload

直接篡改跳转参数为javascript伪协议,触发弹窗测试即可验证漏洞:

复制代码
redirectUrl=javascript:alert(document.domain)
jump=javascript:alert(document.cookie)
url=javascript:eval(atob('YWxlcnQoMSk=')) // 编码后的JS代码,绕过简单过滤

4.2 利用场景与危害

  1. 反射型XSS:构造带伪协议参数的官方链接,诱导用户点击,跳转时执行JS代码,盗取用户Cookie、登录凭证;
  2. 结合钓鱼:通过JS代码在官方页面内嵌入钓鱼浮窗,无需跳转到外部地址,隐蔽性更高;
  3. 页面篡改:执行JS代码修改官方页面内容,诱导用户进行转账、输入银行卡信息等操作。

4.3 触发条件

  1. 跳转方式为Javascript跳转META标签跳转时,伪协议执行成功率最高;
  2. Header头跳转对伪协议的支持度较低,但部分服务器未做协议过滤时,仍可触发;
  3. 服务端未对跳转参数做协议校验(仅允许http/https)。

五、测试方法

5.1 测试工具:BurpSuite Collaborator 模块

BurpSuite的Collaborator模块可生成唯一外带链接,用于快速验证URL跳转漏洞,无需自己搭建测试服务器,步骤如下:

  1. 打开BurpSuite,进入Burp Collaborator模块,点击Copy to clipboard复制生成的外带链接;
  2. 找到目标网站的跳转参数(redirectUrl/url/jump等),将参数值替换为复制的外带链接;
  3. 访问篡改后的链接,若Collaborator模块收到DNS请求/HTTP请求,说明跳转漏洞存在;
  4. 该方法可批量测试多个跳转点,且能有效避免使用常见域名(如baidu.com)被网站黑白名单拦截的问题。

5.2 分场景测试步骤(覆盖钓鱼、未授权、XSS)

5.2.1 测试钓鱼/外部跳转漏洞

  1. 用Collaborator外带链接替换跳转参数,验证是否能跳转到外部域名;
  2. 若被拦截,尝试绕过技巧:@符号(https://official.com@hack.com)、IP代替域名、加//#后缀(https://hack.com/#)。

5.2.2 测试未授权/越权访问漏洞

  1. 篡改跳转参数为目标网站的高权限页面(/admin//vip),登录普通账号后访问,验证是否能直接跳转;
  2. 篡改跳转参数为内网地址(127.0.0.1:8080/192.168.1.1),访问后验证是否能打开内网资源。

5.2.3 测试XSS漏洞

  1. 直接将跳转参数替换为javascript:alert(document.domain),访问后看是否弹出弹窗;
  2. 若被过滤,尝试对JS代码进行Base64编码空格替换alert (1))、关键字变形aLerT),绕过简单的字符拦截。

六、URL跳转漏洞的强化防御方案(针对XSS与未授权访问)

在基础防御(白名单、编号映射)的基础上,针对XSS未授权访问 的延伸危害,补充落地性防御措施,核心原则:协议白名单+地址白名单+权限校验+内网拦截

  1. 严格限制跳转协议 :仅允许http/https协议,过滤javascript/file/ftp等伪协议,从根源杜绝XSS;
  2. 内网地址严格拦截 :服务端添加内网IP黑名单,拒绝跳转到127.0.0.0/8192.168.0.0/1610.0.0.0/8172.16.0.0/12等内网段;
  3. 跳转地址叠加权限校验 :针对后台、会员等高权限页面,即使是合法的同域跳转,也需在校验登录状态的基础上,额外校验用户角色/权限,防止越权;
  4. 白名单细化至路径 :将跳转白名单从"域名级别"细化至"路径级别",如仅允许跳转到https://official.com/user/https://official.com/home,禁止跳转到/admin等敏感路径;
  5. 统一跳转实现方式 :优先使用Header头跳转 ,并对Location头做严格校验,减少Javascript跳转和META标签跳转的使用,降低前端篡改风险;
  6. 参数值做长度与格式校验 :限制跳转参数的长度,过滤特殊字符(如@/javascript:/</>),防止参数篡改和绕过。

七、总结

URL跳转漏洞的危害远不止钓鱼攻击,其与XSS的结合利用未授权/越权访问的延伸危害,能直接突破网站的权限边界和内网防护,造成更严重的信息泄露和服务器被控制风险。

测试时需跳出"仅测试外部跳转"的思维,重点验证伪协议利用内网/高权限页面跳转 ;防御的核心不是简单的"拦截外部域名",而是实现协议、地址、权限的三重校验,从参数输入到跳转执行,全程拒绝信任用户可控内容。

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

相关推荐
憧憬成为web高手2 小时前
xss学习记录--xss-lab部署
前端·学习·xss
zhouping@3 小时前
[羊城杯2020]easyphp
web安全·php
观书喜夜长3 小时前
XSS 入门实战:反射型、存储型、DOM 型原理与防御(DVWA 靶场)
学习·web安全
文刀竹肃3 小时前
SQLi-Labs Less-4 通关教程(双引号+括号字符型GET注入)
安全·web安全·网络安全
Wcbddd3 小时前
OpenClaw自动化渗透测试初试牛刀
运维·web安全·自动化·好靶场·好靶场wp
文刀竹肃3 小时前
Upload-Labs 第1至第10关通关教程(更新中。。。)
网络·安全·web安全·网络安全
观书喜夜长3 小时前
web网络安全-每日一练-Training-WWW-Robots
学习·web安全
程序员敲代码吗3 小时前
探索Vite:新潮流下的前端开发未来
前端·xss
漏洞谷2 天前
白帽子为什么几乎都绕不开 httpx:一款 HTTP 资产探测工具的技术价值
web安全·漏洞挖掘·安全工具