文章目录
- 前言
- 一、漏洞跳转的三种核心实现方式
- 二、URL跳转的常规危害:钓鱼攻击
- 三、URL跳转的危害升级:未授权访问与越权操作
-
- [3.1 越权访问:跳转至高权限页面](#3.1 越权访问:跳转至高权限页面)
- [3.2 未授权访问:跳转至内网页面/接口](#3.2 未授权访问:跳转至内网页面/接口)
- 四、URL跳转的另一核心危害:触发XSS跨站脚本攻击
-
- [4.1 核心测试Payload](#4.1 核心测试Payload)
- [4.2 利用场景与危害](#4.2 利用场景与危害)
- [4.3 触发条件](#4.3 触发条件)
- 五、测试方法
-
- [5.1 测试工具:BurpSuite Collaborator 模块](#5.1 测试工具:BurpSuite Collaborator 模块)
- [5.2 分场景测试步骤(覆盖钓鱼、未授权、XSS)](#5.2 分场景测试步骤(覆盖钓鱼、未授权、XSS))
-
- [5.2.1 测试钓鱼/外部跳转漏洞](#5.2.1 测试钓鱼/外部跳转漏洞)
- [5.2.2 测试未授权/越权访问漏洞](#5.2.2 测试未授权/越权访问漏洞)
- [5.2.3 测试XSS漏洞](#5.2.3 测试XSS漏洞)
- 六、URL跳转漏洞的强化防御方案(针对XSS与未授权访问)
- 七、总结
前言
在【Web安全】逻辑漏洞之URL跳转漏洞:原理、场景与防御已经对URL跳转漏洞进行了基础的介绍,但是近期在渗透中发现由该漏洞引发其他形式的问题,因此本文进行补充。
一、漏洞跳转的三种核心实现方式
URL跳转漏洞的触发不局限于常规的链接参数跳转,核心依托以下三种服务端/客户端跳转方式,只要跳转地址由用户可控参数生成,且无严格校验,就可能存在漏洞:
- Header头跳转 :服务端通过返回
Location响应头实现跳转,如Location: https://xxx.com/home,是登录/注册后跳转的最常见方式,也是参数篡改的主要目标; - Javascript跳转 :前端通过
window.location.href、window.open等JS代码执行跳转,若跳转地址拼接了用户可控参数,可直接篡改触发漏洞; - 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 越权访问:跳转至高权限页面
适用场景 :网站登录后跳转仅校验登录状态,未校验用户角色/权限,跳转参数可篡改至管理员、会员等高权限页面。
攻击示例:
- 普通用户访问官方登录页:
https://official.com/login?redirectUrl=https://official.com/user - 篡改跳转参数为管理员后台:
https://official.com/login?redirectUrl=https://official.com/admin - 普通用户完成登录后,被直接跳转到
/admin页面,因浏览器携带了登录凭证,且后台未对跳转入口做权限校验,实现低权限用户越权访问高权限页面。
3.2 未授权访问:跳转至内网页面/接口
适用场景 :服务端未拦截内网IP(127.0.0.1/192.168相关)、本地端口,跳转参数可直接指向服务器仅能访问的内网资源。
攻击示例:
- 攻击者构造登录页跳转链接:
https://official.com/login?redirectUrl=http://192.168.1.100:8080/manager - 用户点击后在官方域名完成登录,浏览器携带登录凭证跳转到内网管理台地址;
- 外网无法直接访问
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 利用场景与危害
- 反射型XSS:构造带伪协议参数的官方链接,诱导用户点击,跳转时执行JS代码,盗取用户Cookie、登录凭证;
- 结合钓鱼:通过JS代码在官方页面内嵌入钓鱼浮窗,无需跳转到外部地址,隐蔽性更高;
- 页面篡改:执行JS代码修改官方页面内容,诱导用户进行转账、输入银行卡信息等操作。
4.3 触发条件
- 跳转方式为Javascript跳转 或META标签跳转时,伪协议执行成功率最高;
- Header头跳转对伪协议的支持度较低,但部分服务器未做协议过滤时,仍可触发;
- 服务端未对跳转参数做协议校验(仅允许http/https)。
五、测试方法
5.1 测试工具:BurpSuite Collaborator 模块
BurpSuite的Collaborator模块可生成唯一外带链接,用于快速验证URL跳转漏洞,无需自己搭建测试服务器,步骤如下:
- 打开BurpSuite,进入
Burp Collaborator模块,点击Copy to clipboard复制生成的外带链接; - 找到目标网站的跳转参数(redirectUrl/url/jump等),将参数值替换为复制的外带链接;
- 访问篡改后的链接,若Collaborator模块收到DNS请求/HTTP请求,说明跳转漏洞存在;
- 该方法可批量测试多个跳转点,且能有效避免使用常见域名(如baidu.com)被网站黑白名单拦截的问题。
5.2 分场景测试步骤(覆盖钓鱼、未授权、XSS)
5.2.1 测试钓鱼/外部跳转漏洞
- 用Collaborator外带链接替换跳转参数,验证是否能跳转到外部域名;
- 若被拦截,尝试绕过技巧:
@符号(https://official.com@hack.com)、IP代替域名、加//#后缀(https://hack.com/#)。
5.2.2 测试未授权/越权访问漏洞
- 篡改跳转参数为目标网站的高权限页面(
/admin//vip),登录普通账号后访问,验证是否能直接跳转; - 篡改跳转参数为内网地址(
127.0.0.1:8080/192.168.1.1),访问后验证是否能打开内网资源。
5.2.3 测试XSS漏洞
- 直接将跳转参数替换为
javascript:alert(document.domain),访问后看是否弹出弹窗; - 若被过滤,尝试对JS代码进行Base64编码 、空格替换 (
alert (1))、关键字变形 (aLerT),绕过简单的字符拦截。
六、URL跳转漏洞的强化防御方案(针对XSS与未授权访问)
在基础防御(白名单、编号映射)的基础上,针对XSS 和未授权访问 的延伸危害,补充落地性防御措施,核心原则:协议白名单+地址白名单+权限校验+内网拦截。
- 严格限制跳转协议 :仅允许
http/https协议,过滤javascript/file/ftp等伪协议,从根源杜绝XSS; - 内网地址严格拦截 :服务端添加内网IP黑名单,拒绝跳转到
127.0.0.0/8、192.168.0.0/16、10.0.0.0/8、172.16.0.0/12等内网段; - 跳转地址叠加权限校验 :针对后台、会员等高权限页面,即使是合法的同域跳转,也需在校验登录状态的基础上,额外校验用户角色/权限,防止越权;
- 白名单细化至路径 :将跳转白名单从"域名级别"细化至"路径级别",如仅允许跳转到
https://official.com/user/https://official.com/home,禁止跳转到/admin等敏感路径; - 统一跳转实现方式 :优先使用Header头跳转 ,并对
Location头做严格校验,减少Javascript跳转和META标签跳转的使用,降低前端篡改风险; - 参数值做长度与格式校验 :限制跳转参数的长度,过滤特殊字符(如
@/javascript:/</>),防止参数篡改和绕过。
七、总结
URL跳转漏洞的危害远不止钓鱼攻击,其与XSS的结合利用 和未授权/越权访问的延伸危害,能直接突破网站的权限边界和内网防护,造成更严重的信息泄露和服务器被控制风险。
测试时需跳出"仅测试外部跳转"的思维,重点验证伪协议利用 和内网/高权限页面跳转 ;防御的核心不是简单的"拦截外部域名",而是实现协议、地址、权限的三重校验,从参数输入到跳转执行,全程拒绝信任用户可控内容。
本文是「Web安全基础」系列内容,点击专栏导航查看全部系列内容。