Shikata Ga Nai

Private? There is no such things.

Abusing JSON Web Token to steal accountsを訳してみた

Hello there, ('ω')ノ

 

JSON Web Tokenを悪用してアカウントを盗むを。

 

脆弱性:

 IDOR

 

記事:

 https://filipaze.medium.com/abusing-json-web-token-to-steal-accounts-3000-b9f7daeaef81

 

JWTとは、サーバ上のセッションデータを追跡する必要をなくすことで。

認証に対するステートレスソリューションを提供して。

JWTを使用すると、セッションデータをJWTの形式で。

クライアントに直接安全かつ確実に保存できて。

 

JWTの例:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

 

最初の部分であるHEADERは、アルゴリズムとトークンタイプを示していて。

2つ目は、ペイロード自体で渡す情報が含まれていて。

最後に検証された署名は、トークンが編集されるのを防ぐもので。

 

f:id:ThisIsOne:20210919150324p:plain

 

JWTについて詳しくは、下記を。

 https://jwt.io/introduction

 

f:id:ThisIsOne:20210919145931p:plain

 

脆弱性の検出と悪用:

XSS、SQLインジェクション、IDORなどのバグを探していたものの。

ターゲットはかなり安全だったので、認証フローのバグを探し始めまることに。

2つのJWTの唯一の違いは、ペイロードに存在するIDであることに気付いて。

この値がユーザのアカウント番号であることがわかったので。

IDを被害者のIDに変更すると、どのアカウントにもアクセスできて。

 

被害者のIDを確認する方法:

専用のログインおよび登録ページはなかったので。

ユーザは自分のメールアドレスを入力し、[次へ]をクリックすると。

サーバは電子メールをチェックして。

ログインまたは登録のためにユーザを転送するものの。

この過程でIDが漏洩していて。

電子メールが存在する場合は、電子メールとIDを使用して

下記のようにリクエストが送信されて。

 email=victim@gmail.com&id=123456

 

Best regards, (^^ゞ