1. 程式人生 > 其它 >嘗試偽造合法token值繞過CSRF

嘗試偽造合法token值繞過CSRF

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可以一直使用,或未使用但長期貯存等待使用