跨域资源共享漏洞

一、跨域资源共享漏洞验证

跨域资源共享漏洞(Cross-Origin Resource Sharing, CORS)是由于浏览器的实现机制导致的,它的本质是浏览器允许网页上的JavaScript代码向跨域服务器发送HTTP请求,从而获取数据。但由此也带来了安全风险。

验证CORS是否存在漏洞的方法有很多,其中较常用的几种如下:

1. Burpsuite

使用Burpsuite可以抓取请求,然后进行修改,模拟跨域请求。如果跨域资源共享漏洞存在,我们就可以得到源站的信息和资源。

POST /login HTTP/1.1
Host: abc.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 23
Origin: http://www.xyz.com
Connection: close

name=admin&password=123

2. 自建跨域资源共享测试网站

可以自建一个测试网站,测试跨域请求有没有成功。例如,我们自建的跨域资源共享测试网站是http://www.cors-test.com/,其页面上为一个JavaScript链接,如果该域名允许跨域访问,即可正常打开JavaScript页面。

<html>
<head>
<script src="http://www.cors-test.com/load-script.js">
</script>
</head>
<body>
<p>Hello, World!</p>
</body>
</html>

3. 浏览器的开发者工具

通过开发者工具可以方便地查看HTTP请求和响应,并进行修改和添加。例如,可以使用Chrome的开发者工具,选择Network标签页,找到发送请求的地址,查看响应报文,如果 Access-Control-Allow-Origin 是 *,表示该站点存在 CORS 漏洞。

二、跨域资源共享漏洞修复

跨域资源共享漏洞的修复方法如下:

1. 同源策略

浏览器的同源策略禁止不同源网页间的 cookie、localStorage 和 IndexDB 等数据相互访问,而通过这些方式能够获取其他网页 valuable 的信息,可以减少攻击者对网页的攻击,防止一些不必要的资源泄露。

2. 服务器设置CORS

可以通过在响应头(Response Header)字段里设置 Access-Control-Allow-Origin,来令指定来源访问该资源,指定来源后将禁止其他来源对资源的访问,可以避免跨站请求攻击(CSRF)。例如,若网站http://www.abc.com允许http://www.xyz.com和http://www.klm.com进行跨域资源请求,则在www.abc.com的响应头中应增加如下内容:

Access-Control-Allow-Origin: http://www.xyz.com
Access-Control-Allow-Methods: POST, GET
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Content-Type, *

3. 使用Token传递数据

使用Token传递数据是跨域访问的一种方案,Token是用户的身份令牌,可以直接翻看该身份令牌从而克服跨站请求攻击(CSRF)。

三、跨域资源共享CORS详解

1. CORS的类型

CORS请求分为两类:简单请求(Simple Request)和非简单请求(Non-simple Request)。

简单请求需同时满足以下四个条件:

  • 使用 HTTP 方法为:GET、HEAD 或 POST
  • Content-Type 为text/plain、multipart/form-data、application/x-www-form-urlencoded中的一种
  • 请求中的任意 XMLHttpRequestUpload 对象均没有注册任何事件监听器
  • 请求中没有使用不安全的标头(如Cookie、Authorization等)或者是之前已经通过Access-Control-Allow-Headers设置了

非简单请求满足以下任意一个:

  • 使用PUT、DELETE方法,或者是使用其他请求方法,POST请求Content-Type不是text/plain、multipart/form-data、application/x.www.form-urlencoded之一
  • 请求中的任意 XMLHttpRequestUpload 对象均注册了事件监听器
  • 请求中使用了之前没有用过的自定义标头

2. CORS流程

CORS流程如下:

  1. 浏览器发现AJAX请求是跨源的,就会为该请求添加origin字段,标明来源,例如,origin: http://www.abc.com
  2. 服务器如果接受跨源请求,就需要在响应头中添加 Access-Control-Allow-Origin,指定允许的源,例如,Access-Control-Allow-Origin: http://*.xyz.com 表示允许以 xyz.com Qualified Name Label 结尾的任何请求跨源访问。如果要允许所有源访问该资源,则可以设置为 Access-Control-Allow-Origin:*
  3. 完成以上两步后,浏览器会对响应头进行检查,如果 origin 在 Access-Control-Allow-Origin 允许的列表中,就将响应返回给前端,否则便会停止请求,也就是将响应取消。

