Shikata Ga Nai

Private? There is no such things.

Unauthorized access to all the user’s account.を訳してみた

Hello there, ('ω')ノ

 

すべてのユーザのアカウントへの不正アクセスを。

 

脆弱性:

 アカウントの乗っ取り

 認証バイパス

 JWTの設定ミス

 

記事:

 https://medium.com/@rahulnaidu_92192/unauthorized-access-to-all-the-users-account-c087511fe42a

 

ツール:

 Burp Suite


今回は、すべてのユーザのアカウントへの不正アクセスを取得して。

すべてのデータを表示する方法について。

(パスワードを知らなくても誰かのアカウントをハッキングすることができて)

 

以下は、ユーザにユーザIDとパスワードの入力を求めるログインポータルで。

 

f:id:ThisIsOne:20211019122415p:plain

 

すべてのユーザのユーザ名が固定パターンになっていることを確認して。

したがって、ユーザ名は次のようになっていて。

 *******001、*******002、*******003など。

 

パスワードは、すべてのユーザに固有で。

最初に2つのアカウント(被害者アカウントと攻撃者アカウント)を作成して。

これで、攻撃者のユーザ名とパスワードを入力して。

Burp Suiteを使用してこのリクエストの応答を確認すると。

f:id:ThisIsOne:20211019122440p:plain

 

サーバーからの応答を確認すると、サーバはJWT(JSON WEB TOKEN)を送信して。

 

JSON WEB TOKENとは、Webを介して(2者間で)情報を安全に転送するために。

使用されるJSONオブジェクトで。

認証システムに使用できて、情報交換にも使用できて。

トークンは主にヘッダ、ペイロード、署名で構成されていて。

これらの3つの部分はドット(.)で区切られていて。

 

jwtトークンをデコードすると、送信ユーザIDであることがわかって。

 

f:id:ThisIsOne:20211019122512p:plain

 

ここのペイロードデータで、攻撃者のユーザ名が*********2であることがわかったので。

ペイロードデータのユーザ名を被害者のユーザ名に変更して。

新しいjwtトークンを取得して、応答でそれを自分のトークンに置き換えて。

ブラウザに応答を転送して。

被害者のアカウントにログインできるかどうかを確認することに。


しかし、応答を置き換えて転送すると。

すぐに、ブラウザには被害者のユーザ名のみが表示されたものの。

完全にログインできず。


しかし、ここにいくつかの設定ミスがあると確信していたので。

ステップ1のプロセスを再試行して、応答を確認して。

今回は、ブラウザに応答を転送する前に。

下記のようにブラウザ自体でユーザ名を被害者のユーザ名に変更することに。

f:id:ThisIsOne:20211019122539p:plain

 

ここで、ユーザ名を*******106に変更して、ブラウザへの応答を進めると。

予想どおり、サーバは検証と応答操作の欠如に対して脆弱で。

被害者のアカウントにログインできて。

以下のスクリーンショットのようにすべての詳細を確認して。

被害者のアカウントにログインできて。

 

f:id:ThisIsOne:20211019123702p:plain

 

Best regards, (^^ゞ