JWT安全:假密鑰【簽名隨便寫實現越權繞過.】
JSON Web 令牌 (JWT)是一種在系統之間發送加密簽名 JSON 數據的標準化格式。理論上,它們可以包含任何類型的數據,但最常用于在身份驗證、會話處理和訪問控制機制中發送有關用戶的信息(“聲明”)。
與傳統會話令牌不同,服務器所需的所有數據都存儲在客戶端的 JWT 本身中。這使得 JWT 成為高度分布式網站的熱門選擇,因為用戶需要與多個后端服務器無縫交互。
目錄:
JWT安全:假密鑰【簽名隨便寫實現越權繞過.】
實戰案例:簽名隨便寫可以繞過【實現越權】
1. 使用普通用戶進行登錄.
2. 修改JWT數據中的信息,實現越權.
(1)找一個剛剛登錄的數據包,然后發送到Repeater.
(2)修改第一個地方,訪問管理員頁面.
(3)修改第二個地方進行測試.
(4)把簽名算法設置為none
3. 實戰中的應用測試.
JWT 格式:頭【簽名的算法】.具體內容【修改字段】.簽名
漏洞的產生:開發為了省事,沒有按規定的去走,所以產生了漏洞.
理解:把cookie字段變成了這個JWT字段,用這個去驗證用戶身份.
(1)使用base64編碼進行錄進來的
(2)三個字段是使用用點 . 分隔
(3)字段最后面的簽名是用來驗證用戶信息的
Burp Suite 插件的安裝.
實戰案例:簽名隨便寫可以繞過【實現越權】
靶場鏈接:https://portswigger.net/web-security/jwt
1. 使用普通用戶進行登錄.
2. 修改JWT數據中的信息,實現越權.【從普通用戶改個管理員用戶】
(1)找一個剛剛登錄的數據包,然后發送到Repeater.
(2)修改第一個地方,訪問管理員頁面.【把這個修改為管理員的頁面URL】
(3)修改第二個地方進行測試.【把普通用戶直接修改為管理員用戶】【administrator】
注意:這里就可以發送看看能不能成功了.【如果能成功就是假密鑰】
(4)把簽名算法設置為none
解釋說明:如果直接登錄成功,說明他接收無簽名令牌,導致存在漏洞 實現越權。
復制一下JWT的數據包,用來登錄管理員賬號.
3. 實戰中的應用測試.
? ??
? ?
? ?