摘 要

Web 應用通常用于對外提供服務,由于具有開放性的特點,逐漸成為網絡攻擊的重要對象,而漏洞利用是實現 Web 攻擊的主要技術途徑。越權漏洞作為一種常見的高危安全漏洞,被開 放 Web 應 用 安 全 項 目(Open Web Application Security Project,OWASP) 列 入 10 個 最 關 鍵Web 應用程序安全漏洞列表。結合近幾年披露的與越權相關的 Web 應用通用漏洞披露(Common Vulnerability and Exposures,CVE)漏洞,通過分析 Web 越權漏洞成因和常見攻擊方法,提出了針對 Web 越權漏洞攻擊的防范方法。

隨著 Web 技術的迅猛發展,Web 應用已經普及到企業管理、電子商務等各個領域。由于 Web 應用具有開放性的特點,逐漸成為網絡攻擊者的重點攻擊對象。Web 應用在給人們的工作帶來方便的同時,也帶來了巨大的安全風險。軟件一定存在各種已知或未知的漏洞,Web 應用也不例外 。常見的漏洞有結構化查詢語言(Structured Query Language,SQL)注入漏洞、跨站腳本漏洞(Cross Site Script,XSS)、跨站請求偽造漏洞(Cross Site Request Forgery,CSRF)、指令執行漏洞、文件包含漏洞、越權訪問漏洞等 。

Web 應用漏洞無法杜絕,目前最有效的防范辦法是采用 Web 漏洞掃描技術盡可能發現潛在漏洞并進行處理。對于 SQL 注入、XSS、CSRF 等 Web 漏洞,業界已經有了比較成熟的檢測和防范方法 ,基于Fuzzing 技術的漏洞挖掘近年也被廣泛應用于 Web應用的漏洞檢測中 。

Web 越權漏洞是一種常見的邏輯漏洞,是指未對通過身份驗證的用戶實施恰當的訪問控制,攻擊者利用這一漏洞,在未經授權的情況下,泄露、修改或銷毀數據,或在權限之外執行業務功能。越 權 漏 洞 在 開 放 Web 應 用 安 全 項 目(Open Web Application Security Project,OWASP)中被稱為“訪問控制失效(Broken Access Control)”。

OWASP 是一個致力于 Web 應用安全研究的開源、非營利、全球性安全組織,每年總結發布最可能發生、最常見、最危險的前 10 個 Web 漏洞的榜單,是 Web 應用安全領域的權威參考。在 2021 年OWASP 發布的榜單中,越權漏洞從 2017 年的第5 名,躍居至第 1 名,成為 Web 應用安全中最可能發生、最危險的安全漏洞類型。由于越權漏洞屬于程序邏輯漏洞,其防護和檢測的難度非常大。

本文從漏洞威脅等級、影響面、攻擊價值、利用難度等幾個方面綜合考慮,選擇近 3 年的典型越權漏洞進行分析,通過分析 Web 越權漏洞的成因和常見攻擊方法,給出防范 Web 越權漏洞的一般方法。

1

 常見 Web 越權漏洞分析

通用漏洞披露(Common Vulnerability and Exposures,CVE)是一個公開的權威網絡安全漏洞和暴露的列表,它通過 CVE 標識符唯一標識每個已發現的軟 件 漏 洞, 并 基 于 通 用 漏 洞 評 分 系 統(Common Vulnerability Scoring System,CVSS)評分對漏洞進行優先級排序。本文根據 CVE 漏洞描述和 CVSS 漏洞評分,選擇近幾年發現的與 Apache Superset、Joomla、Alibaba Nacos、Zabbix、Apache ShenYu 這幾個在 Web 開發中廣泛應用的 Web 組件相關的高危越權漏洞進行分析。

1.1 Apache Superset 身份驗證繞過漏洞

Apache Superset 身份驗證繞過漏洞于 2023 年4 月由 Apache 官方發布,漏洞編號為 CVE-2023-27524,CVSS 漏洞評分為 8.9,屬于高危漏洞。由于用戶沒有修改默認配置,該漏洞使得攻擊者可以通過偽造 Cookie 繞過身份驗證,屬于典型的錯誤參數配置造成的越權訪問漏洞。

