url跳转漏洞及其它url参数形式漏洞

1、url跳转漏洞定义

如果用户基于url访问目标网站时,跳转到攻击者控制的站点,而未发觉此时域名的变化,或者即使发现但仍然相信,认为跳转后的页面也是属于目标网站,从而信任。

攻击者可以在控制的网站中进行钓鱼活动,比如输出错误信息,要求用户输入信息。

2、发生场景

(1)业务场景

发生url跳转的主要场景是,用户在访问目标网站的正常网页时,点击进行注册、登录等操作,完成操作后网站一般被设计为自动跳转到操作前的页面。

另一个可能的场景是,用户进行点击退出等操作时,被设计为执行后跳转到某页面,这个跳转过程由参数决定。

(2)跳转实现方式

  • 3xx,location字段包含跳转url
  • 响应页面基于js自动跳转,比如location.href=
location.href = 
top.href = 
open()
  • 非自动跳转,比如form的action,a的href被设置为跳转url,需要交互才跳转
<a href="">
<form action="">
<script src="">
<iframe src="">
<base href="">
...

(3)参数位置

利用的是用户对目标域名的信任,所以必须是url直接参数或者hash部分,而排除体部包含参数

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参数形式漏洞

与url相关漏洞类型,除了url跳转,还包括错误引入资源、错误发送消息、csrf和ssrf。

(1)错误引入资源

引入错误的脚本、图片、页面等资源

  • 引入攻击者控制的脚本文件,也存在https://c.paypal.com/v1/r/d/i?js_src=https://c.paypal.cn/da/r/f000b.js这种直接定义引入脚本的接口,响应是html形式。
  • 引入攻击者给的图片,可能是站外的,甚至可以是站内的。主要是用图片替换某些关键信息,比如联系方式,付款码等
  • 引入攻击者给的页面,主要是钓鱼攻击

(2)错误发送消息

用户将口令、敏感数据发送到攻击者控制的网站

  • 地址栏包含口令、密码等敏感信息,referer中携带发送到攻击者的站点
  • 作为ajax的地址,提交
  • 作为表单的地址,提交
  • 作为其他资源的地址,但是这些资源本身携带了token,提交

 

posted @ 2023-04-16 11:12  挖洞404  阅读(356)  评论(0编辑  收藏  举报