理论基础
-
URL重定向漏洞
URL跳转漏洞,也叫开放重定向漏洞。URL 跳转漏洞是指后台服务器在告知浏览器跳转时,未对客户端传入的重定向地址进行合法性校验,通过修改恶意站点的 URL 值,攻击者可能成功发起网络钓鱼诈骗并窃取用户凭据。
-
进行URL跳转的常见方式
a 标签跳转、meta 标签内跳转、JavaScript 跳转、header 头跳转
- URL重定向漏洞成因
- 代码层忽视 URL 跳转漏洞,或不知道/不认为这是个漏洞。
- 代码层过滤不严,用去取子串、取后缀等方法简单判断,代码逻辑可以被绕过。
- 对传入参数操作(域名剪切/拼接/重组)和判断不当,导致绕过
- 原始语言自带的解析 URL,判断域名的函数库出现逻辑漏洞或者意外特性
- 服务器/容器特性、浏览器登对标准 URL 协议解析处理等差异性导致被绕过
- URL重定向漏洞测试示例
- 在测试页面发现可能存在URL重定向漏洞的链接:
http://www.aaa.com/bbb?url=http://ccc.com
- 修改参数
url
进行测试,看是否产生跳转:http://www.aaa.com/bbb?url=http://www.qq.com
- 若成功跳转到QQ(或其他测试网站),且能成功访问页面,则判断存在URL重定向漏洞。
- 在测试页面发现可能存在URL重定向漏洞的链接:
- URL重定向常见攻击点(测试点)
- 用户登录、统一身份认证、认证完进行跳转。
- 用户分享、收藏内容跳转。
- 跨站点认证、授权后。
- 站内其它链接跳转。
- 注册、注销、修改密码等。
- 账户切换、保存设置。
- URL重定向漏洞危害
- 钓鱼攻击:攻击者可以利用URL重定向漏洞,在看似官方的网站上诱导用户访问涉黄涉赌非法网站、下载恶意软件或执行其他恶意操作等。
- 窃取用户信息:攻击者可以伪造一个看起来和原网站相似的假冒网站,诱使用户输入敏感信息,如用户名、密码、银行账户等,从而窃取用户的信息。
- XSS漏洞: 通过
javascript:alert(0)
或 CRLF; - 获取用户权限:伪造钓鱼网站、窃取登录凭证 token;
- 绕过检测:窃取 CSRF token, 绕过 SSRF, RCE 和名单
- 高级利用方法:配合其他功能 / 漏洞
-
URL重定向测试常用Payload
https://baidu.com http://baidu.com http://www.example.com.baidu.com https://www.example.com.baidu.com http://baidu.com/www.example.com https://baidu.com/www.example.com http://www.example.com?url=http://baidu.com https://www.example.com?url=https://baidu.com /baidu.com //baidu.com ///baidu.com baidu.com ///baidu.com//.. baidu.com//.. http://www.example.com@www.baidu.com https://www.example.com@www.baidu.com http://www.baidu.com\www.example.com https://www.baidu.com\www.example.com http://www.baidu.com#www.example.com https://www.baidu.com#www.example.com http://www.baidu.com?www.example.com https://www.baidu.com?www.example.com http://www.baidu.com\\www.example.com https://www.baidu.com\\www.example.com .baidu.com .baidu 127.0.0.1 127.0.0.1:80 http://localhost https://localhost 0x7f.0.0.1 0 0.0.0.0 dict://127.0.0.1:80 file://etc/passwd //example.com@google.com/%2f.. ///google.com/%2f.. ///example.com@google.com/%2f.. google.com/%2f.. https://google.com/%2f.. https://example.com@google.com/%2f.. /https://google.com/%2f.. /https://example.com@google.com/%2f.. //google.com/%2f%2e%2e //example.com@google.com/%2f%2e%2e ///google.com/%2f%2e%2e ///example.com@google.com/%2f%2e%2e google.com/%2f%2e%2e /http://example.com /http:/example.com /https:/%5cexample.com/ /https://%09/example.com /https://%5cexample.com /https:///example.com/%2e%2e /https:///example.com/%2f%2e%2e /https://example.com /https://example.com/ /https://example.com/%2e%2e /https://example.com/%2e%2e%2f /https://example.com/%2f%2e%2e /https://example.com/%2f.. /https://example.com// /https:example.com /%09/example.com /%2f%2fexample.com /%2f%5c%2f%67%6f%6f%67%6c%65%2e%63%6f%6d/ /%5cexample.com /%68%74%74%70%3a%2f%2f%67%6f%6f%67%6c%65%2e%63%6f%6d /.example.com //%09/example.com //%5cexample.com ///%09/example.com ///%5cexample.com %09/example.com %5cexample.com /example.com /example.com/ \;@example.com example.com/
注:使用时将example替换为原地址,作者自用的Payload字典包含了FUZZ测试,使用者需要自行判断。
- URL重定向漏洞预防
- 使用黑、白名单进行过滤。
- 在可能的情况下,让用户提供在服务器端映射到完整目标 URL 的短名称、ID 或令牌。
- 不允许将 URL 作为目标的用户输入。
- 如果无法避免用户输入,请确保提供的值有效、适用于应用程序,并且已为用户授权。
- 从应用程序中删除重定向功能,并将指向它的链接替换为指向相关目标 URL 的直接链接。
实践学习
漏洞环境以Pilot靶场为例:下载地址与部署教程
-
进入漏洞页面后,打开F12元素,并指向图片:
-
发现图片通过链接远程加载,考虑该URL是否可以恶意跳转。
-
抓包后,点击该图片,发现存在重定向:
-
在请求包修改重定向链接到
http://www.baidu.com
,发现可以成功跳转到百度页面: