越權漏洞原理及防禦方案

一、漏洞描述


越權訪問(Broken Access Control,簡稱BAC)是Web應用程序中一種常見的漏洞,由於其存在範圍廣、危害大,被OWASP列為Web應用十大安全隱患的第二名。

該漏洞是指應用在檢查授權時存在紕漏,使得攻擊者在獲得低權限用戶賬戶後,利用一些方式繞過權限檢查,訪問或者操作其他用戶或者更高權限。越權漏洞的成因主要是因為開發人員在對數據進行增、刪、改、查詢時對客戶端請求的數據過分相信而遺漏了權限的判定,一旦權限驗證不充分,就易致越權漏洞。


二、漏洞分類


越權訪問漏洞主要分為水平越權、垂直越權。


越權漏洞原理及防禦方案


水平越權:指攻擊者嘗試訪問與他擁有相同權限的用戶資源。例如,用戶A和用戶B屬於同一角色,擁有相同的權限等級,他們能獲取自己的私有數據(數據A和數據B),但如果系統只驗證了能訪問數據的角色,而沒有對數據做細分或者校驗,導致用戶A能訪問到用戶B的數據(數據B),那麼用戶A訪問數據B的這種行為就叫做水平越權訪問。


越權漏洞原理及防禦方案


垂直越權:由於後臺應用沒有做權限控制,或僅僅在菜單、按鈕上做了權限控制,導致惡意用戶只要猜測其他管理頁面的URL或者敏感的參數信息,就可以訪問或控制其他角色擁有的數據或頁面,達到權限提升的目的。


越權漏洞原理及防禦方案


三、漏洞產生的原因


通常情況下,一個 Web 程序功能流程是登錄 - 提交請求 - 驗證權限 - 數據庫查詢 - 返回結果。如果驗證權限不足,便會導致越權。常見的程序都會認為通過登錄後即可驗證用戶的身份,從而不會做下一步驗證,最後導致越權。


1. 通過隱藏 URL

實現控制訪問有些程序的管理員的管理頁面只有管理員才顯示,普通用戶看不到,利用 URL 實現訪問控制,但 URL 洩露或被惡意攻擊者猜到後,這會導致越權攻擊。


2. 直接對象引用

這種通過修改一下參數就可以產生水平越權,例如查看用戶信息頁面 URL 後加上自己的 id 便可查看,當修改為他人的 ID 號時會返回他人的信息,便產生了水平越權。


3. 多階段功能

多階段功能是一個功能有多個階段的實現。例如修改密碼,可能第一步是驗證用戶身份信息,號碼驗證碼類的。當驗證成功後,跳到第二步,輸入新密碼,很多程序會在這一步不再驗證用戶身份,導致惡意攻擊者抓包直接修改參數值,導致可修改任意用戶密碼。


4. 靜態文件

很多網站的下載功能,一些被下載的靜態文件,例如 pdf、word、xls 等,可能只有付費用戶或會員可下載,但當這些文件的 URL 地址洩露後,導致任何人可下載,如果知道 URL 命名規則,則會便利服務器的收費文檔進行批量下載。


5. 平臺配置錯誤

一些程序會通過控件來限制用戶的訪問,例如後臺地址,普通用戶不屬於管理員組,則不能訪問。但當配置平臺或配置控件錯誤時,就會出現越權訪問。


四、漏洞利用


利用靶場進行越權漏洞演練:

首先註冊一個普通用戶


越權漏洞原理及防禦方案

越權漏洞原理及防禦方案


這個靶場在“修改資料”處存在垂直越權漏洞,所以點擊修改資料,抓包:


越權漏洞原理及防禦方案


可以看到admin=0;shenfen=2兩個參數。通過調試,我們發現shenfen參數1決定是否為管理員,admin為1代表是管理員,為0代表不是管理員。所以我們將改admin改為1,shenfen參數改為1:


越權漏洞原理及防禦方案


繼續抓包,繼續修改。因為修改這個資料參數可能要經過好幾個頁面的判定。


越權漏洞原理及防禦方案


最後我們終於進入了後臺,以普通用戶的名字,管理員的權限。


越權漏洞原理及防禦方案


五、防範措施


1、前後端同時對用戶輸入信息進行校驗,雙重驗證機制


2、 執行關鍵操作前必須驗證用戶身份,驗證用戶是否具備操作數據的權限


3、特別敏感操作可以讓用戶再次輸入密碼或其他的驗證信息。


4、可以從用戶的加密認證 cookie 中獲取當前用戶 id,防止攻擊者對其修改。或在 session、cookie 中加入不可預測、不可猜解的 user 信息。

5、直接對象引用的加密資源ID,防止攻擊者枚舉ID,敏感數據特殊化處理


6、永遠不要相信來自用戶的輸入,對於可控參數進行嚴格的檢查與過濾



分享到:


相關文章: