什么是越權訪問漏洞?
“越權訪問漏洞” 是 “邏輯漏洞” 的一種,是由于網站系統的權限校驗的邏輯不夠嚴謹,沒有對用戶權限進行嚴格的身份鑒別,導致普通權限的用戶做到了其它普通用戶或管理員才能完成的操作,稱之為“越權訪問”。
越權漏洞分類
越權漏洞我個人把它分為三類:
- 水平越權:原本只能操作自己的數據,如增刪改查,通過越權操作,能操作其它同等權限的賬號數據。
- 垂直越權:賬號原本是低權限,通過越權操作,獲取了高權限。
- 未授權訪問:即不需要登錄認證,通過越權操作,直接獲得了某個功能權限。
水平越權:
首先使用 lili 的賬號進行登錄
點擊查看個人信息,抓包
將用戶名 lili 改成 lucy ,放包
成功水平越權,獲得lucy的個人信息。
垂直越權:
先使用 admin 賬戶登錄
然后點擊添加用戶,抓包并放到重放器
接著用普通用戶pikachu登錄,密碼:000000;抓包,將pikachu的cookie替換到admin的cookie并發包;
利用普通用戶的權限創建了新用戶,垂直越權成功。
發現越權漏洞的思路
越權漏洞產生的原因:
想要發現越權漏洞,就要知道漏洞出現的原因;越權漏洞的出現大致有以下幾種場景:
1、隱藏 URL :
- 有些程序的管理頁面只有管理員才會顯示,普通用戶無法看不到,程序開發人員利用 URL 實現訪問控制。但若URL 泄露或被惡意攻擊者猜到后,這會導致普通用戶訪問導致出現越權攻擊。
2、直接對象引用:
- 這種通過修改驗證參數就可以模擬成其他用戶進行訪問。例如:查看用戶信息頁面 URL 后加上自己的 id 便可查看,當修改為他人的 ID 號時會返回他人的信息,便產生了水平越權。
3、多階段功能處疏忽:
- 多階段功能是一個功能由多個階段來進行實現。例如:修改密碼,可能第一步是驗證用戶身份信息,號碼驗證碼類的。當驗證成功后,跳到第二步,輸入新密碼,很多程序會在這一步不再驗證用戶身份,導致惡意攻擊者抓包直接修改標識身份參數值,導致可修改其他用戶密碼。
4、靜態文件下載疏忽:
- 很多網站的下載功能,一些被下載的靜態文件,可能只有付費用戶或會員可下載。但當這些文件的 URL 地址泄露后,導致任何人可下載,如果知道 URL 命名規則,則會便利服務器的收費文檔進行批量下載。
5、平臺驗證權限配置錯誤:
- 一些程序會通過控件來限制用戶的訪問。例如后臺地址,普通用戶不屬于管理員組,則不能訪問。但當配置平臺或配置控件錯誤時,就會出現越權訪問。
發現漏洞的思路:
-
使用已登陸賬戶訪問頁面的URL讓未登錄用戶直接訪問,根據是否能訪問判斷是否由未授權訪問。
-
使用普通賬戶標識信息去替換其他普通賬戶標識,根據是否能進行訪問判斷是否有水平越權漏洞。
-
使用普通賬戶標識信息去替換管理員賬戶標識,根據是否能進行訪問判斷是否有垂直越權漏洞。
越權漏洞從方式上可分為兩大類:
-
未使用 cookie 鑒權,通過修改 userid 等字段進行越權。
-
使用 cookie 鑒權,未檢測對應操作是否符合當前權限預期。
測試工具
可以使用Burp擴展:Autorize,來快速測試垂直越權和未授權訪問。
還是以 pikachu 靶場為例
先登錄低權限 pikachu 用戶(密碼:000000),然后點擊 Fetch Cookies header,會從最近一次請求歷史中提取cookie
然后登錄 admin(密碼:123456)用戶,再點擊 autorize is off 打開該插件(autorize is on為開啟狀態)。
然后在 admin 權限下,快速點擊所有可以點擊的接口(要保證兩個cookie 都未過期)。
然后就可以看到,右邊三個框發的包,分別是:
- 原始cookie的請求
- 修改后cookie的請求(就是之前復制進去的那個低權限cookie)
- 無cookie請求
那么與之相對的左邊那幾個帶顏色的就是測試結果,紅色存在越權,黃色代表不確定,綠色代表沒問題。
- 左邊一列 紅色代表存在越權可能
- 右邊一列 紅色代表存在未授權訪問可能
可以點擊 三個代表響應長度的數字,分別是原始長度,替換低權限后的長度,以及未授權的長度,在右側查看具體響應,根據長度也可以判斷結果了。