Hello there, ('ω')ノ
3日間のアカウント乗っ取りを。
脆弱性:
ロジックの欠陥
パスワードのリセットの欠陥
アカウントの乗っ取り
ブルートフォース
レート制限の欠如
記事:
https://medium.com/@__mr_beast__/the-3-day-account-takeover-269b0075d526
ツール:
Burp Suite
今回は、どのようにしてアカウントを乗っ取ることができたかを。
プライベートプログラムだったので「redacted.com」と呼ぶことに。
はじめに偵察から始めて、いくつかの隠しディレクトリを探し始めたものの。
見つけられず。
その後、Webアプリケーションでユーザが自分で登録できることがわかって。
アカウントを作成したときに、いくつかの論理的なバグを探すことに。
そこで、「パスワードのリセット」機能のテストを続けるのに。
アカウントからログアウトして。
アカウントの「パスワードリセットリンク」をリクエストすると。
パスワードをリセットするためのリンクを受け取って。
リンクには、idとtokenの2つのパラメータがあって。
IDは数値で長さは8で、トークンは英数字で長さは6で。
https://redacted.com/password-reset?id=14129302&token=8a5edb
トークンをよりよく理解するために。
「redacted.com」でさらに2つのアカウントを作成することに。
3つのアカウントすべてのパスワードリセットリンクをリクエストして。
それらを使用してパスワードを変更して。
これを3回繰り返して、idパラメータとtokenパラメータの値を比較するために。
パスワードリセットリンクは12個あり、アカウントごとに4個あって。
idとtokenパラメータのすべての値を書き留めて。
idの値は、各アカウントで同じだったため、簡単に見つけることができて。
自分のアカウントでidの値を探し始めると。
自分のプロファイルのソースコードで見つけることができて。
ここで難しいのは、tokenパラメータの値が何を意味するのかを見つけることで。
トークンの値は、0〜9の26個の小文字のアルファベットと数字で。
合計36文字(36⁶= 2176782336)の組み合わせだと大きな数字となるので。
ブルートフォースの可能性はなくて。
他のバグを探しても、脆弱性は1つも見つからず。
自分が書いたメモのトークンの値を見ると怪しいことに気づいて。
トークンの値は6文字の長さでしたが。
下記の特定の小文字のアルファベットと数字のみで構成されていて。
a、b、c、d、e、1、5、8、0
値がこのようになっている理由はわかりませんが。
この程度だとブルートフォース攻撃は可能で。
9⁶= 531441の組み合わせを試すだけでいいので。
Burp SuiteのIntruderを起動し、トークンの値を総当たり攻撃し始めることに。
レート制限はないので、トークンの正しい値を取得して。
任意のアカウントを引き継ぐことができて。
Best regards, (^^ゞ