前言
上一篇文章中,對邏輯漏洞進行了簡單的描述,這篇文章簡單的說一說邏輯漏洞中的越權漏洞。
參考文獻《黑客攻防技術寶典Web實戰篇第二版》
什么是越權漏洞?
顧名思義,越權漏洞就是由於設計上的缺陷對應用程序的權限做的不好。通俗點來說,就是用戶A可以通過某種方式查看到用戶B的個人信息,或者可以查看管理員C的一些相關信息。
分類
越權漏洞主要分為水平越權和垂直越權。下面來說一說他們的區別。
水平越權:就是攻擊者嘗試訪問與他相同權限的用戶的一些資源。舉一個簡單的例子,用戶A在這個應用程序里保存了自己的個人信息,並且通過相關參數直接獲取,用戶B在保存個人信息的頁面,輸入了A用戶的參數,直接查看到了A用戶的個人信息。
為什么會出現這種情況呢?我們知道通常情況下,一個應用程序的功能流程是:登陸=>提交請求=>驗證權限=>數據庫查詢=>返回結果。如果權限驗證做的不好,就會出現越權。
都包括哪些情況呢?
比如直接對象引用,這種情況直接修改參數就可以發生越權,例如,我想查看A用戶的信息,直接將URL后的參數改為A用戶的就可以了。這里有一個實例,現在登陸張三用戶,抓包如下圖
現在將5改為2,然后發送數據包,我們發現用戶變為1了
還有比如一個功能,多步實現,只在第一步驗證用戶身份,其他不用,這樣攻擊者直接跳過第一步,執行下面的操作。
還有如果對身份驗證做的不完善,有可能在未登錄的情況下,知道敏感頁面URL可以直接訪問。
垂直越權:也叫權限提升攻擊,例如,用戶A通過構造URL直接進入了管理員B的頁面。
包括哪些情況呢?
比如設計者通過隱藏URL的方式,通過URL實現訪問控制,這是最不靠譜的,要是攻擊者猜出后台路徑,直接歇菜。
修復建議
對於水平越權:
- 增加訪問與操作對象的用戶屬性,在對目標對象進行訪問與操作時,服務端校驗會話與對象的用戶屬性,在校驗通過后才能執行讀取和操作。
- 頁面進行嚴格的訪問權限的控制以及對訪問角色進行權限檢查。
對於垂直越權:
- 采取默認拒絕機制,采取基於角色訪問控制,對於各個功能的訪問,規定不同角色擁有不同的訪問權限,用戶訪問功能時,驗證用戶現在的權限和規定的權限是否相同,如果奴同,拒絕訪問。
《黑客攻防技術寶典Web實戰篇》對訪問控制進行了整理,我拍了下來分享出來,如下圖