漏洞原理 | CORS跨域学习篇

0x01:原理

1、 什么是CORS

全称跨域资源共享,用来绕过SOP(同源策略)来实现跨域访问的一种技术。
CORS漏洞利用CORS技术窃取用户敏感信息

2、 同源策略简介

同源策略是浏览器最核心也是最基本的安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方的dom、cookie、session、ajax等操作的权限资源。
同源有三个条件:协议、域名、端口相同

3、 同源检测的示例

检测成功的之后同协议、同域名、同端口
 

图片


4、 漏洞产生原因

由于配置不当,Origin源未严格,从而造成跨域问题。Origin用于检测来自哪个域

5、 两种跨域的方式

JSONP跨域请求
    只能通过浏览器发送GET包,是一种利用HTML中<script></script>元素标签,远程调用json文件来实现数据传递技术,它的特点是可以跨域读取数据。

CORS跨域请求

    Cors允许浏览器向跨域服务器发出XmlHttpRequest请求,COSRS和JSONP的区别:CORS是JSONP的升级版,JSONP只能通过get方式请求,CORS支持get,post,head请求

6、 CORS的两种请求方式

简单请求
浏览器直接发出CORS请求,即浏览器自动在请求的header中加上Origin字段,告诉浏览器这个请求来自哪个源。服务器端收到请求后,会对比这个字段,如果这个源在服务器端的许可范围内,服务器的响应头会加上以下字段

 

·Access-Control-Allow-Origin:(这里的值为Origin的值) ·Access-Control-Allow-Credentials:true

非简单请求

预检请求,请求方式为OPTIONS,这个请求是来询问的,请求头要包含以下字段

 

·Origin:请求源 ·Access-Control-Request-Method:cors请求会用到的请求方式 ·Access-Control-Request-Headers:cors请求会额外发送的请求头字段

服务器收到预检请求后会检查上面三个字段的值确定是否允许跨区请求,如果任意一个字段不满足要求,都不允许进行跨域访问

7、 返回包头部的ACAO根据请求报文Origin生成

图片

8、 CORS漏洞与CSRF漏洞

    相同点

       (1)都需要借助第三方网站 

        (2)都需要借助ajax的异步过程

        (3)一般都需要用户登陆

    不同点

        (1)第三方网站可以利用CORS漏洞读取到受害者的敏感信息

        (2)第三方网站可以利用CSRF漏洞替受害者完成诸如转账等敏感操作

9、 简单的检测漏洞的方法

(1)选中Origin方法
 

图片


(2)然后来到历史,点击筛选器把方法写到红框处,进行筛选Access-Control-Allow-Origin: foo.example.org,剩下的就是可能存在CORS漏洞。发送的origin和返回的origin一样,acao为true,就存在漏洞。

图片

(3)Referer检查,这种情况下可以通过某处的xss漏洞进行绕过检查

图片

10、 常见的漏洞点

    (1)互联网厂商的api接口
    (2)聊天程序的api接口
    (3)区块链厂商
    (4)App的api

补充:
    CORS的规范中还提到了“NULL“源。触发这个源是为了网页跳转或者是来自本地HTML文件。
    目标应用可能会接受NULL源,并且这个可能被测试者利用,任何网站很容易使用沙盒iframe来获取null源

11、 为什么服务端会有这样的漏洞

    开发人员开发,调试,测试代码一般都在本地,有时候他们会调用线上服务器数据,所以这样的问题很隐蔽也很常见。

12、 CORS防御

    (1)不要配置”Access-Control-Allow-Origin”为通配符”*”,而且更重要的是,要严格校验来自请求数据数据包中的”Origin”的值
    (2)避免使用”Access-Control-Allow-Credentials:true”
    (3)减少”Access-Control-Allow-Methods所允许的方法”

0x02 本地环境搭建,获取信息

我在本地写了4个文件
其中demo1_1.html和demo2_1.php是本地服务器,demo3_1.php和sava.php是攻击者的脚本,需要钓鱼配合使用

图片

demo3_1.php代码

第一个箭头下的链接是攻击者保存的地址
第二个箭头下的链接是本地服务器的地址

图片

我到demo3_1.php去登陆

图片

他会跳转到demo2_1.php下,cookie也会带着到这里

图片

这时就可以构造钓鱼邮件发送给受害者去点击刷新

图片

F12查看,可以看到向外发起请求

图片

