fiddler入門!fiddler2ダウンロード&使い方

Fiddlerはセキュリティのスペシャリストの方のページで紹介されているようにかなり強力なツールです。Fiddlerとはどんなツールかの説明から、ダウンロードの方法、使い方をやさしく解説していきます。

目次

1. fiddlerとは

Fiddlerとは、Windowsマシンで動作するhttpやhttpsなどのプロトコルに特化したプロキシサーバ―です。Fiddlerを使うとすべてのアプリの対象プロトコルを使用する要求がFiddler越しで送られるようになります。Fiddlerでそれらの要求を閲覧したり、書き換えて送ったり、独自に作成した要求を送る、などできます。

fiddler-image-00

2. fiddler2のダウンロード

Fiddlerは、http://getfiddler.comでダウンロードできます。Fiddlerのインストールは簡単です。インストーラの説明に従って簡単にインストールできます。

3. fiddler2の使い方

fiddler2の使い方を解説していきます。
各機能項目の説明をしても多機能なので覚えにくく、覚えても活用しづらいと思いますので、○○のやり方と活用例を示しながら、説明していきます。

Fiddlerの使い方(セッションハイジャックの例)

セッションで確認ページを表示するお問合せフォームを例にセッションハイジャックの例と、Fiddlerの起動からリクエストの閲覧、独自に作成したリクエストの送信など、簡単なFiddlerの使い方を見ていきます。

例で使用するお問合せフォーム

以下のような確認ページでセッションの内容を表示するお問合せフォームで、他のユーザから窃取してきたCookieの値を使うだけで、他のユーザのページが表示されてしまう、セッション管理の甘いお問合せフォームを例で使用します。

  1. お問合せ入力(/inquiry/input.html)
  2. 入力チェック(/inquiry/validate.html)…チェックしてセッションに入力内容を保存
  3. お問合せ確認(/inquiry/confirm.html)…セッションに保存した入力内容を表示
  4. お問合せ送信(/inquiry/finish.html)

inquiry-image-01

Fiddlerの起動

C:\Program Files (x86)\Fiddler2\Fiddler.exeをクリックして起動します。

fiddler-image-01

特定のブラウザの通信のみを表示する

Fiddlerはすべてのアプリケーションの要求をプロキシします。特定のブラウザの通信のみキャプチャするには、FiltersタブのClient Processを使用します。今回はFirefoxを使用することにします。

左側のFiltersタブを選択し、Use Filtersにチェックをいれ、Client ProcessのShow only traffic fromのプルダウンでFirefoxのプロセスを選びます。

fiddler-image-02

Fiddlerのセッションリストのクリア

左に表示されるセッションのどれかを選択して、右クリック>Remove>All Sessionsを選択するとセッションリストがクリアできます。

fiddler-image-03

fiddler-image-04

Fiddlerのセッションの内容表示

上述のお問合せフォームを送信まで行って、たとえば、確認ページ(/inquiry/confirm.html)を探して、ダブルクリックすると左にその内容が表示されます。以下のイメージのようにRawを選択するとヘッダ内容が見やすいです。例のお問合せフォームの環境は、VM上でCentOS6.4、Apache、PHPをyumでインストールしただけの環境なのでHTTPヘッダにはバージョンが表示され、セキュリティ関連のパラメータも未設定の状態です。

fiddler-image-05

WebViewタブを選択するとWebページのイメージが表示されます。

fiddler-image-06

リクエストヘッダ―のコピー

Fiddlerは、かなり凝って作られていて、至るところで右クリックしてみるといろいろな機能が隠されています。リクエストヘッダーのコピーも選択して、Ctrl+Cや右クリック>Copyの操作でコピーできます。

fiddler-image-07

コピーしたリクエストの送信

ComposerのExecuteボタンでコピーしたリクエストが簡単に送信できます。先ほどコピーしたリクエストヘッダーをRawのところに貼り付けて、HTTPはボディー部と改行で区別するので、改行を2つ追加してExecuteボタンを押すとコピーしたリクエストが送信できます。

fiddler-image-08

なお、例のお問合せフォームは、先ほど送信完了まで行っているので、セッションは破棄されて、確認ページは表示されず、入力ページにリダイレクトされます。

コピーしたリクエストを書き換えて送信

ここでは、別のユーザのCookieの値を窃取してきて、そのCookieを先ほどのリクエストに設定して送信し、セッションハイジャックしてみます。

Cookieの値ですが、たとえば別のブラウザ、ここではChromeを使用しますが、デベロッパーツールなどの開発者ツールを開いてNetworkのところを表示し、確認ページのリクエストを探します。確認ページのリクエストを見つけたら、レスポンスヘッダのところにある、Cookie:の値をコピーします。

fiddler-image-09

Cookieの値をFiddlerのComposerの先ほど入力ページにリダイレクトされたリクエストヘッダ―に設定して、Executeします。

fiddler-image-10

セッションハイジャックされました。

fiddler-image-11

この例はCookieの値だけでセッションハイジャックされました。簡単ですが、自作でセッションを使った場合、セッションのチェックなんて気にしないことも多いのではないでしょうか。

また、ちょっと考えてUserAgentをチェックしてみるかもしれません。でも先ほどの要領でUserAgentも窃取して貼り付ければ終わりです。ページに設定したPOSTトークンを毎回払いだすなどもっと難解にする、などセッション管理は大変です。さらに、Cookieなどのセッション管理情報は窃取されないようにHTTPSで送信しないとです。XSSなどの脆弱性も作りこまないようにしないとです。そう考えるとWordPressのContactFormとか使った方が自作よりも品質がよさそうです。

お問合せフォームの場合、そもそも入力内容をセッションに保存して表示するのがいけないような気がしますが、オンラインショップのカートやログイン後の会員ページなどは重要と思います。それと、製品やサービスを利用する場合なども、一度CookieとUserAgentあたりをそろえてセッションハイジャックの確認をしてみるといいかもしれません。

4. 関連記事

本記事と関連した内容の記事を紹介いたします。

  • SEが気づきにくいWebサイトの脆弱性の見つけ方

    脆弱性とは、脅威と結びついて実害を発生させる原因となるセキュリティリスクです。読み方は「きじゃくせい」は誤りで、「ぜいじゃくせい」です。SEが気づきにくいWebサイトの脆弱性の見つけ方をテーマに脆弱性の意味、脆弱性調査の方法をまとめています。

更新履歴

  • 2017年06月30日 記事をUPしました。

SNSでもご購読できます。