web漏洞挖掘指南-前端跨域漏洞

news2024/11/16 19:23:37

web漏洞挖掘指南

前端跨域漏洞

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉【入门&进阶全套282G学习资源包免费分享!】

一、何为跨域

1.设想一种场景,一个恶意网站上嵌入了一个iframe标签去加载银行的登陆页面,高度和宽度的设置和真实的银行官网一样,当用户访问恶意网站并登录时,攻击者就可以利用恶意脚本通过XMLHttpRequest之类的dom操作窃取用户的银行卡数据,为了防止防御此类攻击,同源策略诞生了!

2.同源策略规定不同域的客户端脚本如果没有明确授权允许执行,不能读写另一方的资源。同协议,同端口,同主机名的两个URL才能被认为同源。

3.随着web应用前后端分离模式的流行,后端开发写完业务功能的代码后需要提供接口给前端用,而前后端域名往往是不一致的,这时请求就会被同源策略限制,为了更方便地共享这些的跨域资源,开发者们又设计出了CORS、jsonp等方式来完成跨域请求。

二、跨域请求发生的场景

1.其实除了前后端分离的场景需要实现跨域请求,也会有其他常见的场景要用到跨域请求:

2.某集团的非主营业务需要调用主站用户的账号信息,并将其数据显示出来

3.某宝、某东需要从第三方物流公司调用运单详情

4.本地开发程序时,本地文件夹不是在域名下面,要测试接口功能时可能需要发送ajax请求,这时也需要用到跨域请求

5.加载第三方网站上的图片,css样式,js等资源,有三个标签可以直接跨域访问这类资源:、、

三、CORS跨域漏洞

1.CORS,跨域资源共享(Cross-origin resource sharing),这种机制通过添加HTTP字段的方式规定服务器资源允许被哪些域访问(Access-Control-Allow-Origin)、请求中是否允许发送cookie(Access-Control-Allow-Credentials)、哪些请求类型是被允许的(Access-Control-Request-Method)等等。

2.其中最为重要的是Access-Control-Allow-Origin标头,当这一字段设置为 时表示服务器资源允许被任何域访问,当然如果需要请求用户信息这类的资源,cookie也是必须带上的,所以Access-Control-Allow-Credentials字段值要设置成true。但是当如果配置成Access-Control-Allow-Origin:* Access-Control-Allow-Credentials: true ,这种会被浏览器默认禁止导致无法利用,最好利用的配置可以参考如下请求:
在这里插入图片描述
3.如果将Origin请求头改为evil.cn,响应头中有Access-Control-Allow-Origin头,并允许evil.cn读取cookie访问服务器资源,这类配置往往是存在跨域配置错误且最好利用的。

4.综上所述,不难发现CORS跨域漏洞出现的请求包特征,burp中可以自动添加Origin头去寻找CORS配置错误,勾选如下默认配置→history中筛选带有cors配置错误的特征即可:

在这里插入图片描述
5.当然,网上也有师傅写了自动搜集CORS请求的burp插件,可以对history中的请求先做一个过滤,后续再做利用:[https://github.com/p1g3/JSONP-Hunter][0] ,使用方法可参考Tips:[https://zone.huoxian.cn/d/318-burpjsonpcors][1]。xray也可以扫描这类漏洞,但是很少用xray去扫,因为很多cors请求读取的并不是敏感信息,这类漏洞交到SRC大概率是要被忽略的,我们需要人工判断响应数据中的数据是否足够敏感,xray默认配置即可扫描CORS:

在这里插入图片描述
6.发现存在错误配置的CORS请求后,还需考虑请求是否有refer校验,因为跨域漏洞的触发和csrf是类似的,需要通过交互让受害者访问我们的恶意脚本,如果因为refer校验不通过还需要进一步bypass。这也是大多数SRC让提供有效poc的原因。js代码编写经验较少的师傅可以用工具生成poc:[https://github.com/0verSp4ce/PoCBox][0],本地搭建好后在图示处填入相关数据后即可生成poc code,可以选择online test,也可以将poc code保存为html后本地访问,验证是否可以读取响应数据:

在这里插入图片描述

四、jsonp跨域漏洞

1.相较CORS跨域而言,jsonp跨域算老方法了,浏览器兼容性比较好,他发送的不是ajax请求,而是利用了

2.从jsonp跨域的实现方式来看,其请求过程就不难理解了。服务器先封装好一个回调函数,客户端通过类似调用脚本的方式传递一个callback参数给服务端,来调用跨域服务器上动态生成的json后缀文件,服务端返回数据时会将这个callback参数作为函数名来包裹住json数据,这样客户端就可以通过函数名来获取对应的数据了。

3.综上所述,不难发现,jsonp跨域请求过程中,回调函数起着至关重要的作用,我们可以通过回调函数名的特征去寻找jsonp请求,如:callback,cb,jsonpCallback,jsonpcb等等。网上也有写好的burp插件来完成jsonp请求收集的步骤:https://github.com/p1g3/JSONP-Hunter/blob/master/Jsonp_Hunter.py 使用参考Tips:https://zone.huoxian.cn/d/318-burpjsonpcors 图示处可自定义回调函数名等特征:

在这里插入图片描述
4.jsonp请求如果没有用refer进行限制,是可以被用来劫持的,同样可以用PoCBox生成POC进行漏洞验证和利用,以下为利用jsonp读取用户信息实例: 接口地址:http://xxx/user/getUserInfo?callback=jQuery224001622079386685593_1628667945545&uid=xxx

5.online test:
在这里插入图片描述

五、前端跨域漏洞与CSRF的区别

1.刚开始学跨域漏洞时,我也会有同样的疑问,网上对于同源策略限制的解释众说纷纭,有的说SOP是用来防XSS和CSRF的,当然更多的是说限制跨域请求的,基于安全考虑,当前域不能访问其他域的资源。那么同源策略到底能不能防止CSRF呢?

2.说说我的个人看法:说到底,同源策略只是一种限制策略,并不是禁止请求,如果有恶意脚本请求了跨域资源,那么同源策略会拦截掉响应数据,让其无法对数据进行读取。然而,csrf漏洞的本质其实是伪装成受害者去完成请求,能不能读取返回数据并不重要。如果这样说很难理解,也可以结合漏洞场景来看:

3.常见跨域漏洞的请求:读取用户信息、调用第三方平台数据。

4.常见CSRF漏洞的请求:密码重置、修改用户信息、银行转账。

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉【入门&进阶全套282G学习资源包免费分享!】

网络安全工程师(白帽子)企业级学习路线

第一阶段:安全基础(入门)

在这里插入图片描述

第二阶段:Web渗透(初级网安工程师)

在这里插入图片描述

第三阶段:进阶部分(中级网络安全工程师)

在这里插入图片描述

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉【入门&进阶全套282G学习资源包免费分享!】

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

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

相关文章

求臻医学:重磅 共识发布

共识发布 近日,我国首个《胃癌分子残留病灶检测与临床应用中国专家共识(2023版)》[1](以下简称“共识”)正式发表于《中华消化外科杂志》。 该共识由中国医师协会外科医师分会上消化道外科医师专家工作组发起&#xf…

【leetcode】2530.执行k次操作后的最大分数

前言 每次都取最大值的策略我是知道的&#xff0c;排序的时间复杂度太高&#xff0c;用栈也不行。没想到c里面已经内置了优先队列priority_queue 代码 #include<iostream> #include<algorithm> #include<vector> #include<stack> #include<queue…

从零开始了解协同OA办公系统,一篇文章就够了!

随着现代企业管理的不断发展&#xff0c;越来越多的企业开始关注协同OA办公系统&#xff0c;以提高工作效率和降低成本。但是&#xff0c;很多企业对协同OA办公系统并不了解&#xff0c;甚至不知道该如何开始使用。本文将从零开始&#xff0c;为大家详细介绍协同OA办公系统。 一…

.npmrc 使用详解

配置.npmrc之后需要&#xff1a; 清理项目目录中的 node _modules 目录(package-lock.json,umi)。清理 node cache: npm cache clear --force&#xff1b;{ 此步骤必须&#xff0c;主要是大家的电脑经过多年使用后&#xff0c;npm 配置比较混乱&#xff0c;为了避免或者减少配…

虚实融合 智兴百业 | 赵捷副市长莅临拓世科技集团筹备展台指导,本月19号!拓世科技集团与您相约世界VR产业大会

新时代科技革命中&#xff0c;虚拟现实技术、5G和“元宇宙”概念崛起&#xff0c;助力全球范围内的数字经济和产业转型。我国也正迈向高质量发展攻坚阶段&#xff0c;在中部腹地的江西&#xff0c;政府结合全球技术趋势和自身发展需求&#xff0c;选择虚拟现实为新的经济增长点…

SpringBoot集成Lettuce客户端操作Redis

目录 一、前言二、基础集成配置&#xff08;redis单节点&#xff09;2.1、POM2.2、添加配置文件application.yml2.3、编写配置文件2.4、编写启动类2.5、编写测试类测试是否连接成功 一、前言 spring-boot-starter-data-redis有两种实现 lettuce 和 jedis&#xff0c;spring bo…

【Vue项目】通过设置全局的异常处理来统一处理后端返回的异常

文章目录 简介方法一创建统一异常处理模块使用axios拦截器处理异常在页面中使用异常处理 方法二创建全局异常处理函数在main.js中配置全局异常处理在网络请求中捕获异常 方法三创建全局异常处理插件在main.js中注册全局异常处理插件在网络请求中捕获异常 总结 简介 在Vue项目中…

PaddleX解决分类、检测两大场景问题?实战精讲教程来了!

AI技术加速数字化进程&#xff0c;从制造、交通、能源等基础行业&#xff0c;到医疗、城市、零售、家居等与人们日常生活息息相关的行业&#xff0c;AI技术推动了数字化变革&#xff0c;也不断赋能于千行百业&#xff0c;但产业落地实践中依然面临着数据、算法等诸多困难。为了…

SOLIDWORKS motion如何创建动画

SOLIDWROKS motion是SOLIDWORKS中一个高性能的插件&#xff0c;它能够帮助工程师完成虚拟样机的仿真分析&#xff0c;motion既可以对众多的机械结构进行运动学和动力学仿真&#xff0c;同时在SOLIDWROKS motion中也可以完成样机动画制作。今天我们就来看看SOLIDWOKRS motion是如…

7款最佳的图片编辑App

无论你是设计师需要调整界面图片大小&#xff0c;还是摄影师需要剪图片&#xff0c;追求完美的比例&#xff0c;还是日常照片&#xff0c;需要P图片&#xff0c;或多或少会有剪图片的需求&#xff0c;如何选择一个简单和轻的剪图软件应用程序&#xff0c;不是一件容易的事情。本…

数据结构与算法-栈和队列小练习

&#x1f31e; 这里给大家分享一道栈的练习和一道队列的练习&#xff01; &#x1f388;1.练习一 利用栈的基本操作实现将任何一个十进制整数转化为R进制整数。 &#x1f52d;1.1栈的初始化 Sqstack::Sqstack() {base top new SElemType[InitStacksize];stacksize InitStac…

Golang笔记

01 = 和 := 的区别? 前者是赋值变量,后者是定义变量 02 指针的作用 指针指向变量的地址,在64位机器上占8个字节 【1 字节(Byte)= 8 位(bit) 1 千字节(KB,Kilobyte)= 1,024 字节(2^10 字节)】 作用 取址然后取值swap函数 交换变量的值指针接收器来改变结构体里面…

C#实现文本生成音频文件并播放

本文将使用C#实现一个简单的winfrom窗体应用程序&#xff0c;可以自定义文本转换为声音进行播放&#xff0c;生成音频文件。采用Microsoft提供的SpeechSynthesizer类来实现这个功能。 首先需要在代码中引用System.Speech.Synthesis命名空间&#xff0c;就可以使用SpeechSynthes…

项目管理与SSM框架(二)| Spring

Spring简介 Spring是一个开源框架&#xff0c;为简化企业级开发而生。它以IOC&#xff08;控制反转&#xff09;和AOP&#xff08;面向切面&#xff09;为思想内核&#xff0c;提供了控制层 SpringMVC、数据层SpringData、服务层事务管理等众多技术&#xff0c;并可以整合众多…

量化:概率统计基础

文章目录 分布四个矩 分布 将股票收益率看作一个随机变量。如中国平安某段时间涨跌幅分布如下 四个矩 一阶矩&#xff1a;即均值&#xff0c;在统计学中叫做期望。 二阶矩&#xff1a;即方差&#xff0c;反映了数据偏离均值的程度。 偏度&#xff1a;衡量随机变量分布的左右…

VSCode远程开发插件,值得一试

今天给大家介绍一下 VS Code 实现远程办公的方法。 1、概 述 通常&#xff0c;我们都是每天到工作的办公室进行办公&#xff0c;但是&#xff0c;如果下班回家&#xff0c;或者出差&#xff0c;此时如果马上需要重要的文件&#xff0c;或者升级一下代码&#xff0c;是不…

NetCore/Net8下使用Redis的分布式锁实现秒杀功能

目的 本文主要是使用NetCore/Net8加上Redis来实现一个简单的秒杀功能&#xff0c;学习Redis的分布式锁功能。 准备工作 1.Visual Studio 2022开发工具 2.Redis集群&#xff08;6个Redis实例&#xff0c;3主3从&#xff09;或者单个Redis实例也可以。 实现思路 1.秒杀开始…

基于SVM+Webdriver的智能NBA常规赛与季后赛结果预测系统——机器学习算法应用(含python、ipynb工程源码)+所有数据集(一)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境Jupyter Notebook环境PyCharm环境MATLAB环境 模块实现1. 数据预处理1&#xff09;常规赛数据处理2&#xff09;季后赛数据处理 相关其它博客工程源代码下载其它资料下载 前言 本项目使用了从NBA官方网站获得的数…

基于SVM+Webdriver的智能NBA常规赛与季后赛结果预测系统——机器学习算法应用(含python、ipynb工程源码)+所有数据集(三)

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 数据预处理2. 特征提取3. 模型训练及评估1&#xff09;常规赛预测模型2&#xff09;季后赛模型创建 4. 模型训练准确率 相关其它博客工程源代码下载其它资料下载 前言 本项目使用了从NBA官方网站获得的数据&…

如何使用 Disco 将黑白照片彩色化

Disco 是一个基于视觉语言模型&#xff08;LLM&#xff09;的图像彩色化工具。它使用 LLM 来生成彩色图像&#xff0c;这些图像与原始黑白图像相似。 本文将介绍如何使用 Disco 将黑白照片彩色化。 使用 Disco 提供了一个简单的在线演示&#xff0c;可以用于测试模型。 访问…