Apache Superset 是一種用于數據探索和數據可 視 化 的 開 源 Web 應 用 程 序。它 基 于 PythonFlask 框架,是適用于企業日常生產環境的商業智 能 可 視 化 工 具。該 Web 應 用 的 用 戶 狀 態 管 理使 用 SECRET_KEY 加 密 簽 名 cookie 進 行 驗 證,Superset-2.0.1 之前的版本安裝時 SECRET_KEY 默認 為 \x02\x01thisismyscretkey\x01\x02\\e\\y\\y\\h, 如果 用 戶 使 用 默 認 SECRET_KEY 值, 則 SECRET_KEY 將暴露,攻擊者可以使用 SECRET_KEY 生成偽造 cookie,在未授權情況下訪問 Web 應用程序,實現敏感數據竊取或任意代碼執行。

使用 Flask-Unsign 工具驗證目標網站是否存在CVE-2023-27524 漏洞的界面如圖 1 所示。

圖 1 CVE-2023-27524 漏洞驗證

1.2 Joomla 未經授權訪問漏洞

Joomla 未 經 授 權 訪 問 漏 洞 于 2023 年 2 月 由Joomla 官 方 發 布, 漏 洞 編 號 CVE-2023-23752,漏洞評分 7.5,屬于高危漏洞。該漏洞是典型的不 安 全 的 應 用 程 序 接 口(Application Programming Interface,API)訪問控制造成的越權訪問漏洞。

Joomla 是世界上使用最廣泛的開源內容管理系 統(Content Management System,CMS) 之 一,該系統用 PHP 語言與 MySQL 數據庫開發,可以在Windows、Linux 等多種平臺運行,方便用戶構建網站和 Web 應用程序。

Joomla 有 3 個路由入口,分別是根目錄 index.php(用戶訪問入口)、administrator/index.php(管理員入口)和 api/index.php(開發者 RestAPI 接口)。由于 Joomla對 Web 服務端點的訪問控制存在缺陷,未經身份認證的攻擊者可以通過偽造特定請求訪問 RestAPI 接口獲取 Joomla 相關配置信息,導致敏感信息泄漏。

4.0.0 至 4.2.7 的 Joomla 未 授 權 訪 問 統 一 資 源定 位 器(Uniform Resource Locator,URL) 路 徑 為api/index.php/v1/config/application?public=true, 通 過該路徑訪問能夠獲取用戶名、口令等敏感信息,如圖 2 所示。

圖 2 CVE-2023-23752 漏洞驗證

1.3 Alibaba Nacos 訪問控制漏洞

Alibaba Nacos 訪問控制漏洞于 2020 年 12 月由Alibaba Nacos 官方在 github 發布的 issue 中披露,漏洞編號 CVE-2021-43116,CVSS 漏洞評分 8.8,屬于高危漏洞。該漏洞是由于未正確處理超文本傳輸(Hypertext Transfer Protocol,HTTP) 協 議 頭 的User-Agent 參數導致的未授權訪問漏洞,利用該漏洞攻擊者可以進行任意操作,包括創建新用戶及進行認證登錄授權操作。

Nacos 是阿里巴巴推出的用于發現、配置和管理微服務的開源軟件,廣泛應用于微服務應用場景。其 2.0.0-ALPHA.1 以下版本軟件為處理服務端到服務端的請求,將協商好的 User-Agent 參數設置“Nacos-Server”。在認證授權操作時,當發現請求的 User-Agent 為“Nacos-Server”時就不進行任何認證,導致了漏洞的出現,如圖 3 所示。

圖 3 CVE-2021-43116 漏洞驗證

1.4 Zabbix 身份認證繞過漏洞

Zabbix 身 份 認 證 繞 過 漏 洞 由 Zabbix 官 方 于2022 年初發布,漏洞編號 CVE-2022-23131,CVSS漏洞評分 9.1,為高危漏洞。該漏洞屬于會話信息處理機制的問題,因此攻擊者可以偽造數據繞過認證進入控制臺,屬于典型的不當的會話管理造成的越權訪問漏洞。

