Hello there, ('ω')ノ
パスワードのリセットによる4番目のアカウントの乗っ取り
脆弱性:
アカウントの乗っ取り
パスワードリセットの欠陥
記事:
https://infosecwriteups.com/my-fourth-account-takeover-through-password-reset-28a36dfebaf
今回は、redacted.comと呼ぶことに。
プログラムを偵察した後に、パスワードリセットを調べ始めて。
いつも(Account Takeover (ATO) 、ホストヘッダインジェクション)の脆弱性から。
ユーザがパスワードをリセットしたい場合は、メールアドレスを入力すると。
パスワードリセットリンクがメールアドレスに送信されて。
アカウントのパスワードのリセットをリクエストすると。
パスワードのリセットリンクは下記のとおりです。
https://redacted.com/update-password/12d52catcbc344ec-9871-85ac6390d863/1621264272
パスワードリセットリンクは、ユーザIDとランダムな10桁のコードで構成されて。
ここで興味深かったのは、任意のユーザアカウントを引き継ぐことができる点で。
これは、10桁のコードがシリアルコードであるため。
ランダムな値は生成されずにシリアル値で。
つまり、パスワードをリセットするように求められた場合は。
アカウントとコードが「1618963650」で、リセットをリクエストしていて。
被害者のアカウントのパスワードは、コード「1618963720」になっていて。
最後の3つの数字のみが異なっているので、000から999の範囲で。
ブルートフォース攻撃を実行できるわけで。
現在の問題は、ユーザIDが公開されておらず。
このIDをリークしたエンドポイントを検索することで。
GoogleDorksを使用しても何も得られなくて。
そこでサイトは、ユーザが記事を公開できて。
特定の記事をユーザに報告する機能があって。
ユーザに記事を報告すると、ユーザの記事が見つかることがわかったので。
リクエストで、IDがリークされるので。
再現する手順 :
1.アカウントのパスワードのリセットをリクエストして。
2.被害者のアカウントのパスワードのリセットをリクエストして。
3.次に、IDを被害者IDに変更して。
同じ10桁のコードを使用して、最後の3桁に対して。
ブルートフォース攻撃のみを実行すると正常に完了して。
4.このリンクでブルートフォース攻撃を実行して。
10桁のコードの下の3桁を指定して。
https://redacted.com/update-password/12d52catcbc344ec-9871-85ac6390d863/1621264272
Best regards, (^^ゞ