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