嘗試偽造合法token值繞過CSRF
阿新 • • 發佈:2022-01-27
token概述
token是為了防止csrf而衍生的技術。黑客可以通過xss來獲取使用者的cookie,理論上也能獲取當時頁面上的token值,但是也僅僅是當時頁面上的token值,如果與使用者進行其他頁面的跳轉從而獲取新的token值,xss是無法獲取的。因此,有效地防範了csrf,但是能否偽造一個我們所需要的token值,配合xss獲取的cookie值進行我們想要的操作。
實驗猜想
如下場景
1)在更改密碼的介面上存在隨機token,但是該頁面上不存在xss漏洞。
2)通過其他頁面利用xss漏洞獲取使用者的cookie
3)然後惡意使用者在 修改密碼頁面 獲取的token值配合獲取的cookie進行資料的提交操作(偽造的token也是通過對伺服器的合法請求)
4)如果隨機的token不與cookie進行繫結儲存的話,理論上可以達到偽造token的行為
環境準備
1)phpstudy2016
2)DVWA :CSRF(high)
3)準備兩個使用者
賬號型別 | 賬號 | 密碼 |
---|---|---|
正常使用者 | admin | 123456 |
惡意使用者 | 1337 | charley |
操作過程
1)正常使用者更改密碼,但是提交錯誤的token
正常的token
更改token
舊密碼能夠正常登陸,證明修改密碼行為失敗,只有合法的token才能正常修改使用者密碼。
2)嘗試偽造token,提交表單資料
正常使用者的隨機token值
81110ab1eee400821304d1e7a2b56575
惡意使用者的隨機token值
410db2df5528bdb4804813e0c887dc2b
3)將正常使用者的token進行更改,用偽造的token進行覆蓋(等同於:惡意使用者獲取正常使用者的cookie配合自己偽造的token提交)
4)密碼更改成功,證明偽造的token可用
總結
token應用需要注意:
1)繫結cookie與隨機token,防止上述情況的發生
2)約束token的時效性,防止偽造的token可以一直使用,或未使用但長期貯存等待使用