Shikata Ga Nai

Private? There is no such things.

Open Redirect via Sendgrid Email Misconfigurationを訳してみた

Hello there, ('ω')ノ

 

Sendgrid メールの設定ミスによるオープン リダイレクトを。

 

脆弱性:

 オープンリダイレクト

 

記事:

 https://medium.com/@rifqihz/open-redirect-via-sendgrid-email-misconfiguration-cec4ccb07f9a

 

簡単な情報:

オープン リダイレクト (CWE-601) は、ユーザが外部 Web サイトへの入力を制御し

それを使用してリダイレクトできる場合の脆弱性で。

今回は、会社のWeb サイトを xyz.com と呼ぶことに。

 

メールアドレス変更機能によるアカウント乗っ取りの脆弱性を探していて。

電子メール アドレスを変更するには、新しい電子メール アドレスからの

OTP が必要で。

しばらく探し回った後、残念ながら脆弱性は見つからず。

 

それからプロフィールページに移動すると、ニックネームフォームが

あることがわかり。

ニックネームを「www.evil.com」と「http://evil.com」に変更してみて。

しかし、エラーは発生しなかったので、

ニックネームでの記号の使用に制限はないと思って。

 

以前、メールアドレスを変更してメールを確認したところ、

メールの中に自分のニックネームが記載されていて。

次に、メールアドレスを再度変更して、ニックネームがメール内で

どのように変換されるかを確認して。

 

www.evil.com 様、電子メール アドレス変更リクエストを受け取りました。
認証コードで本人確認が完了すると、新しいメールアドレスでサービスをご利用いただけるようになります。メールアドレス変更ページで次の認証コードを入力してください。

認証コード:123456....------------------------------------------ ------------------------

 

http://www.evil.com 様、電子メール アドレスの変更リクエストを受け取りました。
認証コードで本人確認が完了すると、新しいメールアドレスでサービスをご利用いただけるようになります。メールアドレス変更ページで次の認証コードを入力してください。

検証コード: 123456....

 

www.evil.com は http://www.evil.com へのリダイレクト リンクになり。

しかし、 http://www.evil.com を使用しようとすると、

link.xyz.com/ls/click?upn=some_long_random_string のようなリンクが生成され、

これも http://www.evil.com にリダイレクトされて。

 

なぜそうなったか。

click?upn=some_long_random_string は、Sendgrid のクリック追跡機能で。


https://docs.sendgrid.com/ui/account-and-settings/tracking

 

xyz の Sendgrid メールの構成に誤りがあり、ニックネームが

link.xyz.com に上書きされてしまい。

その時点で私は未解決のリダイレクトバグを見つけたのですぐに報告して。

 

レポートが情報として閉じられたのと同じ日に、xyz.com のルート パスに

外部リンクにリダイレクトする return_to パラメータがあることがわかりましたが

それはホワイトリストに登録されたドメインのみを受け入れるように

制限されていて。

 

それから、より良い攻撃フローのための新しいアイデアを思いつき。

自分のニックネームでリンクを生成でき、生成されたリンクは

link.xyz.com ドメイン内にあったためで。

では、なぜ link.xyz.com をリダイレクト パラメータとして使用しようとしないのか。

 

自分の理論はうまくいき。

link.xyz.com をパラメータとして使用して evil.com にリダイレクトできて。

最後に、最終的なオープン リダイレクト ペイロードは次のようになり。


xyz.com/?return_to=link.xyz.com/ls/click?upn=some_long_random_string

 

リダイレクトフロー:

xyz.com ⇨ link.xyz.com/ls/click?upn=some_long_random_string ⇨ www.evil.com

 

Best regards, (^^ゞ