Shikata Ga Nai

Private? There is no such things.

Account Takeover - Smoking with ‘null’を訳してみた

 Hello there, ('ω')ノ

 

アカウントの乗っ取り-「null」での喫煙を。

 

脆弱性:

 アカウントの乗っ取り

 認証の欠陥

 

記事:

 https://shahjerry33.medium.com/account-takeover-smoking-with-null-e43df2c3bb41


JSONnull値を使用したアカウントの乗っ取りを見つけて。

アプリケーションには、ログインしている間に2つの異なるオプションがあって。

 パスワードでログイン

 トークンでログイン

 

そこで、「Login with Token」を選択すると。

トークンがメールに送信されて。

最初はパラメータの汚染を試したが失敗したものの

JSONデータ型のnull値について知って。

 

JSONデータ型のnull値については下記サイトを。

 https://www.ibm.com/docs/en/baw/19.x?topic=format-handling-json-null-empty-arrays-objects

 

f:id:ThisIsOne:20210731100957p:plain

 

そこで、ログインを成功させるためにトークンを入力する必要があるログイン要求を。

キャプチャして、それをBurpリピータに送信して。

次に、tokenパラメータの値をnullに変更するだけで、ログインに成功して。

それから、support@comany.comのアカウントを引き継ぐことを考えて。

最初にサポートメールを使ってサインアップしようとすると。

アカウントはすでに作成されていて。


ログイン機能


トークンのオプションを選択


Burpでリクエストをキャプチャ


リピーターに送信


トークンパラメータに値nullを入力

ログインに成功

 

この脆弱性を見つけた流れは。

1.サインアップページに移動し、自分自身を登録して。

  

f:id:ThisIsOne:20210731101342p:plain

 

リクエスト内容は下記のとおりで。

 

f:id:ThisIsOne:20210731101704p:plain

 

2.トークンが必要なログインページのリクエストをキャプチャして。

tokenパラメータの値をnullに変更して。

 {“token”:null}

 

すると、ログインに成功したことがわかって。

 

f:id:ThisIsOne:20210731101556p:plain

 

3.support@company.comの電子メールを確認すると。

すでに登録されているので、[Login with Token]オプションを選択して。

会社のサポートアカウントを引き継ぐことに。

 

f:id:ThisIsOne:20210731101506p:plain

 

覚えておくべきポイントは下記のとおりで。

1.csrfトークンが渡されてそれをバイパスするのにnull値をインジェクションできて。

2.ログインにOTPが必要な場合は、null値のインジェクションを試すことができて。

 ※OTP=ワンタイムパスワード

3.2FAが必要な場合は、null値のインジェクションを試すことができて。

 

Best regards, (^^ゞ