IDOR leads to Account Takeover with JWT Week Screet から学ぶ

ソース:

medium.com

脆弱性:JWT, IDOR

 

訳:

最初はアカウントを登録してアプリケーションにログインしようとしましたが、最初はトークンを解析しようとは考えず、他の脆弱性を探し続けて。
2日後にシステムを解析しようとしたところ、次のことが判明しました。
ここで私は jwt トークンを試し。
これがデフォルトであるかどうかに関係なく、membrutefoce screet を試みることに興味を持って。

 

 

ここで、jwt トークンが Cookie に保存されていることがわかり、応答にはユーザーのプロフィールが表示されていることがわかり。
jwt のスクリプトを見つけることができれば、IDOR を実行できて。
どうすればよいでしょうか?
にアクセスして jwt.io 、トークンを復号化してみて。 

 

 

復号化すると、user_id が含まれる json 形式のデータが取得されることがわかります。
スクレットの侵入に成功すると、user_id を他の人の user_id に変更でき。

署名が無効であることがわかって。
赤いボックス内に未入力のスクレットがあり。

どうすればその秘密を知ることができますか?
ジョン・ザ・リッパーツールを使っています。

 


最初に jwt ファイルを作成しました。ファイルの内容はコピーしたトークンで。

 

 

そしてビンゴ! 探していたものを入手し。
それは、このアプリがトークン スクレットにデフォルトで設定するスクレットで。 
 

 

署名が有効に変更されたことがわかり。
これは、成功し、user_id を自由に変更できることを意味して。

トークンをburpsuiteに置いてみましょう。

 


user_id を 1368129 から1368128 変更し。

 

前に

ビンゴ! JWT Week Screet 経由で IDOR 脆弱性を入手し。

アカウントを引き継ぐにはどうすればよいですか?
ここで、ログイン アプリケーションが携帯電話番号と PIN のみを使用することを思い出し。
IDOR を使用して被害者の携帯電話番号を取得でき。

そしてログインページに直接行き。

 


私はすぐに被害者の携帯電話番号を入力しました 


どうすればピンを確認できますか?
ここでは暗証番号に問題がありますが、暗証番号を忘れた場合に異常が発生し。
変更したいパラメータを取得し。
以下を参照してください。 

 

 

番号を変更する

上の図では、論理的にユーザーがユーザー名に入力した内容に基づいてOTPコードが送信されるため、パラメータが疑われますが、ここではサーバーが誰でも編集できるPOSTリクエストをサーバー上に提供し。
ここで私は試しています被害者の番号を私の番号に変更し。 


そしてビンゴ! OTP コードを取得したら、利用可能なパラメータを使用して携帯電話番号を変更し、アカウントに OTP コードを入力し。 


そしてそれはうまくいきました!!! 新しい PIN を入力するように指示され。

 

アカウントを乗っ取ろうとしたところ、被害者のアカウントに侵入することができて。

 

 

ほなほな。