Webアプリケーションセキュリティの検証のためのローカルプロキシツール(Burp Suite)の利用
- 2021/2/26
- コラム

1.初めに
Webアプリケーションにてセキュリティの検証を行う場合、Webサーバとブラウザ間にて、どのようなデータ(パラメータとその値)を送って、そのレスポンスを受けているのかを確認したい場合があると思います。
このような場合、ローカルプロキシーツールがあると便利です。
ローカルプロキシーツールは、Webサーバとブラウザ間のデータのやり取りを中間で受けることが出来るツールです。クライアントマシン上で動作します。
・ローカルプロキシーの仕組み

ローカルプロキシーツールを使うと下記のことが出来るようになります。
・hiddenパラメータのようにユーザが入力できない項目でも、任意のパラメータ値を簡単に指定することができます。
・ブラウザからのリクエストをローカルプロキシーツールにて一旦キャプチャして、内容を変更した上でWebサーバへリクエストすることが可能です。
ローカルプロキシーツールには、主にOWASP ZAP、Fidller、Burp Suiteといった製品があります。
今回は、その中でBurp Suiteを紹介します。
2.Burpのインストールと設定
2-1.Burp Suiteとは
Burp Suite は、PortSwigger 社が提供している製品です。
Burp Suiteには、有償版の「Burp Suite Professional」や「Burp Suite Enterprise Edition」、無償で利用可能な「Burp Suite Community Edition」があります。
「Burp Suite Community Edition」は機能制限がありますが、Webサーバとブラウザ間のデータのやり取りを確認・編集する目的ならば、問題なく利用出来ます。
Burp Suiteには、下記のプラットフォーム用のプログラムが提供されています。
- Windows (64-bit)
- JAR
- Linux (64-bit)
- Mac OSX
※JAR(Java ARchive)版は、動作させるために別途JRE (Java Runtime Environment)のインストールが必要です。
2-1.インストール
インストール手順となります。今回は、Windows版の手順を説明します。
①Burp Suite Community EditionのダウンロードページにアクセスしてBurp Suite Community Editionをダウンロードします。
Download Burp Suite Community Edition_
https://portswigger.net/burp/communitydownload
2021年12月時点の最新バージョンは、「2020.11.3」となります。以後、バージョン「2020.11.3」で説明します。
また、「ダウンロードするエディション」は「Burp Suite Community Edition」、対応プラットフォームは「Windows (64-bit)が」を選択します。
②ダウンロードが完了しましたら、ダウンロードしたプログラム(burpsuite_community_windows-x64_v2020_11_3.exe)を実行します。

③「Welcome to the Burp Suite Community Edition Setup Wizard」画面が表示されます。
「Next」ボタンを押して進みます。

④「Select Destination Directory」画面が表示されます。
インストール先ディレクトリが表示されますので、問題がなければ「Next」ボタンを押して進みます。

⑤「Select Start Menu Folder」画面が表示されます。
「Create a Start Menu folder」チェックボックスにチェックが入っており、フォルダー名として「Burp Suite Community Edition」が入った状態となっています。
問題がなければ「Next」ボタンを押して進みます。

⑥インストールが始まります。

⑦「Completing the Burp Suite Community Edition Setup Wizard」画面が表示されます。
これでインストールが完了です。「Finish」ボタンを押して終了します。

2-3.Burpの起動
①スタートメニューから「Burp Suite Community Edition」を選択してBurp Suiteを起動します。

「Burp Suiteの起動画面」

②最初の起動時には「Terms and Conditions」画面が表示されます。
「Help improve Burp by submitting anonymous feedback abour its performance」チェックボックスにチェックが入っている状態となっています。Burpのパフォーマンス改善のため、匿名のフィードバックを送信しても良いという方はそのままで、そうでない方はチェックを外します。
「I Accept」ボタンを押します。

③「Welcom to Burp Suite Community Edition. Use the options below to Create or open a project.」画面が表示されます。
デフォルトで「Temporary project」ラジオボタンが選択されています。そのまま「Next」ボタンを押して進みます。

④「Select the configuration that you would like to load for this project.」画面が表示されます。
デフォルトで「Use Burp defaults」にラジオボタンが選択されています。そのまま「Start Burp」ボタンを押して進みます。

⑤Burp SuiteのDashboardタブの画面が表示されます。
先頭にDashboardタブがあるため、最初にDashboardタブの画面が表示されますが、タブはマウスでドラックすることで移動可能です。

