Shikata Ga Nai

Private? There is no such things.

MY FIRST AND SECOND BUGS ARE — 2FA BYPASSを訳してみた

Hello there, ('ω')ノ

 

1つ目と2つ目のバグは — 2FA バイパスを。

 

脆弱性

 MFAバイパス

 HTTPレスポンス操作

 情報漏えい

 

記事:

 https://medium.com/@nireshpandian19/my-first-and-second-bugs-are-2fa-bypass-1f6fd823b467

 

今回は、最初のバグと最初のバグの直後に見つけた 2 番目のバグに関するもので。

これらは、2FA バイパスにつながる不適切な認証コントロールで。

 

最初の1つ :

最初のバグは、暗号通貨ウォレットの Web サイト (redacted.com と呼びぶことに) で。

バグは非常に単純で、2FA 認証を持つアカウントは次のような応答を受け取り。

 

{
... ,
... ,
required: false
}

 

ダッシュボードにリダイレクトされ。

一方、2FA 認証が有効なアカウントは、以下のような応答を受け取り。

 

{
... ,
... ,
required: true
}

 

これらのパラメータを見て非常に興奮し、Burp プロキシを起動して。

これらのリクエストを傍受し、明らかに必要なパラメータの値を。

true から false に変更し。

クライアント側の応答操作と BOOM により、ダッシュボードにリダイレクトされて。

アカウントの詳細をすべて取得し、すぐにアカウントにログインして。

 

教訓:

応答のジューシーなパラメータを常に確認するようにして。

 

二つ目 :

これは複雑なためではなく、見つけるのが少し困難でしたが。

複数のエンドポイントが含まれていたため、それらを見つけるのに時間がかかり。

これはまったく別の Web サイトで (bluedacted.com と呼ぶことに)。

 

ここで最初に確認したのは、ログイン リクエストの応答で。

驚いたことに、応答は次のようになり。

 

400 BAD REQUEST
.
.
.
{
error:"xxx",
message:"xxx",
need2FA:true
}

 

ジューシーなパラメータ:「need2FA」 に気づいたとき。

最初のものと同じ種類の応答操作を試してみると。

同じ方法でダッシュボードにリダイレクトされ。

残念ながら、それだけで。

 

内部ダッシュボードとオプション ページにリダイレクトされましたが。

ログインしようとしたユーザの詳細を取得できず。

 

すぐに、bluedacted.com Web サイトがリクエストで認証トークンを。

使用していることがわかり。

このトークンは、2FA ステップが完了した場合にのみ提供され。

 

応答を操作したため、認証トークンを取得できず。

ブラウザによって行われたすべての要求に下記があり。

 

Authorization: Bearer undefined

 

その後、顧客が商品を注文できる注文ページに出くわして。

そこには、サーバに ajax リクエストを送信して。

顧客 ID とログインしている顧客の名前だけを取得するための。

ログイン フォームが含まれていて。

 

すぐに、2FA で保護されたアカウントの資格情報を試して。

OTP を要求することなく、nameとcustomer_IDを取得でき。

これでは十分ではなくて。

賢明なハッカーが行うように、これをエスカレートしてアカウントに。

ログインする必要があり。

開発者ツールに移動し、ブラウザからの ajax 応答を確認すると。

応答は、自分のアカウントの詳細と次のような認証トークンを含む JSON で。

 

{
"customer_ID": 1452,
"name": Magma,
"token": xxxxxxxxxxxxxxxx
}

 

以前の実際のログイン ページに急いでアクセスし。

Authorization: Bearer undefinedを、ここで取得した実際のトークンに置き換えると。

これもまた 2FA バイパスできて。

 

教訓:

すべてのログイン ページとフォームを常にくまなく調べるように。

 

Best regards, (^^ゞ