web基础漏洞-url重定向漏洞
1、介绍
url重定向漏洞,是指攻击者可以控制用户的浏览器中的url形式参数,并被解析执行,造成危害。
2、场景
2.1 跳转
使用户信任新跳转的站点,进行钓鱼
- 3xx location字段
- js跳转
- form跳转
- 超链接a
2.2 引入资源
利用:钓鱼,引入脚本,向外部请求提供referer
- script
- style
- link
- iframe
- img
- audio等
2.3 发送消息
可以是向攻击者传递敏感信息,也可以是对目标域伪造请求
- form表单
- ajax
- 任意url
3、补充
3.1 参数位置
- 请求中携带参数,响应直接写入
- 响应js读取地址栏,获取参数
- 多次请求-响应,中间过程将参数在请求中携带、或者在地址栏存储,或者保存到cookie或localstorageh中。
3.2 参数形式
- 完整url
- 去除协议部分,甚至只有域名部分
- 相对路径或绝对路径
4、防护
(1)尽量使用完整url,方便检查
(2)前端或后端涉及到url参数时,严格检查其hostname
5、发现测试
(1)发现url形式参数
可能是在url的直接参数、地址栏的参数、cookie值、html元素的属性或值、localstorage
(2)分析参数使用过程
可能是请求携带,响应的location头部字段包含,也可能是作为响应中ajax地址、一般元素的属性、js变量、cookie字段
参数可能不经过请求响应,直接在客户端的地址栏直接参数或hash,然后由js处理
需要注意,攻击者如何控制该参数
(3)完整url-绕过
- 测试参数url的直接参数,写入当前url,以绕过仅直接的域名包含检查
- 测试参数url的hostname的顶级域名。尤其是xxx.com.cn绕过xxx.com。以绕过仅主域名的检查
- 测试参数url的hostname的主域名作为新的主域名的后缀,比如www.abc.com和www.testabc.com
- 测试参数url的hostname的现有域名作为新域名的子域名部分,比如www.abc.com和www.abc.com.test.com
- 测试参数url的hostname以当前hostname作为username,比如www.abc.com和www.abc.com@www.test.com
- 有时候参数仅有域名,也可以进行测试
- 有时候参数仅为相对路径,可以测试直接设置为绝对路径,或者将前面的待拼接路径使用@拼接,使原域名作为username部分
一方面,通过检查响应是否包含测试的核心payload,比如test,进行分析。另一方面,考虑结合浏览器,根据是否请求自定义域名判断
(4)非完整url
- 直接设置为完整url,参考以上方法进行绕过
- 构造username,进行绕过
6、实战经验
值得一提的是,某次测试过程中,同时检查了url的主机名需要包含特定后缀,还检查了url整体需要包含特定域名的字符串
所以,最终构造时,在参数部分去设置url整体检查的内容