漏洞原理 | 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,暴力破解等等

 

应急响应笔记

学习路线

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

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

相关文章

Netty中的内置通信模式、Bootstrap和ChannelInitializer

内置通信传输模式 NIO:io.netty.channel.socket.nio 使用java.nio.channels包作为基础–基于选择器的方式Epoll:io.netty.channel.epoll由JNI驱动的epoll()和非阻塞IO.这个传输支持只有在Linux上可用的多种特性&#xff0c;如果SO_REUSEPORT&#xff0c;比NIO传输更快&#xf…

layui表格中使用cascader后导致表格滚动条消失

修改前&#xff0c;受影响页面 修改后最终想要的效果 修改方法

TIM编码器接口(编码器测速)

定时器编码器接口自动计次--------->对应手册14.3.12编码器接口模式 应用场景&#xff1a; 电机控制PWM驱动电机&#xff0c;编码器测电机速度&#xff0c;PID算法闭环控制 ------------------------------------------------------------------------------------------…

Java IO详解

一、流的概念与作用 流(Stream)&#xff1a; 在Java IO中&#xff0c;流是一个核心的概念。流从概念上来说是一个连续的数据传输过程。人们根据数据传输特性将流抽象为各种类&#xff0c;方便更直观的进行数据操作。你既可以从流中读取数据&#xff0c;也可以往流中写数据。流的…

计算机毕业设计SSM基于的高校学习资源共享系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; vue mybatis Maven mysql5.7或8.0等等组成&#xff0c;B…

Camtasia2023破解版下载

Camtasia2023破解版是一款简单好用的屏幕录像软件&#xff0c;它结屏幕录制和录制视频编辑等功能于一身&#xff0c;不管是用来创建视频教程还是相关教学视频或者操作演示等都是不二的选择&#xff0c;软件支持录制全屏或者部分区域进行选择录制&#xff0c;可录制网络摄像头、…

DTAN: Diffusion-based Text Attention Network for medical imagesegmentation

DTAN:基于扩散的医学图像分割文本关注网络 摘要 在当今时代&#xff0c;扩散模型已经成为医学图像分割领域的一股开创性力量。在此背景下&#xff0c;我们引入了弥散文本注意网络(Diffusion text - attention Network, DTAN)&#xff0c;这是一个开创性的分割框架&#xff0c…

第五节笔记:LMDeploy 大模型量化部署实践

大模型部署背景 参数用FP16半精度也就是2字节&#xff0c;7B的模型就大约占14G 2.LMDeploy简介 量化降低显存需求量&#xff0c;提高推理速度 大语言模型推理是典型的访问密集型&#xff0c;因为是decoder only的架构&#xff0c;需要token by token的生成&#xff0c;因…

【数据结构排序算法篇】----基数排序【实战演练】

作为一名对技术充满热情的学习者&#xff0c;我一直以来都深刻地体会到知识的广度和深度。在这个不断演变的数字时代&#xff0c;我远非专家&#xff0c;而是一位不断追求进步的旅行者。通过这篇博客&#xff0c;我想分享我在某个领域的学习经验&#xff0c;与大家共同探讨、共…

鸿蒙语言ArkTS(更好的生产力与性能)

ArkTS是鸿蒙生态的应用开发语言 ArkTS提供了声明式UI范式、状态管理支持等相应的能力&#xff0c;让开发者可以以更简洁、更自然的方式开发应用。 同时&#xff0c;它在保持TypeScript&#xff08;简称TS&#xff09;基本语法风格的基础上&#xff0c;进一步通过规范强化静态检…

Quantitative Analysis: PIM Chip Demands for LLAMA-7B inference

1 Architecture 如果将LLAMA-7B模型参数量化为4bit&#xff0c;则存储模型参数需要3.3GB。那么&#xff0c;至少PIM chip 的存储至少要4GB。 AiM单个bank为32MB&#xff0c;单个die 512MB&#xff0c;至少需要8个die的芯片。8个die集成在一个芯片上。 提供816bank级别的访存带…

贪心第一天,别太贪了

今天是贪心第一天&#xff0c;做376. 摆动序列时脑子都要干烧了&#xff0c;贪心的题还是很有意思的&#xff0c;对于理论知识&#xff0c;我觉得做题的时候就想这两个问题吧&#xff1a; 如何找到局部最优解呢&#xff1f;用这个局部最优解模拟示例后能通过吗&#xff1f; 455…