失效的身份認證和會話管理
- 認證和授權
- 認證的目的是為了認出用戶是誰, 授權的目的是為了決定用戶能夠做什么
- 認證是一個驗證憑據的過程。
- 認證分類: 單因素認證& 雙因素認證& 多因素認證
- 認證手段: 密碼、動態口令、手機驗證、數字證書、單點登錄(openid)
- 會話管理
- 認證成功后, 認證憑證的管理方式
- 會話管理方式: cookie based 方式、服務器端session 方式
1 cookie-based的管理方式
用戶登錄成功之后, 把登錄憑證寫到cookie里面, 並給cookie設置有效期,后續請求直接驗證存有登錄憑證的cookie是否存在以及憑證是否有效,即可判斷用戶的登錄狀態

2 基於server 端的服務端session的管理
服務端Session技術是用戶第一次訪問時,服務器就會創建的對象,並分配session 存儲空間。服務器為每一個session 都分配一個唯一的sessionid, 以保證每個用戶都有一個不同的
session對象。認證成功過,認證憑證計入到session存儲空間中。

身份認證和會話管理常見安全問題
- 賬號或密碼未做限制, 可暴力猜解。沒有限制登錄次數,加驗證碼
- 弱密碼策略, 允許簡單密碼存在, 如123456 , admin
- 密碼找回方案存在缺陷, 如: 密保問題設計
- 密碼更改方案存在缺陷
- cookie 作為認證憑證, 攜帶敏感信息
- Sessionid 沒有時效限制, 特別是單點登錄令牌在用戶注銷時沒有失效
- 成功注冊后, 會話ID 沒有輪轉。
- sessionid 和其他認證憑據使用未加密連接傳輸。
- 混用個性化數據的身份驗證數據,個性化數據適於永久的cookie,而身份驗證cookie不應是永久的
認證會話管理洞防御
- 設置驗證碼, 防止暴力猜解
- 強制復雜密碼策略, 不允許默認弱密碼存在
- 身份認證采用多因素認證
- 認證cookie 中,加入兩個時間, 一個是“ 即使一直在活動,也要失效" 的時間,一個是“ 長時間不活動的失效時間"
- cookie設置http only, 防止腳本讀取
- Cookie 設置Secure, 只允許https傳輸
- 網絡傳遞認證憑證采用SSL 加密
實驗:利用永久cookie重放http 會話
實驗環境:asp編寫的web 站點
實驗案例:利用burp嗅探該站點認證cookie特點,利用burp或桂林老兵cookie 欺騙工具,進行會話重放。
- 登錄網站后台,用burp工具抓包

user=admin&pass=admin&XuasYzm=19909&B1.x=42&B1.y=16
在這可以看到我們在網頁后台輸入的用戶名、密碼以及驗證碼。以及cookie中包含的adminpass,adminuser等信息。
復制以下信息
adminpass=21232f297a57a5a743894a0e4a801fc3; adminuser=admin
2.退出系統
3. 重新回到網頁登錄界面並使用burp抓包

將cookie信息中的adminpass、adminuser內容替換為
adminpass=21232f297a57a5a743894a0e4a801fc3; adminuser=admin
可以實現登錄