3. CORS的安全性

CORS通过在跨域请求时加入origin头,在服务器端进行判别,只有同意情况下才能发生跨域请求,避免了一些跨域危害。同时,设置 Access-Control-Allow-Origin 的时候千万不能设置为 *,这个时候服务器允许所有站点跨域请求,这将导致严重的安全问题。

原创文章,作者:CHCNU,如若转载,请注明出处:https://www.506064.com/n/316528.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
CHCNUCHCNU
上一篇 2025-01-09 12:14
下一篇 2025-01-09 12:14

相关推荐

  • Treck TCP/IP Stack 输入验证错误漏洞CVE-2020-11901解析

    本文将对Treck TCP/IP Stack 输入验证错误漏洞CVE-2020-11901进行详细解析,并提供相关代码示例。 一、漏洞背景 Treck TCP/IP Stack是一…

    编程 2025-04-27
  • Python漏洞挖掘全指南

    本文将从多个方面详细阐述Python漏洞挖掘的相关知识,帮助开发工程师了解并掌握漏洞挖掘的基础知识和实战技巧。 一、漏洞类型 漏洞是指误用或设计上的错误,可导致产品、应用或系统中存…

    编程 2025-04-27
  • Coremail 漏洞详解

    Coremail是国内主流的企业邮件服务器软件,2018年曝出多个漏洞。本文将详细阐述Coremail漏洞的危害,漏洞种类和利用方法。同时提供完整的代码示例,帮助读者更加深入地了解…

    编程 2025-04-25
  • POC环境:构建你的漏洞验证平台

    一、POC环境基础概念 POC(Proof of Concept)环境是指基于特定漏洞的验证平台,是信息安全研究的重要组成部分。其主要目的是为了漏洞检测、漏洞复现、漏洞演示和漏洞攻…

    编程 2025-04-24
  • 中国国家漏洞库完整解析

    一、什么是中国国家漏洞库 中国国家漏洞库(以下简称CNVD)是国家信息安全漏洞共享平台,为国内外安全厂商、安全爱好者提供安全漏洞信息共享和管理服务。它由国家信息安全漏洞库管理中心负…

    编程 2025-04-24
  • ThinkPHP v5.0.24漏洞利用详解

    一、什么是ThinkPHP v5.0.24漏洞? 近日,ThinkPHP官方发布了一份安全公告,宣布存在严重漏洞。该漏洞影响了采用ThinkPHP v5.0.24及以下版本的应用,…

    编程 2025-04-23
  • 条件竞争漏洞

    一、定义 条件竞争漏洞(Race Condition Vulnerability)是指在多线程或分布式环境下,由于竞争条件而导致的程序错误。这种漏洞可以被攻击者利用来修改系统状态,…

    编程 2025-04-23
  • 避免SQL注入漏洞的实用技巧

    随着互联网业务的迅速发展,Web应用就成为了人们工作、生活中不可缺少的一部分。而 Web 应用的开发求快、求快速迭代,常常导致 Web 应用中 SQL 注入等漏洞的出现。SQL 注…

    编程 2025-04-18
  • Laravel漏洞详解

    Laravel是PHP开发中一款十分热门的开发框架,它在便捷性、扩展性以及功能上都有着不错的表现。作为开发者,在使用Laravel时需要关注它的安全性,因为Laravel也存在漏洞…

    编程 2025-04-12
  • URL跳转漏洞的详细阐述

    一、什么是URL跳转漏洞 URL跳转漏洞(Open Redirect Vulnerability)指的是攻击者构造URL,使网站跳转到攻击者指定的网站,从而实现攻击造成危害的一种漏…

    编程 2025-04-12

发表回复

登录后才能评论