Shikata Ga Nai

Private? There is no such things.

How the use of hidden form fields lead to Email verification bypassを訳してみた

Hello there, ('ω')ノ

 

非表示フィールドの使用がどのように電子メール検証バイパスにつながるかを。

 

脆弱性:

 電子メール検証バイパス

 サーバ側セキュリティのクライアント側の実施

 

記事:

 https://yashswarup12.medium.com/how-the-use-of-hidden-form-fields-lead-to-email-verification-bypass-3c8d7c25bd31

 

ターゲットをexample.comと仮定して。


概要:

Webアプリケーションハッカーのハンドブックによると。

非表示のHTMLフォームフィールドは、表面的に変更できない方法で。

クライアントを介してデータを送信するための一般的なメカニズムで。

フィールドに非表示のフラグが付けられている場合は。

そのフィールドは画面に表示されず。

ただ、フィールドの名前と値はフォーム内に保存されて。

ユーザがフォームを送信するとアプリケーションに返送されて。

 

Burp Suiteには、特定のHTML機能を自動的に変更する機能が組み込まれていて。

非表示のフォームフィールドを再表示したり。

入力フィールドの制限を削除したり。

JavaScriptフォームの検証を削除したりできて。

これを使用するには、プロキシの[Option]タブに移動して。

[Response Modification]セクションを見つけて。

[Unhide hidden form fields]の横にあるチェックボックスをクリックして。

 

f:id:ThisIsOne:20210913162102p:plain


搾取:

テストしたスコープには、https://example.comという1つのサブドメインのみで。

Burpプロキシをオンにして。

Burp Suiteの「Unhide hidden form fields」機能を有効にして。

ブラウザでWebアプリケーションの機能を試して。

そのWebアプリケーションのすべての機能を調べて理解することに。

 

1.サインアップ後にメールに表示される確認リンクをクリックして。

 メールを確認した後にのみ、アカウントにアクセスできて。

 

2.メインの電子メールはWebサイトでのサインアップ時に使用したものであって。

 Webアプリケーションでは編集できずに永続的で。

  wazirsec@example.com

 

3.アカウントにセカンダリメールを追加することもできるものの。

 いつでも削除でき、それらも確認する必要があって。

  wazirsec1@example.com

 

f:id:ThisIsOne:20210913162137p:plain

 

4.セカンダリメールを確認した後に、アカウントへのフルアクセスも取得して。

   wazirsec

 

f:id:ThisIsOne:20210913162205p:plain

 

Webサイトのプロフィールページにアクセスしたときに。

Burpの非表示フォームフィールドの再表示機能を使用していると。

そのページ2つの非表示フォームフィールドが見つかって。

 

    example_user_profile[email]
    example_user_profile[_token]

 

f:id:ThisIsOne:20210913162232p:plain

 

example_user_profile[email]は、プライマリメールと同じ値を持っていたので。

この非表示のメールフォームフィールドを悪用して。

ウェブアプリケーションで許可されていないプライマリメールアドレスを。

変更できるのではないかと思って。

 

メールの値をwazirsec1@example.comに変更し、更新をクリックすると。

メールフィールドにwazirsec@example.comは、確認されていないとのことで。

削除できるようになっていて。

 

f:id:ThisIsOne:20210913162413p:plain

 

プライマリのメールを削除しようとすると、正常に削除できて。

 

f:id:ThisIsOne:20210913162347p:plain

 

そのメールアドレスを削除した後に。

自分のプロフィールは、下記のようになって

 

f:id:ThisIsOne:20210913162321p:plain

 

メインのメールアドレスwazirsec1@example.comに変更すると。

先ほど確認した電子メールの非表示フォームフィールドに指定した値になったので。

この脆弱性を利用して確認なしで自分の電子メールアドレスを。

任意の電子メールアドレスに変更することができたわけで。

 

緩和:

製品の価格などの重要なデータをわかりやすく表示しないことで。

「非表示」フィールドにあるからといって。

それが見つからないというわけではなくて。

ページの実行時にのみ非表示になって。

フィールドとそのデータは、ページソースで簡単に見つけることができて。

このようなデータは、非表示フィールドを使用するのではなくて。

バックエンドデータベースに簡単に保存すべきで。

 

Best regards, (^^ゞ