跨域資源共享配置錯誤
跨源資源共享(Cross-Origin Resource Sharing, CORS)是一種基於瀏覽器的機制,它指示瀏覽器在其web伺服器域之外載入資源的允許來源。除了提供比同源策略(SOP)更強的靈活性外,CORS還透過控制如何從外部域請求和載入資源來確保安全性。
然而,有幾個因素可能導致CORS實現容易受到網路攻擊。其中一個原因是 CORS 策略配置不當,該策略通常用於跨域攻擊,其中威脅參與者向 Web 伺服器的域傳送惡意請求,作為邁向更深入的系統級攻擊的第一步。
什麼是CORS錯誤配置?
當 Web 伺服器允許第三方域透過合法使用者的瀏覽器執行特權任務時,會發生跨源資源共享錯誤配置。由於 CORS 機制依賴於 HTTP 標頭,因此瀏覽器會向跨域資源發出預檢請求,並檢查瀏覽器是否有權為實際請求提供服務。因此,不正確的 CORS 標頭配置允許惡意域訪問和利用 Web 伺服器的 API 端點。雖然多個標頭定義了 CORS 策略,但以下三個標頭對於管理安全性非常重要:
ACAO (access - control - allow - origin) -指定可以訪問web伺服器資源的外部域。如果伺服器動態生成此標頭,或者如果網站允許使用萬用字元的域,伺服器可能允許訪問任何域,包括攻擊者控制的網站的域。
訪問控制允許憑據 – 指定客戶端的瀏覽器是否在請求中包含 Cookie、TLS 證照或授權標頭。如果此標頭設定為 true,則瀏覽器會傳送包含請求的憑據,攻擊者可以使用惡意指令碼在傳輸過程中檢索這些憑據。
訪問控制允許方法 – 此標頭指定用於跨域訪問的HTTP方法。如果標頭包含不安全的 HTTP 方法,則攻擊者可以透過中繼包含不受信任的指令碼、二進位制檔案和影像的請求來訪問受限資源。
如何利用 CORS 錯誤配置?
攻擊者利用CORS錯誤配置濫用web伺服器、客戶端瀏覽器和受信任域之間的信任鏈。針對 CORS 錯誤配置的常見攻擊包括:
起源反射
假設這樣一個場景:允許域名cross- orig-website.com訪問來自伺服器origin-website.com的內容;外部域是在originalwebsite.com web伺服器的CORS配置中使用ACAO頭指定的,如下所示:
由於CORS配置不允許開發人員在靜態列表中指定允許的域,所以開發人員要麼動態生成ACAO標頭,要麼使用萬用字元*(如果要允許多個域)。
動態生成標頭時,Web 伺服器會讀取請求的源標頭,然後將其寫入響應中的訪問控制允許源標頭。雖然這些授予對所有域的訪問許可權,但駭客可以利用該方法。一種常見的漏洞利用方法是從自定義源傳送 HTTP 請求,並檢查伺服器是否允許對源進行訪問控制,如下所示。
這樣的攻擊被稱為起源反射利用,web伺服器在響應的訪問控制-允許-起源標頭中反映請求的起源標頭。此外,響應還公開Access-control-allow-credentials報頭被設定為true。在這種情況下,攻擊者-controlled-domain.com可以使用受害者的憑據向original-website.com傳送請求,允許攻擊者透過編寫惡意指令碼檢索憑據。為了透過攻擊者控制的網站獲取受害者的憑據,攻擊者還可以在傳送給毫無戒心的使用者的頁面中嵌入類似以下內容的JavaScript:
零源漏洞利用
一些開發人員將他們的web伺服器配置為允許透過一種稱為null origin的特殊起源方法進行跨起源訪問。在這種情況下,web伺服器返回如下所示的類似響應:
攻擊者利用這一點,建立一個描述本地HTML檔案的沙箱iFrame來獲取空源。沙盒iFrame看起來類似於:
使用上述有效負載傳送的請求具有空源,可用於檢索使用者憑據和其他敏感資訊。
擴充套件原始碼漏洞
由於源標頭的正規表示式實現不佳,Web 伺服器可能無法驗證原始源的擴充套件地址。例如,Web 伺服器可以配置為接受以 original-website.com 結尾的所有域,例如 apps.original-website.com 和 mail.original-website.com.但是,由於實現 RegEx 定位器時出錯,這些域可能會無意中允許來自任何以 original-website.com 結尾的域(包括 attackers-original-website.com)的請求。
攻擊者可以利用這種錯誤配置來建立類似以下內容的格式錯誤的請求:
Web 伺服器最終會提供一個包含受害者憑證資訊的響應,類似於:
跨域資源共享配置錯誤影響
CORS機制主要是為了放寬同源政策的限制性要求而建立的。當 CORS 標頭中的策略過於寬鬆並允許對任何源進行跨域訪問時,就會出現漏洞。開發團隊經常忽略 CORS 錯誤配置,這使得攻擊者通常利用這種風險來編排增強攻擊。儘管 CORS 是一項強大的技術,但錯誤配置很容易被利用,因為對手只需要對標頭規範有基本瞭解,並在執行漏洞測試時多一些耐心。
成功利用CORS錯誤配置的影響包括:
操縱或竊取受害者的cookie
建立和執行無效請求
在易受攻擊的web伺服器中執行惡意程式碼
接觸敏感資訊
安裝惡意軟體
跨站點指令碼攻擊
CORS漏洞(A05:2021)被分類在OWASP前10個漏洞列表的“安全錯誤配置”中。這組漏洞的平均加權影響為6.56(中等),平均加權利用為8.12(高),平均發生率為4.52%(中等)。
CORS 和 CSRF 漏洞有什麼區別?
在 CORS 標頭配置不正確的情況下,攻擊者可以使用惡意域來利用組織的 Web 伺服器的資源。CORS 漏洞通常被用於基於瀏覽器的攻擊,這些攻擊利用放寬同源策略來訪問受限制的資料和功能。
另一方面,跨站請求偽造(CSRF)是一種Web 漏洞利用,它讓毫無戒心的使用者從受信任的Web應用程式提交未經授權的命令。由於大多數瀏覽器在提交請求時自動包含使用者的會話資訊,網站無法區分合法和偽造請求,最終執行攻擊者發起的額外的操作。
防止 CORS 配置錯誤漏洞的實踐有哪些?
對訪問控制允許憑據配置設定為 true 的資源執行身份驗證
對訪問控制允許源標頭使用白名單而不是萬用字元
對需要訪問資源的所有域和子域實施篩選器和驗證
進行持續漏洞掃描和安全漏洞測試
來源: https://crashtest-security.com/cors-misconfiguration/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70000012/viewspace-2921819/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- OSS跨域資源共享(CORS)錯誤及排除跨域CORS
- 跨域資源共享跨域
- 跨域資源共享(CORS)跨域CORS
- 跨域資源共享CORS跨域CORS
- 跨域資源共享——CORS跨域CORS
- js跨域資源共享JS跨域
- CORS 跨域資源共享CORS跨域
- CORS跨域資源共享CORS跨域
- CORS(跨域資源共享)筆記CORS跨域筆記
- 詳解 CORS 跨域資源共享CORS跨域
- 跨域資源共享CORS詳解跨域CORS
- 跨域資源共享 CORS 詳解跨域CORS
- 深入跨域問題(1) - 初識 CORS 跨域資源共享跨域CORS
- 詳解XMLHttpRequest的跨域資源共享XMLHTTP跨域
- 跨域資源共享(CORS)是什麼?跨域CORS
- 跨域共享CORS詳解及Gin配置跨域跨域CORS
- 跨域請求cookie資源共享詳解跨域Cookie
- 安全系列之:跨域資源共享CORS跨域CORS
- 跨域資源共享 CORS 一些知識點跨域CORS
- 你所不知道的跨域資源共享(CORS)跨域CORS
- 跨域資源共享的各種方式(持續更新)跨域
- 跨域資源共享 CORS(Cross-origin resource sharing)跨域CORSROS
- [CORS:跨域資源共享] W3C的CORS SpecificationCORS跨域
- Spring Boot中的跨域資源共享(CORS)處理Spring Boot跨域CORS
- 前端中的同源策略與三種跨域資源共享方法前端跨域
- php跨域共享sessionPHP跨域Session
- 瀏覽器與伺服器通訊技術——跨域資源共享瀏覽器伺服器跨域
- 跨域是什麼?跨域請求資源有哪些方法?跨域
- 跨站資源共享CORS原理深度解析CORS
- jsonp跨域資源引起CORBJSON跨域ORB
- Laravel 配置跨域Laravel跨域
- Nginx 跨域配置Nginx跨域
- 跨源通訊、跨域訪問跨域
- Nginx的跨域配置Nginx跨域
- 共享辦公室出租,資源配置新平臺
- js資源跨域訪問的問題JS跨域
- Nginx解決前端跨域問題 CORS跨域配置Nginx前端跨域CORS
- 深入剖析.NETCORE中CORS(跨站資源共享)NetCoreCORS