再回到文件处,发现创建了一个文件,这个文件里面就包含了所窃取的信息

图片

0x03 实战演示

Wordpress cors
1、 复现过程

影响版本:wordpress5.2.4。首先打开首页,抓包查看响应

图片

看到返回包的内容,返回了wp-json链接,然后复制这个链接,补全这个url,可以看到返回出来的json数据

图片


在请求包中加入origin头192.168.10.31,再次发送,发现响应消息中ACAO已经变成了origin的头,并且ACAC为true。从而证明了是存在cors跨域漏洞的。

图片


生成一个HTML内容,放入vps下,起一个名字。

图片


然后诱骗受害者点击,就会把json数据发送到你的服务器,从而获取对方的敏感信息

图片

 申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法。

免费领取安全学习资料包!


渗透工具

技术文档、书籍

面试题

帮助你在面试中脱颖而出

视频

基础到进阶

环境搭建、HTML,PHP,MySQL基础学习,信息收集,SQL注入,XSS,CSRF,暴力破解等等

应急响应笔记

学习路线

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智慧城市与绿色出行:共同迈向低碳未来

随着城市化进程的加速&#xff0c;交通拥堵、空气污染、能源消耗等问题日益凸显&#xff0c;智慧城市与绿色出行成为了解决这些问题的关键途径。智慧城市利用信息技术手段&#xff0c;实现城市各领域的智能化管理和服务&#xff0c;而绿色出行则强调低碳、环保的出行方式&#…

2.2 评估方法 机器学习

我们若有一个包含m个样例的数据集&#xff0c;若我们既需要训练&#xff0c;也需要测试&#xff0c;我们该如何处理呢&#xff1f;下面是几种方法&#xff1a; 2.2.1 留出法 “留出法”直接将数据集D划分为两个互斥的集合&#xff0c;其中一个作为训练集S&#xff0c;另一个作…

OpenGL-贴纸方案

OpenGL-贴纸方案 普通贴纸&#xff08;缩放、Z轴旋转、平移&#xff09; OpenGL环境说明 OpenGL渲染区域使用正交投影换算,正常OpenGL坐标是vertexData,这样的 Matrix.orthoM 进行换算 //顶点坐标&#xff08;原点为显示区域中心店&#xff09;private final float[] vertex…

软件应用实例,宠物医院处方笺模板实例,佳易王兽医电子处方开单管理系统软件操作教程

软件应用实例&#xff0c;宠物医院处方笺模板实例&#xff0c;佳易王兽医电子处方开单管理系统软件操作教程 一、前言 以下软件程序操作教程以佳易王兽医电子处方软件V17.0为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、兽医宠物店开电子处…

React进阶(Redux,RTK,dispatch,devtools)

1、初识Redux 是React最常用的集中状态管理工具&#xff0c;类似于Vue中的Pinia(Vuex)&#xff0c;可以独立于框架运行 作用&#xff1a;通过集中管理的方式管理应用的状态 案例-实现一个计数器 实现步骤&#xff1a; Redux管理数据的流程&#xff1a; state:一个对象&…

学生时期学习资源同步-1 第一学期结业考试题4

原创作者&#xff1a;田超凡&#xff08;程序员田宝宝&#xff09; 版权所有&#xff0c;引用请注明原作者&#xff0c;严禁复制转载

华为数通方向HCIP-DataCom H12-821题库(多选题:161-180)

第161题 以下关于IPv6优势的描述,正确的是哪些项? A、底层自身携带安全特性 B、加入了对自动配置地址的支持,能够无状态自动配置地址 C、路由表相比IPv4会更大,寻址更加精确 D、头部格式灵活,具有多个扩展头 【参考答案】ABD 【答案解析】 第162题 在OSPF视图下使用Filt…

WPF —— Calendar日历控件详解

1&#xff1a; Calendar的简介 日历控件用于创建可视日历&#xff0c;让用户选择日期并在选择日期时触发事件。 DisplayMode 用来调整日历显示模式&#xff0c;分为Month、Year 和Decade 三种。如下是None 2&#xff1a;Calendar控件常用的属性 SelectionMode 选中日历的类…

nginx学习记录-nginx初步配置

1. 虚拟机安装系统并配置网络 系统网上找个能用的镜像就行&#xff0c;我用的是阿里的镜像&#xff0c;地址是centos安装包下载_开源镜像站-阿里云 (aliyun.com) 以下是我本地的虚拟机配置 配置过程中按照提示操作系统即可。 安装好系统后&#xff0c;配置centos的ip&#x…