Zabbix 是一個非常流行的企業級開源監控平臺,基于 Web 界面提供分布式系統監視及網絡監視功能。Zabbix 將會話信息加密后保存在客戶端Cookie 中,在 5.4.0 ~ 5.4.8 的版本中,數據只在驗證 SessionID 時才進行加密處理,導致其他 Key 數據不會被加密。在通過 SAML SSO 單點登錄進行認證時,將直接讀取 SAML 中用戶信息進行認證。如圖 4 所示,由于 SAML 數據未加密,客戶端可以偽造數據繞過認證,以管理員身份進入 Zabbix 控制臺,造成遠程命令執行或敏感信息泄漏。

圖 4 CVE-2023-23752 漏洞驗證

1.5 Apache ShenYu 身份驗證繞過漏洞

Apache ShenYu 身 份 驗 證 繞 過 漏 洞 于 2021 年11 月 由 Apache 官 方 發 布, 漏 洞 編 號 CVE-2021-37580,CVSS 漏洞評分 9.8,屬于高危漏洞。由于ShenyuAdminBootstrap 中 JWT 的錯誤使用,攻擊者可以利用該漏洞繞過身份驗證,直接進入目標系統,屬于典型的校驗不充分造成的越權訪問漏洞。

Apache ShenYu 是一款高性能、跨語言、響應式的開源 API 網關,支持 SpringCloud、Motan 等多種協議,兼容多種主流框架,廣泛應用于各種微服務場景中。Apache ShenYu 采用 JWT(JSON Web Token)技術進行身份認證。JWT 是一個開放標準,用于作為 JSON 對象在各方之間傳遞安全信息。在Apache ShenYu Admin 2.3.0 至 2.4.0 版 本 中, 通 過token 獲取 userInfo 對象時,僅對 token 進行解析,但未進行充分校驗,攻擊者可通過該漏洞繞過管理者身份認證,進而獲取管理員賬號和口令 ,如圖 5 所示。

圖 5 CVE-2021-37580 漏洞驗證

Web 越權漏洞成因分析

通過以上對典型的 Web 越權漏洞的分析可以看出,Web 越權漏洞形成的主要原因還是開發人員在設計階段對用戶權限的設計存在疏漏,當訪問控制沒有正確設計與配置時,允許攻擊者在未授權的情況下繞過或提升系統或應用程序所分配的權限。進一步細分 Web 越權漏洞的成因,主要有以下幾種。

(1)錯誤的訪問控制機制:包括不正確的用戶權限管理、違反最小化授權原則、缺少訪問控制機制,會導致未授權訪問或權限提升。

(2)訪問控制配置不當:包括未更改默認訪問控制設置、錯誤配置用戶權限、未正確配置文件或目錄權限,如 Apache Superset CVE-2023-27524身份驗證繞過漏洞。

(3)不安全的對象引用:允許用戶操作 Web應用內部對象引用,可能導致未授權訪問或敏感信息泄露,例如,允許用戶直接引用 Web 應用內部的數據庫或文件。

(4)不當的會話管理:包括用戶在注銷后未使會話令牌(Token)失效,以及存在不安全的或可預測的訪問控制令牌,可能允許攻擊者劫持有效的用戶會話進行未授權訪問,如 Zabbix CVE-2022-23131 身份認證繞過漏洞。

(5)不安全的 API 訪問控制機制:包括未正確驗證 API 請求者身份,未限制訪問頻率,缺少對POST、PUT 和 DELETE 的訪問控制,允許不信任的來源訪問,如 Joomla CVE-2023-23752 未經授權的 API 訪問控制漏洞。

(6)用戶輸入校驗不充分:不充分的輸入驗證可能允許攻擊者通過注入惡意輸入或繞過輸入過濾器來繞過訪問控制,導致路徑遍歷、文件包含或命令注入等漏洞。

Web 越權漏洞攻擊方法

3.1 Web 越權漏洞攻擊模式

Web 越權漏洞的常見攻擊模式包括垂直越權、水平越權、不安全的直接對象應用、強行瀏覽、參數篡改。

(1)垂直越權。在這種攻擊模式中,攻擊者利用經過認證的用戶身份,通過操縱參數、會話令牌或用戶角色繞過訪問控制,訪問或執行更高權限用戶的操作,達到提升系統中權限的意圖。

(2)水平越權。在這種攻擊模式中,攻擊者通過操縱參數或會話令牌,繞過在不同賬戶之間強制分離的訪問控制,并以合法用戶相同的權限進入另一個賬戶。