2-4.通信キャプチャの準備
ブラウザからの通信をBurp Suiteでキャプチャするには、利用するブラウザとBurp Suiteにて準備を行う必要があります。
2-4-1.ローカルプロキシポートの設定(Burp Suite側)
①Burp Suiteの画面の「Proxy」タブを選択して「Proxy」画面を表示します。
「Proxy」画面の「Options」タブを選択して設定画面を表示します。

画面の「Proxy Listeners」にてローカルプロキシポートの設定を行います。
デフォルトでは、ループバックアドレス(127.0.0.1)の8080/TCPポートが設定されています。
既に8080/TCPを利用していて変更の必要がある場合は、「Options」タブから「Edit」ボタンにより利用していない任意のポート番号へ変更することができます。
問題なければこのままの値で使用します。

2-4-2.レスポンス取得設定(Burp Suite側)
①「Proxy」の「Options」設定画面の「Intercept Server Responses」にてレスポンス取得設定を行います。

②デフォルトでは、リクエスト(送信)のみキャプチャされる設定になっているため、レスポンス(応答)もキャプチャできるように「Intercept responses based on the following rules:」のチェックを入れます。

2-4-3.ローカルプロキシポートの設定(ブラウザ側)
Burp Suiteで設定したポートと同じポート番号をブラウザのプロキシサーバのポートとして設定します。
下記は、FireFoxを例として説明しています。
①FireFoxのメニューを開き、オプションを選択します。

「オプション」画面が表示されます。
画面の一番下にある「ネットワーク設定」の「接続設定…(E)」ボタンを押して進みます。

③「インターネット接続」画面が表示されます。
デフォルトで「システムのプロキシー設定を利用する(U)」ラジオボタンが選択されています。
「手動でプロキシーを設定する(M)」ラジオボタンを選択して、入力可能な状態にします。

④下記を入力します。
HTTPプロキシー(X) BurpSuiteで設定したポートと同じポート番号をブラウザのプロキシサーバのポートとして設定します。
下にある「このプロキシーをFTPとHTTPSでも使用可能にする(S)」のチェックボックスにチェックを入れます。
「OK」ボタンを押します。
これで、Burp Suiteを使う準備が整いました。

3. Burp Suiteの利用方法(Proxy)
それでは、Burp SuiteにてWebサーバとブラウザ間のデータのやり取りを中間で確認・変更する方法をご説明します。
①ブラウザで評価したい対象画面へアクセスします。

②対象画面で操作を行う前に「Inctercept is off」をクリックし、キャプチャを有効化(「Intercept is on」)します。

③ブラウザで開いた対象画面を操作します。

④対象画面の操作によりサーバへのリクエストが発生すると、送信リクエストが一旦BurpSuite上にキャプチャされます(リクエストはまだサーバへ到達していません)。

⑤送信するパラメータ値の変更
リクエストをキャプチャした際に、右側の「INSPECTOR」に表示されている「Body Parameters」を選択することでリクエストされるパラメータ一覧を確認することができます。

さらに、パラメータ一覧のパラメータの行を選択することで、対象パラメータの項目にアクセス出来ます。
この状態ではパラメータ名(NAME)や値(VALUE)を変更することが出来るため、リクエストされる値を任意のものへ変更することができます。

変更した後で「Apply Changes」ボタンを押します。

「Apply Changes」ボタンを押すとリクエストに変更内容が反映されます。

Forwardボタンを押すと、キャプチャされた内容がサーバへリクエストされ、その結果(サーバからのレスポンス)がキャプチャされます。

続けてForwardボタンを押すと、キャプチャされた内容がブラウザに表示されます。以降は、①から⑥の繰り返しになります。
4.終わりに
今回は、ローカルプロキシーツールBurp Suiteを使ったWebサーバとブラウザ間のデータのやり取りを中間で確認・変更する方法を簡単にご説明しました。
Webアプリケーションにてセキュリティの検証を行う場合の項目としては、IPAの「ウェブ健康診断 仕様」があります。
こちらは診断項目として基本的なものが紹介されておりますので、ご参照下さい。
また、セキュリティの要件としてご確認される際は、IPAの「セキュア・プログラミング講座 (Webアプリケーション編)」をご参照下さい。
ウェブ健康診断 仕様 – IPA
https://www.ipa.go.jp/files/000017319.pdf
IPA「セキュア・プログラミング講座 (Webアプリケーション編)」
https://www.ipa.go.jp/security/awareness/vendor/programmingv2/web.html
なお、これら内容は自らが管理しているサイト以外への実施は厳禁となりますので、ご注意下さい。
以上となります。
