跨域資源共享漏洞

一、跨域資源共享漏洞驗證

跨域資源共享漏洞(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/zh-hk/n/316528.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
CHCNU的頭像CHCNU
上一篇 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

發表回復

登錄後才能評論