💡 什麼是存取控制失效(Broken Access Control)?
在最新版的 OWASP Top 10 清單中,A01 Broken Access Control(存取控制失效) 直接躍居排行榜的第一名(#1)。這意味著它是目前 Web 應用中最常見、且危害往往極其嚴重的安全風險。
存取控制(Access Control) 的核心概念很簡單:「驗證使用者是否被允許執行他正在嘗試的操作」。換句話說——你是誰(Authentication),以及你能做什麼(Authorization)。
當應用程式在設計時,沒有確實檢查每個請求的權限,導致使用者可以越過權限邊界,存取不屬於自己的資源、竄改他人資料,甚至執行最高管理員的功能,這就構成了「越權漏洞」。
👥 越權漏洞的兩大經典類型
越權漏洞(Insecure Direct Object References, IDOR 屬於其中一種)通常可分為以下兩大類:
經典範例:
使用者登入後查看自己的訂單頁面,網址為 http://target.com/profile?user_id=1001。
此時若將 user_id 改成 1002,系統卻毫無驗證地直接回傳了 1002 號使用者的個資與信用卡記錄,這就是典型的水平越權。
經典範例:
管理員後台的網址為 http://target.com/admin/delete_user。
普通會員若直接在瀏覽器輸入這個網址,若伺服器只檢查了「有沒有登入」,卻沒有檢查「登入者的身份是否為 Admin」,就會導致普通會員成功執行刪除使用者的管理員權限動作。
🛠️ 如何手動測試越權漏洞?
在滲透測試中,尋找越權漏洞主要依賴「多帳號交叉驗證」與 Burp Suite:
準備兩個不同權限或同級的測試帳號(例如 Account A 與 Account B)。
利用 Burp Suite 攔截請求:
使用 Account A 登入並發送一筆修改資料或查看個資的請求,觀察請求中的參數(如 id=, username=, 或隱含在 JSON 內的 account_id)。
進行身份置換(BOLA 測試):
將該請求送至 Repeater,把參數中的身份識別改為 Account B 的數值,然後發送。
若伺服器成功回傳 Account B 的資料或執行成功(Status 200 OK): 恭喜!你成功挖到了越權漏洞(IDOR / Broken Access Control)!