Webセキュリティの小部屋

Twitter のフォローはこちらから Facebook ページはこちら RSSフィードのご登録はこちらから
公開日:2013年8月10日

Fiddler でリクエストパラメーターを改ざんする方法

Fiddler を使用するとリクエストパラメーターを簡単に改ざんすることができます。具体的なアプリケーションで Fiddler を使用して簡単さを感じてみましょう。

具体的なアプリケーション

今回は、PHP で以下の画面遷移をする Web アプリケーションを作成します。入力画面→確認画面→Welcome 画面といった簡単なものです。注意点は、確認画面で HIDDEN フィールドに入力した名前を非表示で持っているところです。

Fiddler

PHP のソースコード

・input.php

<html>
<body>
  <h1>名前を入力してください</h1>
  <form action="confirm.php" method="post">
    名前:<input type="text" name="name"><br>
    <input type="submit" value="送信">
    <input type="reset" value="リセット">
  </form>
</body>
</html>

・confirm.php

<?php
  $name = $_POST['name'];
?>

<html>
<body>
  <h1>登録しますか?</h1>
  <form action="welcome.php" method="post">
    名前:<?php echo htmlspecialchars($name, ENT_QUOTES, "UTF-8"); ?><br>
    <input type="submit" value="登録">
    <input type="button" value="戻る" onclick="javascript:history.back();">
    <input type="hidden" name="name" value="<?php echo htmlspecialchars($name, ENT_QUOTES, "UTF-8"); ?>">
  </form>
</body>
</html>

・welcome.php

<html>
<body>
  <h1>ようこそ、<?php echo htmlspecialchars($_POST['name'], ENT_QUOTES, "UTF-8") ?>さん</h1>
</body>
</html>

入力値パラメーターの改ざん

まずは、通常通りに Fiddler を使ってリクエストの内容を確認しましょう。ブラウザで入力画面を表示して、Fiddler を起動します。そして名前を「yamada」と入力して「送信」ボタンをクリックします。すると、以下の画面が表示されます。

pic01

ここで Fiddler を見てみましょう。リクエスト内容の下の方に、「name=yamada」と記述されているところがあります。ここがリクエスト送信された値の内容になります。

pic02

今度は、入力画面を表示してから、Fiddler で次のように設定してみましょう。ツールバーの Rules > Automatic Breakpoints > Before Requests を選択します。

pic03

 

この状態で、入力画面で名前を「yamada」と入力して「送信」ボタンをクリックします。すると、Fiddler が以下のように表示され、リクエストが途中でブレーク(中断)されます。

pic04

ここでリクエストパラメーターの「name=yamada」となっている場所を、「name=sato」と書き換えて「Run to Completion」ボタンをクリックします。すると、以下のように確認画面が表示されるので、パラメーターの改ざんが成功したことが分かります。簡単ですね。

pic05

HIDDEN パラメーターを改ざんする

HIDDEN フィールドに格納されたパラメーターは、ユーザーには見えないので安全だと思っている人はいないでしょうか。実は、HIDDEN パラメーターも普通のパラメーターと同じように簡単に改ざんされてしまいます。具体的に見てみましょう。

入力画面で名前を「yamada」と入力し、確認画面で「登録」ボタンをクリックすると以下の画面が表示されます。名前は、確認画面の HIDDEN フィールドに格納されていたものです。

pic06

先程は、入力画面表示時に Fiddler のブレークポイント設定をしましたが、今度は確認画面表示時にブレークポイント設定をしてください。そうすると、ブレークされて以下のようにリクエスト内容が表示されます。

pic07

HIDDEN フィールドだったのに、通常のフィールドと同じように表示されていますね。これは同じように改ざん可能だということです。「name=yamada」を「name=sato」に書き換えて、「Run to Completion」ボタンをクリックしてみましょう。

すると、以下のように Welcome 画面が表示されるので、改ざんが成功したことが分かります。HIDDEN フィールドだからといって安全ではないということですね。

pic08

おわりに

Fiddler を利用するとリクエストパラメーターを簡単に改ざんできることが分かったと思います。HIDDEN フィールドも安全ではありません。

今回は、Fiddler というツールを用いてリクエストパラメーターの改ざんを行いましたが、ツールを使わない方法や、別のツールもあるので HTTP のリクエストパラメーターは改ざん可能であることを前提として Web アプリケーションを構築する必要があります。

特に、ユーザーに改ざんされて困る情報、例えばショッピングサイトの価格などはブラウザにパラメーターを持つのではなく、サーバーにパラメーターを保存して安全に処理してください。

この記事が Web アプリケーションを安全に構築するきっかけになれば幸いです。


スポンサーリンク





カテゴリー:ツール

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA