您好,登錄后才能下訂單哦!
篡改JWT是怎樣實現賬戶劫持,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
JSON Web Token (JWT) 是基于RFC 7519標準定義的,以JSON形式在網絡應用間安全傳遞信息的一種緊湊而獨立的方法,尤其適用于分布式站點的單點登錄(SSO)場景。JWT攜帶的屬性信息通過HMAC算法的電子簽名方式被用來在客戶端和服務端之間進行身份驗證,其默認的簽名算法為HMAC SHA256。
JWT的結構
JWT主要由三個部分組成,各部分之間為.分開,它們分別是:
Header(頭部)
Payload(負載)
Signature(簽名)
樣式為:
xxxxx.yyyyy.zzzzz
我發現的漏洞是這樣的。通過利用目標系統的邀請功能并修改其中攜帶的JWT token信息,無需點擊確認鏈接,即可實現對用戶郵件地址和身份的驗證。假設我有一個郵箱地址是attacker@attacker.com,然后我在目標網站的邀請功能中發起對該郵箱地址的一個邀請操作,接下來,我登錄該郵箱attacker@attacker.com后,會在收件箱中收到一個URL形式攜帶JWT的確認鏈接。該過程在Burp中的響應如下:
我在收件箱中收到的URL形式攜帶JWT的確認鏈接如下:
鏈接后即是一串JWT token,通過網站https://jwt.io/,解碼該JWT token后的結果如下:
到此,我第一時間想到的就是嘗試用上述邀請功能邀請目標網站管理員的對應郵箱admin@company.com,操作之后,Burp中的響應消息如下:
然后,在收件箱中同樣也收到了一個攜帶JWT的URL鏈接,通過JWT編碼解碼操作,我嘗試把其中我自己邀請人的attacker@attacker.com更改為admin@company.com,把其中的id也更改為admin的ID,并把其時間戳(timestamp)即“created date”:”xxxxxxxx”也做了相應修改,然后再次通過編碼生成新的JWT。利用該JWT我就可以來確認用戶身份,并重置與郵箱admin@company.com對應的公司管理員用戶密碼。
因此,后續可以利用該JWT的延伸憑據信息,去登錄目標網站公司如業務支持等不同業務端的SSO接口。
該方法由于需要知道對方受害者用戶的ID號信息,因此并不適用于任意用戶,利用方式還是存在一定難度,但至少我可以通過注冊兩個用戶的方式來驗證漏洞。就比如用其它郵箱注冊了一個測試用戶(假設為Victim),從賬戶信息中可以看到其用戶id為:jyAzV7KhT,然后我用之前我的attacker@attacker.com發起密碼重置請求,然后從我的郵箱attacker@attacker.com中收到一個攜帶JWT的重置鏈接,如下:
把該JWT放到https://jwt.io/的JWT解碼工具中解密,在右邊Decode區域得出具體的JWT三部份內容,接著,把其中的id更改為Victim賬戶的id:jyAzV7KhT。這樣就生成了Victim賬戶的密碼重置JWT了,把它放入上述URL確認鏈接之后,就能更改Victim賬戶密碼了!
目標網站在客戶端進行JWT的生成,這樣一來,就可導致JWT可被客戶端篡改的風險,安全的方式是把JWT放到服務端生成。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。