url跳转漏洞

发布时间 2023-04-16 11:18:22作者: 挖洞404

1、定义

url跳转是指的攻击者可以构造payload,使受害者用户在访问目标网站的时候,跳转到攻击者控制的站点,从而进行钓鱼活动。

2、发生场景

(1)攻击者提前将payload保存到服务端的数据库,或者上传包含某跳转的页面,或者篡改已知页面包含跳转。

这些情况有可能,但是一般意义不大。

(2)请求的url直接参数包含待跳转的url参数,响应后直接跳转。(利用的是用户对目标域名的信任,所以必须是url直接参数,而排除体部包含参数)

  • 3xx,location字段包含跳转url
  • 响应页面基于js自动跳转,比如location.href=
  • 非自动跳转,比如form的action,a的href被设置为跳转url,需要交互才跳转

(3)待跳转的url参数在地址栏hash等处,等待响应页面的js脚本读取后跳转

3、利用过程

测试发现url跳转漏洞,利用社交使受害者用户访问包含payload的url,受害者用户点击后跳转到攻击者控制的站点,进行钓鱼

4、测试步骤

(1)发现

  • 请求url中包含的参数值为url数据,一般参数名为return、return_url、back、url、back_url等
  • 响应状态码为3xx,响应包含location字段
  • 响应体部中包含location等可以发生跳转的js代码

(2)对url参数进行测试,篡改域名为目标站外的域名,假设目标站点为www.abc.com

  • 直接篡改为非关联域名,比如www.xxx.com
  • 域名中包含目标域名作为子域名部分,www.abc.com.xxx.com,www.abcxxx.com、www.xxxabc.com
  • 篡改目标域名的一级域名,www.abc.top
  • 在用户名中,或者参数中包含目标域名,www.abc.com@www.xxx.com/?url=http://www.xxx.com

5、防护

对重定向和跳转参数,服务端进行严格的检查,一般将url进行拆分,对域名部分进行白名单匹配,或者至少严格检查一二级域名

6、补充

和url跳转类似的,如果响应中form的action地址,script的src,iframe的src,以及ajax的地址可以被攻击者控制,

那么可能会发生用户将自身的数据提交到攻击者所控制的站点,与一般url转到的钓鱼有所区别。

但测试流程和防护是一样的。