越權漏洞
越權訪問(Broken Access Control,簡稱BAC)是Web應用程序中一種常見的漏洞,由於其存在范圍廣、危害大,被OWASP列為Web應用十大安全隱患的第二名。
該漏洞是指應用在檢查授權時存在紕漏,使得攻擊者在獲得低權限用戶賬戶后,利用一些方式繞過權限檢查,訪問或者操作其他用戶或者更高權限。越權漏洞的成因主要是因為開發人員在對數據進行增、刪、改、查詢時對客戶端請求的數據過分相信而遺漏了權限的判定。在實際的代碼審計中,這種漏洞往往很難通過工具進行自動化監測,因此在實際應用中危害很大。其與未授權訪問有一定差別,目前存在着兩種越權操作類型,橫向越權操作(水平越權)和縱向越權操作(垂直越權)。
概念問題
水平越權:指相同權限下不同的用戶可以互相訪問
垂直越權:指使用權限低的用戶可以訪問到權限較高的用戶
水平越權測試方法:主要通過看看能否通過A用戶操作影響到B用戶
垂直越權測試思路:看看低權限用戶是否能越權使用高權限用戶的功能,比如普通用戶可以使用管理員的功能。
越權測試過程
把握住傳參就能把握住邏輯漏洞的命脈
越權測試:
登錄用戶A時,正常更改或者是查看A的用戶信息,然后抓取數據包,將傳參ID修改為其他用戶,如果成功查看或者修改了同權限其他用戶信息就屬於水平越權測試(如果可以影響到高權限用戶就是垂直越權)
傳參ID需要自己檢測(例如:uid= id= user=等)通常使用burp進行爆破傳參(傳參可能在get post cookie)
常見平行越權:
例如:
不需要輸入原密碼的修改密碼
抓包改用戶名或者用戶id修改他人密碼
修改資料的時候修改用戶id
查看訂單的時候,遍歷訂單id
常見越權漏洞
1.通過修改get傳參來進行越權:
http://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2016-0205340
2.通過修改post傳參來進行越權:
http://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2016-0207583
3.通過cookie傳參來進行越權
https://www.uedbox.com/post/12566/
抓取參數可以在瀏覽器、app、應用程序(exe)
4.未授權訪問
未授權訪問,嚴格意義上這個不屬於越權漏洞,但是在日常測試中常常會遇見。即只要輸入正確的網址就可以訪問,例如admin默認是登錄,登錄后跳轉到user.php,然后你直接訪問user.php,發現你直接有后台的權限。
未授權訪問產生的原因是因為開發在后台代碼中沒有驗證用戶狀態(是否已經登錄,例如可以通過isset($_SESSION['username'])來判斷用戶是否是登錄狀態)
http://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2016-0189174
防范措施
- 前后端同時對用戶輸入信息進行校驗,雙重驗證機制
- 調用功能前驗證用戶是否有權限調用相關功能
- 執行關鍵操作前必須驗證用戶身份,驗證用戶是否具備操作數據的權限
- 直接對象引用的加密資源ID,防止攻擊者枚舉ID,敏感數據特殊化處理
- 永遠不要相信來自用戶的輸入,對於可控參數進行嚴格的檢查與過濾
參考鏈接
https://blog.csdn.net/weixin_43415644/article/details/104376764
https://blog.csdn.net/u012068483/article/details/89553797