记URL重定向漏洞骚技巧

news2024/12/23 19:39:49

0x1 前言

这几天跟着我那几个师傅们在学习URL重定向漏洞,学习了比较多的对于这个漏洞的骚技巧,以及在挖掘edusrc漏洞和企业src相关的URL重定向漏洞时的一些技巧和不错的思路。

最近在跟我那几个师傅们研究学习URL重定向漏洞,然后在一些厂商项目中开始接触到一些url任意重定向,虽然是低危,奖金较低,但是一个厂商所有点的url跳转加起来奖金也比较可观,所以将自己挖掘过程中一点点心得分享一下。

经典钓鱼网站

来看个最典型的

<?php
$url=$_GET['URL'];
header("Location: $url");
?>

先走个流程说些废话,url重定向漏洞也称url任意跳转漏洞,网站信任了用户的输入导致恶意攻击,url重定向主要用来钓鱼,比如url跳转中最常见的跳转在登陆口,支付口,也就是一旦登陆将会跳转任意自己构造的网站,如果设置成自己的url则会造成钓鱼。

URL没有任何限制,所以恶意用户可以提交

http://www.aaa.com/login.php?...://www.bbb.com(钓鱼网站)

来生成自己的恶意链接,安全意识较低的用户很可能会以为该链接展现的内容是http://www.aaa.com从而可能产生欺诈行为

成功跳转到百度

0x2 URL重定向漏洞描述

也称URL跳转、URL重定向漏洞,由于目标网站未对程序跳转的URL地址及参数做合法性判断,导致应用程序直接跳转到参数中指定的的URL地址。攻击者可通过将跳转地址修改为指向恶意站点,即可发起网络钓鱼、诈骗甚至窃取用户凭证等。

常见应用场景

主要是业务逻辑中需要进行跳转的地方。比如登录处、注册处、访问用户信息、订单信息、加入购物车、分享、收藏等处。

下面我要给师傅们分享的URL重定向漏洞就是在给别人分享一个二维码,通过bp抓包然后篡改里面的URL跳转地址,然后导致扫描的二维码直接跳转到恶意地址,从而导致一个URL重定向src成功执行。

url跳转常见出现的地方

1. 登陆跳转我认为是最常见的跳转类型,认证完后会跳转,所以在登陆的时候建议多观察url参数
2. 用户分享、收藏内容过后,会跳转
3. 跨站点认证、授权后,会跳转
4. 站内点击其它网址链接时,会跳转
5. 在一些用户交互页面也会出现跳转,如请填写对客服评价,评价成功跳转主页,填写问卷,等等业务,注意观察url。
6. 业务完成后跳转这可以归结为一类跳转,比如修改密码,修改完成后跳转登陆页面,绑定银行卡,绑定成功后返回银行卡充值等页面,或者说给定一个链接办理VIP,但是你需要认证身份才能访问这个业务,这个时候通常会给定一个链接,认证之后跳转到刚刚要办理VIP的页面。

url跳转常用参数

redirect
url
redirectUrl
callback
return_url
toUrl
ReturnUrl
fromUrl
redUrl
request
redirect_to
redirect_url
jump
jump_to
target
to
goto
link
linkto
domain
oauth_callback

漏洞危害

  1. 攻击者可能会使用Web服务器攻击其他站点;
  2. 如果对输出没有做严格限制,将可能导致反射性XSS漏洞;
  3. 黑产将利用此漏洞,从信任网站跳转到攻击者构造的恶意网站用来进行钓鱼、诈骗等行为;

修复建议

  1. 严格控制将要跳转的域名,如果某个业务事先已经确定将要跳转的网站,最稳妥的方式是将其直接编码在源代码中,通过URL中传入的参数来映射跳转网址。
  2. 严格验证跳转URL参数的有效性、合法性。
  3. 校验传入的URL参数是否为可信域名。

0x3 漏洞原理

漏洞原理一:

Url重定向是程序员误信了攻击者的输入而将网站重定向到另一个站点,这通常通过url参数、HTML<meta>刷新标签、DOM中的window对象的location属性来实现的

很多Web 网站都是通过在原始 URL 的参数中设置目标 URL 来有意实现用户访问的重定向的。应用程序通过使用这个参数来告诉浏览器向目标 URL 发送一个GET请求,,例如,假定百度网站具有重定向到 Email 的功能,就可以通过访问如下URL 实现:

https://www.baidu.com/?redirect_to=https://www.Email.com

在这种情况下,当我们访问上面的 URL时,百度网站会接收到一个HTTP 的GET 请求,然后依据 redirect_to 参数中指定的值来确定将你的浏览器重定向到哪里。在这之后,百度 网站服务器会返回一个用于指示浏览器重定向用户的 HTTP响应状态码。通常,这个状态码是302,但有时也可能是 301、303、307 或 308。
这些 HTTP 响应状态码告诉浏览器请求的网页找到了,但是需要浏览器发起一个 GET请求到redirect_to 参数值,https://www.email.com/这个参数值也在HTTP 响应Location 头中。Location 头表示了向哪里重定向 CET 请求。
现在,假设攻击者修改了原始的 URL,如下所示:

https://www.baidu.com/?redirect_to=https://www.diaoyuwangzhan.com

如果百度没有验证 redirect_ to参数是否为其将访问者重定向到一个自有合法站点,攻击者就可以将该参数的值换成它们自己的 URL。
结果是,HTTP 响应可能会引导浏览器向 https://www.diaoyuwangzhan.com发起 GET 请求。一旦攻击者已经引导用户到他们的恶意网站,就可以发起进一步的攻击。

漏洞原理二:

HTML<meta>标签和 JavaScript 都可以重定向浏览器。HTML<meta>标签可以告知浏览器刷新网页,并向标签中的content属性定义的URL发起GET请求。

下面是一一个例子:

<meta http-equiv="refresh" content="0; ur1=https://www. Baidu.com/">

content属性定义了浏览器发起HTTP请求的两个步骤。首先,content 属性定义了浏览器在向URL发起HTTP请求前需要等待的时间,在本例中,这个时间是0秒。
其次,content属性确定了浏览器向其发起GET请求的网站中URL的参数,在本例中,这个参数是https://www.baidu.com.

当我们具有控制<meta>标签的content属性的能力时,或者通过其他漏洞能够注人他们自己的标签时,就可以利用这种重定向行为。

漏洞原理三:

JavaScript修改文档对象模型(DOM)中window对象的location属性来实现重定向用户。DOM是用于HTML和XML文档的API.它允许开发者修改网页的结构、风格和内容。

因为location属性表示了请求将被重定向到哪里,浏览器将立刻解释JavaScript脚本并重定向到指定的URL.我们可以通过如下形式的JavaScript脚本修改window的location属性:

window. location = https://www.baidu. com/

window.location.href = htts:/www.baidu.com

window. location.replace(htts://ww. baidu.com)

使用条件:我们必须要拥有执行js的权限才行(获取js权限的方法大家应该知道)

0x4 漏洞猎杀

测试方法与出现位置

方法1:直接观看get请求注意参数
Url= redirect= next= r= u=

方法2:使用Burp查看包含url跳转的get历史请求。

出现地方:登录框的时候抓数据包 直接参加get参数

案例一:

下面这个案例是前段时间我跟我师傅一起研究的一个src的案例,这个URL重定向漏洞还是蛮经典的,是当我我在一个企业的购物商城的卖家后台发现的漏洞,当时我们在浏览时突然发现一个get参数是跳转到货物供应链的:

www.xxx.xxx.com/oauta/authurl/?targeturl=www.gongyinglian.xxx.xxx.cn

我们可以看见参数targeturl?=后面跟着跳转的参数,然后我们将参数修改为http://www.baidu.com 即可跳转到百度 而百度bai.du的域和这个企业的购物商城的域完全不同了,也就是这样,然后也就是拿到了这个企业商城的一个URL重定向漏洞了。

案例二:

下面这个是这几天我在一个视频播放器的一个应用中找到的这个漏洞,也是一个URL重定向漏洞,下面给师傅们分享下这个漏洞的过程以及宝贵的实战经验哈。

该漏洞场景是对一个视频分享它会生成一个二维码跳转到我们要分享的视频,可我们可以在生成二维码的时候进行抓包导致ur跳转漏洞。

1、首先我这里给分享视频地址生成的二维码

这个分享二维码的url如下:

www.xxx.xxx.com/aiis/h5/pc-client/#/qrcode?url=https%3A%2F%2Fn.com%2Faiis%2FinvestmentAdvisor

2、修改该地址为 https://www.baidu.com 修改完成后,刷新该界面

3、然后就直接使用我们的手机扫描二维码,直接跳转到修改的地址

到以上为止,两个URL重定向漏洞案例都已经分享完成了

0x5 总结

本篇文章主要是先从URL重定向的简介来给大家介绍,然后再给大家介绍下这个漏洞的一些常见的手法以及原理。然后给师傅们详细分析了下URL重定向漏洞原理,希望对师傅们有帮助。
最后面拿了两个真实的实战案例给师傅们分享了一下,主要是分享URL重定向更改它的URL,然后以http://www.baidu.com 为例,给师傅们演示下这个跳转的过程。
最后,希望这篇文章对师傅们有帮助,关注我,下次给师傅们分享更多的实战案例!!!

文章中涉及的敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打码处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,一旦造成后果请自行承担!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2085738.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EHS综合管理解决方案落地:管理效率飞升70%!

所有制造企业都面临着一个问题&#xff1a;如何保证EHS制度高质、高效执行&#xff1f;——上海斯歌EHS综合管理解决方案应运而生。 前不久&#xff0c;上海斯歌EHS综合管理解决方案&#xff08;企业安环综合管理解决方案&#xff09;在某全球领先的汽配公司成功落地&#xff0…

安灯系统在汽车电子工厂应用案例汇总

在汽车电子工厂中&#xff0c;高效的生产管理和及时的问题解决至关重要。安灯系统作为精益制造执行中的核心工具也是 MES 制造执行系统的重要组成部分&#xff0c;为汽车电子工厂带来了显著的效益。安灯系统是一个面向制造业生产现场&#xff0c;快速联络生产、物料、维修、主管…

VSCode中TypeScript调试配置

一、背景 最近想用TypeScript编译项目&#xff0c;在创建完项目后&#xff0c;我发现VSCode只有在调试TypeScript的单个文件时生效&#xff0c;如果存在引用&#xff0c;再进行断点调试&#xff0c;则调试功能不生效了。 随后&#xff0c;我让Chatgpt 生成一个一套配置&#…

C语言基础(二十五)

栈排序不是最高效的方法&#xff0c;因为栈是一种后进先出&#xff08;LIFO, Last In First Out&#xff09;的数据结构&#xff0c;而排序要求根据元素的顺序&#xff08;如升序或降序&#xff09;重新排列。但是&#xff0c;可以利用栈的特性&#xff0c;结合其他排序算法的思…

group by 中一定要包含 select 中的 除聚合函数以外 的 所有字段

今天在项目过程中报错&#xff1a; ### SQL: SELECT UNIT_NAME,dc.CAPTION as area,ifnull(a.bgSum,0) AS bgSum,ifnull(concat(FORMAT(a.bgSum/k.m*100,1),%),0.0%) as bgRatio FROM inspection_station_info isi left join dic_content dc on dc.CODE_VALUE…

K 线图快速绘制教程:使用 KLineChart 展示 DolphinDB K 线

KLineChart 是一款开源、简单易用、适用场景丰富的 Web 前端金融图表&#xff0c;基于 html5 canvas 构建&#xff0c;零依赖压缩包仅 40K&#xff0c;非常轻量。它可以用于渲染金融 K 线图&#xff0c;同时支持多种数据源&#xff0c;提供了丰富的交互功能以及指标计算接口。由…

动物消消乐:Scratch消除类游戏作品

小虎鲸Scratch资源站-免费Scratch作品源码,素材,教程分享平台! 体验《动物消消乐》&#xff0c;开启欢乐消除之旅&#xff01; 在这个快节奏的时代&#xff0c;放松心情、享受乐趣显得尤为重要。小虎鲸Scratch资源站为您带来了全新的游戏体验——《动物消消乐》。这款游戏不仅…

【CTF Web】BUUCTF Upload-Labs-Linux Pass-01 Writeup(JS分析+代码审计+文件上传)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的&#xff0c;专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关&#xff0c;每一关都包含着不同上传方式。 注意 1.每一关没有固定的…

上班摸鱼的人怎么治理?只要5个步骤让员工服服帖帖,打造干净职场

在职场中&#xff0c;我们时常会遇到一些同事在上班时间“摸鱼”&#xff0c;比如浏览与工作无关的网站、玩游戏、聊天等。这些行为不仅影响了工作效率&#xff0c;还可能损害团队的整体氛围和企业的利益。那么&#xff0c;如何有效地治理这种“摸鱼”现象呢&#xff1f;今天&a…

鸿蒙ArkTS小案例-购物车

最近用鸿蒙的ArkTS做了一个购物车的小案例&#xff0c;在这里分享一下&#xff0c;该购物车已实现如下功能&#xff1a; 1. 购物车商品数量支持1个或者多个 2. 勾选1个或者多个商品后&#xff0c;底部可以动态计算出购买总数量和总价格 3. 同时&#xff0c;可以对购买商品的…

SpringBoot对接Midjourney Api

提示&#xff1a;SpringBoot对接Midjourney Api 文章目录 目录 文章目录 后端代码 导包 controller层 工具类层 前端代码 申请API 测试结果 后端代码 导包 <!--添加hutool的依赖--><dependency><groupId>cn.hutool</groupId><artifactId&g…

IoT客户端+联邦学习微调大模型

大型模型的训练涉及到微调&#xff0c;微调则面临着高质量数据的稀缺性。与基于集中式数据中心的解决方案相比&#xff0c;物联网-IoT中大型模型的更新面临着分布式客户端私有且异构数据的协调挑战。为了解决这一挑战&#xff0c;作者提出了KOALA来推动物联网中大模型的训练。由…

单线程Redis:Redis为什么这么快

1 Redis是不是单线程 Redis 使用后台线程执行耗时的 I/O 操作&#xff0c;以免阻塞主线程 bio_close_file&#xff1a;后台 I/O 线程之一&#xff0c;异步关闭文件 bio_aof_fsync&#xff1a;后台 I/O 线程之一&#xff0c;异步地将 AOF&#xff08;Append Only File&#xff…

C++系列-STL容器之vector

STL概念 vector基本概念vector与数组的区别vector容器的特点动态大小连续存储自动扩容尾部操作高效 vector动态扩展的含义vector常用的接口示意 vector的构造函数vector赋值操作重载赋值assign赋值 vector的容量和大小vector的插入和删除vector数据存取vector互换容器vector互换…

音视频入门基础:WAV专题(7)——FFmpeg源码中计算WAV音频文件每个packet的size值的实现

一、引言 从文章《音视频入门基础&#xff1a;WAV专题&#xff08;6&#xff09;——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道&#xff0c;通过FFprobe命令可以显示WAV音频文件每个packet&#xff08;也称为数据包或多媒体包&#xff09;的信息&#xff0…

VMware16安装包+详细安装教程

VMware Workstation Pro16.0安装 安装包下载&#xff1a; 通过百度网盘分享的文件&#xff1a;VMware16.0.rar 链接&#xff1a;https://pan.baidu.com/s/1ZSWns5kJYUmhpZFjuKXqrQ?pwdv7s2 提取码&#xff1a;v7s2右键解压之后的安装包【VMware-workstation-full-16.0.0-16…

FrameNet介绍——从同义词语义知识库到框架语义知识库

FrameNet 是一个为期三年的项目&#xff0c;获得了 NSF&#xff08;美国国家科学基金会&#xff09;的支持&#xff0c;专注于基于语料库的计算词典编纂。 项目特点 FrameNet承诺使用语料库证据&#xff08;corpus evidence&#xff09;来进行语义和句法的概括&#xff1b; 并…

网络基础-实现在Windows系统下的socket环境地址通信

实现客户端和服务端的数据交互 1.写所要实现功能的声明&#xff08;封装在tcpsocket.h文件&#xff09; #ifndef TCPSOCKET_H #define TCPSOCKET_H//在Windows下进行网络编程&#xff0c;需要引入Windows的socket库 #include <winsock2.h> //做一些预编译工作&#xff…

MyBatis结果集复杂映射超详细版(一对多关系映射)

目录 1.一对多关系映射 1.1创建两个表&#xff1a;goods表与goods_class表 1.2xml文件中两部分&#xff1a;与(存放SQL语句)1.3数据库中&#xff1a;测试SQL语句&#xff0c;涉及到的知识点&#xff1a;左连接 1.一对多关系映射 1.1创建两个表&#xff1a;goods表与goods_c…

C++对C的扩充(8.28)

1.使用C手动封装一个顺序表&#xff0c;包括成员数组1个&#xff0c;成员变量n个 代码&#xff1a; #include <iostream>using namespace std;//类型重命名 using datatype int; #define MAX 30struct seqList { private: //私有权限datatype *data; //相当于 …