一篇文章教会你企业SRC捡洞之CORS(教程+实战案例)
0x01 前言
提到CORS这个漏洞,刚开始可谓是让本安服仔恨的牙痒痒,因为笔者还是个脚本小子的时候,用扫描器总是能扫出一堆的CORS,但是因为当时菜的抠脚,只会拿着扫描器 biubiubiu,哪里懂漏洞的深度利用啊,但是随着笔者挖洞技术的深化,并且在后面的实战中多次遇到,发现这玩意在挖洞特别是在企业SRC中简直是躺着捡钱啊,所以今天写下这篇文章,有错误之处希望大家及时指出,提前谢谢各位🐮子哥
0x02 漏洞介绍
在我看来,学习一个新知识,肯定要先从它的名字看起
CORS,中文名称跨域资源共享
现在问题来了,首先第一个问题,神马是跨域
第二个问题,神马是资源共享
搞清楚这两个问题,我相信这个漏洞也不是啥难事了
当然,在正式内容开始之前呢,还是要补充一些基础知识,说到这里我就要吐槽一下,要想挖Web漏洞的一个绝对前提就是,要对Web的基础绝对到位,最近宣传课程加了几位🐮子哥,一问http协议是什么都不清楚,就想着上手挖洞了,这一点很不好嗷
上面提了两个问题,我们首先来看第一个,神马是跨域,当然在跨之前呢,还是先搞清楚什么是域,要不然情况都没搞清楚就想往过跨,容易把🥚扯了。
当然,先问一下伟大的ai
哦
原来Origin(域) = 协议 + 域名 + 端口
当然,在这里也引出另外一个基础概念,叫做同源策略
一句话来总结就是在浏览器中,只有当协议、域名、端口相同的情况下,才能读写对方的dom、cookie、session、ajax等操作的权限资源。
原来如此,搞清楚同源策略与域之后,那情况就非常明了了
并且此时呢,第二个问题也解决了,共享的资源文件包括对方的dom、cookie、session、ajax请求等等
总结一下,一般情况下,不同源的网页是没办法拥有对方的权限资源的,但是在二般情况下,不同源的网页想拥有对方的权限资源怎么办
伟大的前端提供了两种方式
第一种就是标准的跨域请求机制,也就是我们本文中重点介绍的CORS
第二种是JSONP跨域请求,当然这里也存在漏洞,我们下期展开讲讲
本来呢,前端是好心提供的跨域请求机制,但是为什么会出现漏洞呢,坏就坏在了配置上
浏览器直接发出CORS请求,接下来浏览器会自动在请求的header中加上Origin字段,告诉服务器这个请求来自哪个源。
Origin:服务器端收到请求后,会对比这个字段,如果这个源在服务器端的许可范围内,服务器的响应头会加上以下字段
Access-Control-Allow-Origin:(这里的值为Origin的值)Access-Control-Allow-Credentials:true如下图所示
如果说服务端配置了 Access-Control-Allow-Origin 响应头,并且浏览器认可该值,跨域就被允许了,此时漏洞也产生了
讲完了原理,我们再来总结一下
本来呢,CORS是浏览器用来****允许前端 JS 向不同域请求资源的一个安全机制。默认情况下,浏览器出于同源策略的限制,不允许 JavaScript 跨域读取接口数据。但是如果服务端错误地配置了跨域规则,那么就会导致一些很危险的事情产生
0x03 实战案例
好了,啰嗦了半天,直接上某SRC实战案例看一下
该接口是用户登录之后,下载个人信息文件的一个接口,在请求包中发现了Origin字段,通过修改该字段查看服务器回显,发现服务端对 Origin 头没有验证,直接反射原样回显:
然后构造好攻击的poc
(async () => { try { const res = await fetch("http://xxxx/download", { method: "POST", credentials: "include", headers: { "Content-Type": "application/json" }, body: "{}" }); if (!res.ok) { alert("请求失败,状态码:" res.status); return; } const data = await res.json(); alert("窃取的数据:\n" JSON.stringify(data, null, 2)); } catch (error) { alert("请求异常:" error.message); }})();找到一个外部页面通过 JavaScript 发送如下跨域请求
最终的攻击效果
当然,这个案例中还有一些更敏感的接口也可以被攻击,在这里就不一一展示,总之这个洞现在出现的概率也挺大,在一些SRC中一般都是低危甚至中危,还是不错滴
0x04 实战怎么挖
接下来就来到最重要的一个环节,实战中怎么挖?
其实关于CORS漏洞利用,就注意下面四个点
当然burp中提供的功能,能帮我们去探测
首先,选中Origin方法
然后在burp http历史包的选项中
点击筛选器把方法写到红框处,进行筛选Access-Control-Allow-Origin: foo.example.org,剩下的就是可能存在CORS漏洞。发送的origin和返回的origin一样,acao为true,就存在漏洞
至于定位具体数据包之后,还要看响应中是否携带敏感信息,如果携带的话就可以提交了
你学废了吗
学习资源
如果你是也准备转行学习网络安全(黑客)或者正在学习,这里开源一份360智榜样学习中心独家出品《网络攻防知识库》,希望能够帮助到你
知识库由360智榜样学习中心独家打造出品,旨在帮助网络安全从业者或兴趣爱好者零基础快速入门提升实战能力,熟练掌握基础攻防到深度对抗。
1、知识库价值
深度: 本知识库超越常规工具手册,深入剖析攻击技术的底层原理与高级防御策略,并对业内挑战巨大的APT攻击链分析、隐蔽信道建立等,提供了独到的技术视角和实战验证过的对抗方案。
广度: 面向企业安全建设的核心场景(渗透测试、红蓝对抗、威胁狩猎、应急响应、安全运营),本知识库覆盖了从攻击发起、路径突破、权限维持、横向移动到防御检测、响应处置、溯源反制的全生命周期关键节点,是应对复杂攻防挑战的实用指南。
实战性: 知识库内容源于真实攻防对抗和大型演练实践,通过详尽的攻击复现案例、防御配置实例、自动化脚本代码来传递核心思路与落地方法。
2、 部分核心内容展示
360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。
360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。
内容组织紧密结合攻防场景,辅以大量真实环境复现案例、自动化工具脚本及配置解析。通过策略讲解、原理剖析、实战演示相结合,是你学习过程中好帮手。
1、网络安全意识
2、Linux操作系统
3、WEB架构基础与HTTP协议
4、Web渗透测试
5、渗透测试案例分享
6、渗透测试实战技巧
7、攻防对战实战
8、CTF之MISC实战讲解
3、适合学习的人群
一、基础适配人群
- 零基础转型者:适合计算机零基础但愿意系统学习的人群,资料覆盖从网络协议、操作系统到渗透测试的完整知识链;
- 开发/运维人员:具备编程或运维基础者可通过资料快速掌握安全防护与漏洞修复技能,实现职业方向拓展或者转行就业;
- 应届毕业生:计算机相关专业学生可通过资料构建完整的网络安全知识体系,缩短企业用人适应期;
二、能力提升适配
1、技术爱好者:适合对攻防技术有强烈兴趣,希望掌握漏洞挖掘、渗透测试等实战技能的学习者;
2、安全从业者:帮助初级安全工程师系统化提升Web安全、逆向工程等专项能力;
3、合规需求者:包含等保规范、安全策略制定等内容,适合需要应对合规审计的企业人员;
因篇幅有限,仅展示部分资料,完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以在下方CSDN官方认证二维码免费领取【保证100%免费】