溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

篡改JWT是怎樣實現(xiàn)賬戶劫持

發(fā)布時間:2021-12-18 15:16:44 來源:億速云 閱讀:393 作者:柒染 欄目:安全技術

篡改JWT是怎樣實現(xiàn)賬戶劫持,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

JSON Web Token (JWT) 是基于RFC 7519標準定義的,以JSON形式在網絡應用間安全傳遞信息的一種緊湊而獨立的方法,尤其適用于分布式站點的單點登錄(SSO)場景。JWT攜帶的屬性信息通過HMAC算法的電子簽名方式被用來在客戶端和服務端之間進行身份驗證,其默認的簽名算法為HMAC SHA256。

JWT的結構

JWT主要由三個部分組成,各部分之間為.分開,它們分別是:

Header(頭部)

Payload(負載)

Signature(簽名)

樣式為:

xxxxx.yyyyy.zzzzz

無需token進行郵件地址驗證

我發(fā)現(xiàn)的漏洞是這樣的。通過利用目標系統(tǒng)的邀請功能并修改其中攜帶的JWT token信息,無需點擊確認鏈接,即可實現(xiàn)對用戶郵件地址和身份的驗證。假設我有一個郵箱地址是attacker@attacker.com,然后我在目標網站的邀請功能中發(fā)起對該郵箱地址的一個邀請操作,接下來,我登錄該郵箱attacker@attacker.com后,會在收件箱中收到一個URL形式攜帶JWT的確認鏈接。該過程在Burp中的響應如下:

篡改JWT是怎樣實現(xiàn)賬戶劫持

我在收件箱中收到的URL形式攜帶JWT的確認鏈接如下:

篡改JWT是怎樣實現(xiàn)賬戶劫持

鏈接后即是一串JWT token,通過網站https://jwt.io/,解碼該JWT token后的結果如下:

篡改JWT是怎樣實現(xiàn)賬戶劫持

到此,我第一時間想到的就是嘗試用上述邀請功能邀請目標網站管理員的對應郵箱admin@company.com,操作之后,Burp中的響應消息如下:

篡改JWT是怎樣實現(xiàn)賬戶劫持

然后,在收件箱中同樣也收到了一個攜帶JWT的URL鏈接,通過JWT編碼解碼操作,我嘗試把其中我自己邀請人的attacker@attacker.com更改為admin@company.com,把其中的id也更改為admin的ID,并把其時間戳(timestamp)即“created date”:”xxxxxxxx”也做了相應修改,然后再次通過編碼生成新的JWT。利用該JWT我就可以來確認用戶身份,并重置與郵箱admin@company.com對應的公司管理員用戶密碼。

篡改JWT是怎樣實現(xiàn)賬戶劫持

因此,后續(xù)可以利用該JWT的延伸憑據(jù)信息,去登錄目標網站公司如業(yè)務支持等不同業(yè)務端的SSO接口。

重置其他用戶密碼

該方法由于需要知道對方受害者用戶的ID號信息,因此并不適用于任意用戶,利用方式還是存在一定難度,但至少我可以通過注冊兩個用戶的方式來驗證漏洞。就比如用其它郵箱注冊了一個測試用戶(假設為Victim),從賬戶信息中可以看到其用戶id為:jyAzV7KhT,然后我用之前我的attacker@attacker.com發(fā)起密碼重置請求,然后從我的郵箱attacker@attacker.com中收到一個攜帶JWT的重置鏈接,如下:

篡改JWT是怎樣實現(xiàn)賬戶劫持

把該JWT放到https://jwt.io/的JWT解碼工具中解密,在右邊Decode區(qū)域得出具體的JWT三部份內容,接著,把其中的id更改為Victim賬戶的id:jyAzV7KhT。這樣就生成了Victim賬戶的密碼重置JWT了,把它放入上述URL確認鏈接之后,就能更改Victim賬戶密碼了!

篡改JWT是怎樣實現(xiàn)賬戶劫持

漏洞原因

目標網站在客戶端進行JWT的生成,這樣一來,就可導致JWT可被客戶端篡改的風險,安全的方式是把JWT放到服務端生成。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

jwt
AI