訪問:
主體與客體之間的信息流動。主動的是主體,被動的是客體。
主體訪問客體的四個步驟:
身份標識->身份驗證(數據庫匹配信息,判斷身份是否合法)->授權(判斷身份是誰,管理員或正常賬戶)->審計(記錄操作)
訪問控制模型:
自主訪問控住(DAC 大部分使用):由客體的屬主自主對客體進行管理,自主決定是否將訪問權限授予其他主體。
強制訪問控制(MAC 軍方或重要政府部門用):安全策略高於一切,由管理員配置,訪問控制由系統實施。
角色型訪問控制(RBAC):使用集中管理的控制方式來決定主體和客體如何交互,更多用於企業中,根據不同的職位來分配不同的權限。
邏輯漏洞:
代碼之後是人的邏輯,人更容易犯錯,所以邏輯漏洞一直都在,而且由於邏輯漏洞產生的流量多數爲合法流量,一般的防護手段或設備無法阻止,也導致了邏輯漏洞成爲了企業防護中的難題。
邏輯漏洞分類:
- 驗證機制缺陷
- 會話管理缺陷
- 權限管理缺陷
- 業務邏輯缺陷
- 登錄缺陷
- 支付邏輯缺陷
- API亂用
驗證機制
身份標識:whoknows、who has、who is
最常見的方式是信息系統要求用戶提交用戶名與密碼。
權限控制:
從控制力度看,可以將權限管理分爲兩大類:
- 功能級權限管理
- 數據級權限管理
從控制方向看,也可以將權限管理分爲兩大類: - 從系統獲取數據比如查詢
- 向系統提交數據比如刪除修改
業務邏輯:
每個業務系統都具有不用的業務邏輯,而業務邏輯在人,充分了解程序員思維有助於找到其中的問題所在。
暴力破解
可利用多餘的提示信息(登錄失敗存在的一些特殊提示信息)和可預測信息(類似user100、user101的用戶名、手機號等信息或者初始密碼)
弱口令攻擊
無效的防重放措施:
比如防止CSRF的token。可以利用Burp Suit Macros(宏)繞過。
無效的登錄失敗功能處理:
- 圖片驗證碼繞過:驗證碼不生效、不更新、不失效,驗證碼可預測、刪除、獲取,驗證碼可識別,尋找其他登錄頁面。
- 短信驗證碼繞過:4/6位暴力破解,篡改手機號,篡改response。
會話管理問題
令牌(或是Request)具有含義的數據,如:
用戶名稱:user、admin、system
用戶標識:0001、0002、0003
用戶權限:admin、00101、01000
令牌可預測:
用戶令牌具有一定的規律,可被其他人預測,如身份證號、學號、手機號、時間等
思考:十位的時間戳和十位的順序碼是否安全?
理解:每一秒都會產生十的十次方的可能,爆破難度極大。
令牌可獲取:
用戶令牌採取不安全的傳輸、存儲,易被他人獲取:
用戶令牌在URL中傳輸:明文傳輸、發送給他人。
用戶令牌存儲在日誌中:未授權用戶易獲取。
令牌不失效(會造成固定會話攻擊):
用戶令牌採取不安全的傳輸、存儲,易被他人獲取:
令牌有效期過長(在一段時間內使令牌失效)、令牌嘗試次數過多(提交次數一定時要使令牌無效)、無效令牌的重置。
越權操作
越權操作是信息系統中較爲常見的一種漏洞,指的是信息系統對用戶的操作權限審覈不嚴,從而使得用戶進行了自己權限之外的操作。
權限控制的方法:
防火牆ACL策略:主體-規則-客體
Linux文件權限:主體-讀寫、執行-客體
web應用權限:基於URL、基於方法、基於數據
RBAC:web應用系統常採用此模型。
未授權訪問
未授權訪問需要安全配置或權限認證的地址、授權頁面存在缺陷,導致其他用戶可以直接訪問,從而引發重要權限可以被操作、數據庫、網站目錄等敏感信息泄露。
目前主要存在未授權訪問的漏洞有:
Web應用權限
正常情況下,管理後臺的頁面應該只有管理員才能夠訪問,而且搜索引擎的爬蟲也不應該搜索到這些頁面,但這些系統未對用戶訪問權限進行控制,導致任意用戶只要構造出了正確URL就能夠訪問這些頁面或者用爬蟲爬到頁面目錄。
防禦解決方案:
隱藏:只能組織用戶無法猜測到後臺頁面,進行大量爆破還是可能掃描出來的。
頁面權限控制:可以阻止非認證用戶登錄後臺。
最好是管理員在內網進行管理。用戶在外網進行搜索。
測試方法:
- Google-Hacking
- 域名爆破
- 端口服務掃描
- 域名關聯
越權操作:
水平越權:攻擊者嘗試訪問相同級別的用戶資源。
垂直越權:攻擊者嘗試訪問更高級別的用戶資源。
修復總結:
水平越權:
- 設置合理的會話管理機制,將有關用戶標識存在服務器上。
- 涉及到關於用戶隱私的操作時從session中取出用戶標識(如id)進行操作。
- 不要輕信用戶的每個輸入。
垂直越權:
設置合適的會話管理機制,在每個涉及到高權限操作的頁面進行會話驗證。
API邏輯漏洞
現在是APP盛行的時代,客戶端使用API與服務器進行數據傳輸,所以API安全問題頻出。比如:參數校驗、短信郵箱炸彈、關鍵參數不加密等等。
未加密風險:憑據、傳輸數據公開、資源信息泄露。