URL重定向漏洞全面解析与利用技巧
一、漏洞原理
URL重定向漏洞是由于程序员过度信任攻击者输入而导致网站将用户重定向到非预期站点的安全缺陷。这种漏洞通常通过以下方式实现:
- URL参数(如
redirect_to、url等) - HTML
<meta>刷新标签 - DOM中window对象的location属性
典型的重定向流程:
- 用户访问包含重定向参数的URL(如
https://www.example.com/?redirect_to=https://www.target.com) - 服务器接收GET请求并检查重定向参数
- 服务器返回302/301/303/307/308状态码和Location头
- 浏览器根据响应重定向到指定URL
二、漏洞挖掘思路
常见出现位置
- 用户登录/退出/统一身份认证处
- 点击跳转/用户分享功能
- 站点内跳转点:
- 注册/登录页面
- 修改密码流程
- 注销账号功能
- 支付成功后的跳转
常见跳转参数名
redirect, redirect_to, redirect_url, url, jump, jump_to,
target, to, link, linkto, domain, returnurl, sourceurl,
linkurl, fromurl, reurl
三、绕过技术详解
1. 问号(?)绕过
原URL:http://www.aaa.com/abc?url=http://login.aaa.com
绕过方式:http://www.aaa.com/abc?url=http://test.com?login.aaa.com
效果:实际跳转到http://www.test.com/?login.aaa.com
2. 斜杠绕过
正斜杠(/)
http://www.aaa.com/abc?url=http://test.com/login.aaa.com
反斜杠(\)
- 双反斜杠:
http://test.com\\login.aaa.com - 单反斜杠:
http://test.com\login.aaa.com - 反斜杠加点:
http://test.com\.login.aaa.com
3. @符号绕过
http://www.aaa.com/abc?url=http://login.aaa.com@test.com
注:Firefox会有弹窗提示,Chrome可直接跳转
4. 井号(#)绕过
http://www.aaa.com/abc?url=http://test.com#login.aaa.com
5. 白名单缺陷利用
原理:白名单检查不严格(如仅检查是否包含特定字符串)
示例:
- 合法:
http://www.aaa.com/abc?url=http://login.aaa.com - 绕过:
http://www.aaa.com/abc?url=http://testaaa.com
若白名单仅检查"aaa.com",攻击者可注册testaaa.com域名
6. 多重跳转绕过
http://www.aaa.com.abc?url=http://login.aaa.com/abc?url=http://evil.com
7. 点击触发绕过
某些系统在用户交互(如点击登录按钮)后才执行跳转,即使修改了URL参数,表面看似无效,但实际点击后会触发跳转。
8. POST参数跳转
常见于表单提交流程:
- 上传图片后进入预览步骤
- 修改POST参数中的图片URL为恶意地址
- 预览时图片无法加载
- 管理员点击查看图片时触发跳转
9. xip.io绕过(SSRF场景)
http://127.0.0.1.xip.io 可绕过某些内网访问限制
10. 协议转换
//www.example.com@www.baidu.comwww.example.com@www.baidu.com//
11. 可信站点超链接利用
利用被搜索引擎收录的域名:
- 构造
site:evil.com搜索 - 通过百度302跳转间接实现重定向
四、其他重定向方式
1. META标签重定向
<meta http-equiv="refresh" content="1;URL=http://www.evil.com">
2. SVG文件重定向
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<svg onload="window.location='http://www.example.com'"
xmlns="http://www.w3.org/2000/svg">
</svg>
五、实战案例
案例1:购物商城后台
漏洞URL:www.xxx.xxx.com/oauta/authurl/?targeturl=www.gongyinglian.xxx.xxx.cn
利用:修改为www.xxx.xxx.com/oauta/authurl/?targeturl=www.baidu.com
案例2:视频分享二维码
- 生成视频分享二维码时抓包
- 修改视频地址为
https://www.baidu.com - 刷新后扫码即跳转到百度
案例3:微信跳转
https://xxxxx.weixin.qq.com/security/readtemplate?t=w_security_center_website/w_tcaptcha&url=http://www.baidu.com
六、自动化工具
UrlRedirectScan (Burp插件)
- 自动捕获Burp流量
- 自动Fuzzing测试跳转参数
- 将成功案例展示在UI界面
- GitHub地址:https://github.com/FridaZhbk/UrlRedirectScan
七、综合绕过方法汇总
www.xxx.com:80@baidu.com
www.xxx.com#@baidu.com
www.xxx.com @baidu.com
www.xxx.com\www.baidu.com
www.xxx.com\\www.baidu.com
www.xxx.com?www.baidu.com
www.xxx.com#www.baidu.com
evil.com\.url
www.evil.com。www.attacker.com
www.evil.com%E3%80%82www.attacker.com
https:attacker.com
https:/attacker.com
http:/\/\attacker.com
//attacker.com
\/\/attacker.com/
%0D%0A/attacker.com
#attacker.com
@attacker.com
attacker%00.com
http://{domain}@attacker.com
http://attacker.com#{domain}
http://attacker.com%00{domain}
https://attacker.com\{domain}/
https://attacker.com\.{domain}
www.evil.com%E3%80%AE@www.baidu.com
八、防御建议
- 严格验证重定向目标URL
- 使用白名单机制并完整匹配域名
- 避免使用用户输入直接作为跳转目标
- 对重定向操作增加二次确认
- 记录所有重定向操作日志
通过全面理解这些技术和案例,安全测试人员可以更有效地发现和验证URL重定向漏洞,同时帮助开发人员构建更安全的跳转机制。