web基础漏洞-url重定向漏洞

发布时间 2023-10-21 19:29:32作者: 挖洞404

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整体检查的内容