(3)不安全的直接對象引用(Insecure Direct Object References,IDOR)。在 Web 應用中通過用戶輸入從數據庫或其他來源訪問或操作資源,而輸入沒有經過充分地校驗或授權時,攻擊者可以未經授權對系統資源進行訪問。

(4)強行瀏覽。在這種攻擊模式中,攻擊者試圖通過手動猜測或系統地列舉資源 URL 或路徑來訪問受限制的資源。通過利用不恰當的或薄弱的訪問控制,他們可能會發現并訪問敏感信息或應受保護的功能。

(5)參數篡改實現權限升級。在這種攻擊模式中,攻擊者操縱請求中傳遞的參數改變應用程序的預期行為,如用戶 ID、角色或權限,試圖獲得更高的權限或訪問受限制的資源。

(6)不安全的功能級授權。這種攻擊模式針對應用程序進行功能級授權處理時存在的漏洞。攻擊者利用特定功能或 API 中薄弱或缺失的訪問控制,獲得對敏感操作或數據的未授權訪問。

3.2 Web 越權漏洞攻擊流程

Web 越權漏洞攻擊的流程一般包括偵查、用戶枚舉、識別目標用戶、漏洞利用、未授權訪問。

(1)偵查:攻擊者收集有關目標系統的信息,包括識別潛在的用戶和他們在系統中的角色或權限。

(2)用戶枚舉:攻擊者通過用戶名枚舉、搜索用戶名單或利用信息泄漏等技術,探測、枚舉系統中的有效賬戶。

(3)識別目標用戶:攻擊者選擇一個具有較低權限的特定賬戶,并確定具有較高權限的目標賬戶。

(4)漏洞利用:攻擊者分析、識別與利用系統的訪問控制機制或應用邏輯中的繞過認證、操縱授權檢查及錯誤配置等漏洞,實現權限提升。

(5)未授權訪問:一旦漏洞被成功利用,攻擊者就能以更高的權限進入目標賬戶,修改用戶角色、權限或會話令牌,訪問敏感數據,執行特權功能,或破壞系統內的其他資源。

Web 越權漏洞防范方法

通過分析 Web 越權漏洞成因和常見 Web 越權漏洞攻擊方法,為了防范 Web 越權漏洞帶來的潛在攻擊威脅,本文提出了以下措施:

(1)用戶輸入充分校驗。通過驗證用戶輸入,防范如 URL 操縱或參數篡改等可能繞過訪問控制的攻擊。

(2)安全會話管理。有狀態的會話標識符應在注銷后在服務器上失效;無狀態的 JWT 令牌必須設定較短有效期,以便使基于令牌的攻擊時間窗口降到最小,而對于壽命較長的 JWT 令牌,強烈建議遵循 OAuth 標準來撤銷訪問。

(3)多層訪問控制模型。采取深層安全措施在 Web 應用程序、數據庫和操作系統等層面綜合實施訪問控制機制,如自主訪問控制(Discretionary Access Control,DAC)、 訪 問 控 制 列 表(Access Control List,ACL)、基于角色的訪問控制(Role Based Access Control,RBAC)等建立多層保護,強化對未授權訪問威脅的防御,即使攻擊者突破一個層面,也會被其他層面的防御機制阻止。

(4)適當的錯誤處理。實施適當的錯誤處理機制,以避免在錯誤信息中透露有關訪問控制機制或系統內部的敏感信息。

(5)安全測試和審計。定期對 Web 應用進行安全測試,如滲透測試和漏洞掃描,以發掘和檢測系統訪問控制中的潛在漏洞。

結 語

越權漏洞作為 Web 應用中的一種常見的安全漏洞,利用簡單且危害巨大,一旦被利用成功,可能導致未授權訪問、敏感信息泄露、數據篡改、執行惡意代碼等危害。為了防范越權漏洞攻擊,本文提出在 Web 應用設計階段引入越權漏洞防范機制,在編碼階段實施充分驗證用戶輸入、分配最小化權限、安全管理會話及建立多層訪問控制保護,在測試運行階段對重要的數據資產服務器進行重點防護與安全配置檢查,并定期進行安全測試和審計。