Web 資安漏洞大可不必 - Broken Access Control 攻防之道
2022-11-20
系列文章介紹 Web 常見的資安漏洞,說明漏洞的實作方式以及在 .NET 環境該如何防禦的最佳實務。本次介紹的內容為 Broken Access Control 無效的存取控制。
說明
攻擊者會藉由操作 Url, HTML, Payload, Session tokens, cookies 來達到水平或垂直的提權,從而取得非預期提供的資訊。
水平 (horizontal) 與垂直 (vertical) 的提權 (privilege escalation),水平是指使用者能夠取得同層級不同使用者的資訊,垂直則是指使用者能夠取得更高層級的使用者資訊。
操作的範例,以未檢查權限的 Url 為例:
https://sdwh.dev/userinfo/username=webber
https://sdwh.dev/userinfo/username=eva
https://sdwh.dev/userinfo/username=admin
防禦措施
權限存取模取使用 ABAC, ReBAC 優先於 RBAC
Least Privilege
Default Deny
Verify Aceess Request
使用日誌紀錄留下存取紀錄
限制存取或連線速率,避免自動化攻擊 (不要依賴雜湊命名的方式避免檔案被存取)
防禦思路
避免提供非必要的資源 (備份檔, .git)
盤點支援的靜態類型 (MIME)
盤點與確認所有檔案的可存取性
對於每一種 HTTP Method 都應該檢查權限
資源是否在不同協定下有相同的限制 (http, smb, ftp)
不要在網址上直接反映下載檔名,而是藉由編號對映 (Mapping) 的方式處理
避免跨應用程式集區的存取方式
.NET Solutions
Filter AOP 的方式限制存取 (Webform 如何達到 -> IHttpModule & Application_BeginRequest)
IIS Request Filter 基本限制
由集中的路由負責處理靜態資源存取 (不透過 IIS 提供)
🎵 實驗
- IIS 檔案存取 (Windows 驗證、匿名驗證)
- 驗證 IIS_IUSRS 是否可以達成跨網站存取功能
參考資料
https://owasp.org/www-community/attacks/
https://owasp.org/www-community/vulnerabilities/