Hello there, ('ω')ノ
非表示フィールドの使用がどのように電子メール検証バイパスにつながるかを。
脆弱性:
電子メール検証バイパス
サーバ側セキュリティのクライアント側の実施
記事:
ターゲットをexample.comと仮定して。
概要:
Webアプリケーションハッカーのハンドブックによると。
非表示のHTMLフォームフィールドは、表面的に変更できない方法で。
クライアントを介してデータを送信するための一般的なメカニズムで。
フィールドに非表示のフラグが付けられている場合は。
そのフィールドは画面に表示されず。
ただ、フィールドの名前と値はフォーム内に保存されて。
ユーザがフォームを送信するとアプリケーションに返送されて。
Burp Suiteには、特定のHTML機能を自動的に変更する機能が組み込まれていて。
非表示のフォームフィールドを再表示したり。
入力フィールドの制限を削除したり。
JavaScriptフォームの検証を削除したりできて。
これを使用するには、プロキシの[Option]タブに移動して。
[Response Modification]セクションを見つけて。
[Unhide hidden form fields]の横にあるチェックボックスをクリックして。
搾取:
テストしたスコープには、https://example.comという1つのサブドメインのみで。
Burpプロキシをオンにして。
Burp Suiteの「Unhide hidden form fields」機能を有効にして。
ブラウザでWebアプリケーションの機能を試して。
そのWebアプリケーションのすべての機能を調べて理解することに。
1.サインアップ後にメールに表示される確認リンクをクリックして。
メールを確認した後にのみ、アカウントにアクセスできて。
2.メインの電子メールはWebサイトでのサインアップ時に使用したものであって。
Webアプリケーションでは編集できずに永続的で。
wazirsec@example.com
3.アカウントにセカンダリメールを追加することもできるものの。
いつでも削除でき、それらも確認する必要があって。
wazirsec1@example.com
4.セカンダリメールを確認した後に、アカウントへのフルアクセスも取得して。
wazirsec
Webサイトのプロフィールページにアクセスしたときに。
Burpの非表示フォームフィールドの再表示機能を使用していると。
そのページ2つの非表示フォームフィールドが見つかって。
example_user_profile[email]
example_user_profile[_token]
example_user_profile[email]は、プライマリメールと同じ値を持っていたので。
この非表示のメールフォームフィールドを悪用して。
ウェブアプリケーションで許可されていないプライマリメールアドレスを。
変更できるのではないかと思って。
メールの値をwazirsec1@example.comに変更し、更新をクリックすると。
メールフィールドにwazirsec@example.comは、確認されていないとのことで。
削除できるようになっていて。
プライマリのメールを削除しようとすると、正常に削除できて。
そのメールアドレスを削除した後に。
自分のプロフィールは、下記のようになって
メインのメールアドレスをwazirsec1@example.comに変更すると。
先ほど確認した電子メールの非表示フォームフィールドに指定した値になったので。
この脆弱性を利用して確認なしで自分の電子メールアドレスを。
任意の電子メールアドレスに変更することができたわけで。
緩和:
製品の価格などの重要なデータをわかりやすく表示しないことで。
「非表示」フィールドにあるからといって。
それが見つからないというわけではなくて。
ページの実行時にのみ非表示になって。
フィールドとそのデータは、ページソースで簡単に見つけることができて。
このようなデータは、非表示フィールドを使用するのではなくて。
バックエンドデータベースに簡単に保存すべきで。
Best regards, (^^ゞ