Ribbon简单使用

Ribbon是Netflix发布的云中间层服务开源项目&#xff0c;其主要功能是提供客户端实现负载均衡算法。Ribbon客户端组件提供一系列完善的配置项如连接超时&#xff0c;重试等。简单的说&#xff0c;Ribbon是一个客户端负载均衡器&#xff0c;我们可以在配置文件中Load Balancer后…

LiveGBS流媒体服务器中海康摄像头GB28181公网语音对讲、语音喊话的配置

LiveGBS海康摄像头国标语音对讲大华摄像头国标语音对讲GB28181语音对讲需要的设备及服务准备 1、背景2、准备2.1、服务端必备条件&#xff08;注意&#xff09;2.2、准备语音对讲设备2.2.1、不支持跨网对讲示例2.2.2、 支持跨网对讲示例 3、开启音频开始对讲4、搭建GB28181视频…

C++提高笔记(三)---STL容器(vector、deque)

1、vector容器 1.1vector基本概念 功能&#xff1a;vector数据结构和数组非常相似&#xff0c;也称为单端数组 vector与普通数组区别&#xff1a;不同之处在于数组是静态空间&#xff0c;而vector可以动态扩展 动态扩展&#xff1a;并不是在原空间之后续接新空间&#xff0…

ChatGPTPLUS、Poe、Claude介绍,以及如何订阅

我使用了FOmepay的556150卡段升级了ChatGPTPLUS、POE、Claude3 一、ChatGPT Plus 是什么&#xff1f; ChatGPT Plus 是基于 ChatGPT 的月订阅升级方案&#xff0c;它可以提供更快的回应速度、更高的可用性以及优先使用到新功能的权限。 ChatGPT Plus 和原版 ChatGPT 的差异 …

Pytorch实战01——CIAR10数据集

目录 1、model.py文件 &#xff08;预训练的模型&#xff09; 2、train.py文件&#xff08;会产生训练好的.th文件&#xff09; 3、predict.py文件&#xff08;预测文件&#xff09; 4、结果展示&#xff1a; 1、model.py文件 &#xff08;预训练的模型&#xff09; impor…

QGIS 开发之旅二《构建插件工程》

上一篇文章写了二次开发环境的构建&#xff0c;这一章我们从零开始构建插件工程&#xff0c;并理解下QIGIS 如何识别插件程序的。 1、创建QGIS 工程 新建项目&#xff0c;选择下面的空工程 工程创建成功后&#xff0c;是下面的样子&#xff0c;没有任何文件 2、配置QGIS工程 …

docker私有仓库-harbor的搭建

docker 官方提供的私有仓库 registry&#xff0c;用起来虽然简单 &#xff0c;但在管理的功能上存在不足。 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器&#xff0c;harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。harbor在docker di…

基于Java (spring-boot)的人才招聘系统

一、项目介绍 公司&#xff1a; IT公司的注册与管理 招聘要求的发布与维护 站内私信 求职者&#xff1a; 招聘需求浏览 招聘需求筛选&#xff08;按岗位、薪酬、城市、地区等&#xff09; 简历编辑&#xff0c;建立投递等 站内私信 管理员&#xff1a; 用户信息维护 岗…

vue学习笔记24-组件事件配合v-model使用

搜索时v-model绑定的search数据时时发生变化 watch侦听器时时监察变化&#xff0c;一旦数据发生变化 &#xff0c;就实时发送数据给父组件 子组件的完整代码&#xff1a; <template>搜索&#xff1a;<input type"text" v-model"search"> <…

数学建模【时间序列】

一、时间序列简介 时间序列也称动态序列&#xff0c;是指将某种现象的指标数值按照时间顺序排列而成的数值序列。时间序列分析大致可分成三大部分&#xff0c;分别是描述过去、分析规律和预测未来&#xff0c;本篇将主要介绍时间序列分析中常用的三种模型&#xff1a;季节分解…

通过对话式人工智能实现个性化用户体验

智能交流新时代&#xff1a;如何选择对话式人工智能产品 在快速发展的数字环境中&#xff0c;对话式人工智能正在彻底改变企业与客户互动的方式。 通过集成机器学习、自然语言处理和语音识别等先进技术&#xff0c;对话式人工智能可提供个性化、无缝的用户体验。 了解对话式人…