失效的身份認證與會話管理漏洞利用方式有以下這些:
憑證填充:使用已知密碼的列表,對用戶進行逐一破解嘗試,如果程序不限制身份驗證嘗試,那么應用程序可作為密碼的orcal,來確認憑證是否有效,一旦憑證有效則攻擊成功。
弱密碼:使用簡單連續的數字或者字母,例如123456,嘗試破解用戶的密碼,成功率不高但是這種利用方式是最簡單沒有任何成本,一但成功一本萬利。
密碼破解:掌握了密碼的組合方式或者加密的細節,然后編寫相應的密碼字典,利用這些相應的密碼破解工具將字典內部的密碼使用不同的排列組合來嘗試破解密碼,這種利用方式成功率高,但是耗時嚴重。
不安全的密碼存儲:密碼采用明文、可逆的加密密碼或弱散列密碼,攻擊者可以嘗試抓取數據傳輸過程中的數據包,分析數據包內部的數據,因為數據沒有加密所以可以直接從數據包中查看的密碼。
cookie竊取偽造繞過:cookie放在客戶端,導致比較容易被竊取,只要該cookie長期有效,或者再器有效時間內,攻擊者偽造一個cookie則可以成功登錄網站,繞過原有的用戶認證。
越權訪問:分為垂直越權和水平越權,垂直越權就好比普通用戶可以使用管理員才能使用的功能,別入人員的增刪改查等。水平越權是同一級別的越權。
會話固定:攻擊者誘騙用戶使用擬定的session ID,導致應用程序不生成新的session ID,這樣原有的密碼認證則失效,攻擊者不需要認證則直接可以登錄。
會話劫持:攻擊者作為中間件參與用戶與服務器之間的數據交換。例如監聽敏感數據、替換數據等。由于攻擊者已經介入其中,他能輕易知道雙方傳輸的數據內容,還能根據自己的意愿去左右它。這個“中轉站”可以是邏輯上的,也可以是物理上的,關鍵在于它能否獲取到通信雙方的數據。
預防失效的身份認證與會話管理漏洞措施有以下這些:
始終生成新的會話。如用戶登錄成功生成新ID,登錄失敗后嘗試再次登錄時原有的ID失效,重新給與一個新ID,防止ID重用,
不應使用簡單或可預期的密碼恢復問題,登錄出錯時不應提供太多的提示,應使用統一的出錯提示。
登錄驗證成功后更換Session ID,并且最好使用128位以上具備隨機性的Session ID,不應在URL中顯示Session ID。
第一次登錄時強制修改密碼,對多次登錄失敗的賬號進行短時鎖定,設置會話閑置超時,超時后強制刷新頁面否則無法登陸。
提供用戶注銷退出功能,用戶關閉瀏覽器或者注銷時,刪除用戶Session;
保護Cookie,如在應用程序中為Cookie設置安全屬性為Secure flag和HttpOnly flag。
強制使用一定復雜度的密碼且加密存儲,登錄驗證使用用戶名、密碼、后臺驗證碼三者結合,驗證碼具有時效性,登錄失敗后的提示信息模糊化,不得提示具體是用戶名錯誤還是密碼錯誤。
登錄后的接口均需要攜帶認證后的token方可正確訪問,token具有時效性,超時將會失效,時效時長設置合理。
不需要認證的接口,也需要采用公司內部制定的token生成方法,前端工程師調用接口時攜帶,且前端代碼必須被混淆。