2021/02/26公開
Webアプリケーションにてセキュリティの検証を行う場合、Webサーバとブラウザ間にて、どのようなデータ(パラメータとその値)を送って、そのレスポンスを受けているのかを確認したい場合があると思います。
このような場合、ローカルプロキシーツールがあると便利です。
ローカルプロキシーツールは、Webサーバとブラウザ間のデータのやり取りを中間で受けることが出来るツールです。クライアントマシン上で動作します。
・ローカルプロキシーの仕組み
ローカルプロキシーツールを使うと下記のことが出来るようになります。
・hiddenパラメータのようにユーザが入力できない項目でも、任意のパラメータ値を簡単に指定することができます。
・ブラウザからのリクエストをローカルプロキシーツールにて一旦キャプチャして、内容を変更した上でWebサーバへリクエストすることが可能です。
ローカルプロキシーツールには、主にOWASP ZAP、Fidller、Burp Suiteといった製品があります。
今回は、その中で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には、下記のプラットフォーム用のプログラムが提供されています。
※JAR(Java ARchive)版は、動作させるために別途JRE (Java Runtime Environment)のインストールが必要です。
インストール手順となります。今回は、Windows版の手順を説明します。
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)が」を選択します。
「Next」ボタンを押して進みます。
インストール先ディレクトリが表示されますので、問題がなければ「Next」ボタンを押して進みます。
「Create a Start Menu folder」チェックボックスにチェックが入っており、フォルダー名として「Burp Suite Community Edition」が入った状態となっています。
問題がなければ「Next」ボタンを押して進みます。
これでインストールが完了です。「Finish」ボタンを押して終了します。
「Burp Suiteの起動画面」
「Help improve Burp by submitting anonymous feedback abour its performance」チェックボックスにチェックが入っている状態となっています。Burpのパフォーマンス改善のため、匿名のフィードバックを送信しても良いという方はそのままで、そうでない方はチェックを外します。
「I Accept」ボタンを押します。
デフォルトで「Temporary project」ラジオボタンが選択されています。そのまま「Next」ボタンを押して進みます。
デフォルトで「Use Burp defaults」にラジオボタンが選択されています。そのまま「Start Burp」ボタンを押して進みます。
先頭にDashboardタブがあるため、最初にDashboardタブの画面が表示されますが、タブはマウスでドラックすることで移動可能です。
ブラウザからの通信をBurp Suiteでキャプチャするには、利用するブラウザとBurp Suiteにて準備を行う必要があります。
「Proxy」画面の「Options」タブを選択して設定画面を表示します。
画面の「Proxy Listeners」にてローカルプロキシポートの設定を行います。
デフォルトでは、ループバックアドレス(127.0.0.1)の8080/TCPポートが設定されています。
既に8080/TCPを利用していて変更の必要がある場合は、「Options」タブから「Edit」ボタンにより利用していない任意のポート番号へ変更することができます。
問題なければこのままの値で使用します。
Burp Suiteで設定したポートと同じポート番号をブラウザのプロキシサーバのポートとして設定します。
下記は、FireFoxを例として説明しています。
画面の一番下にある「ネットワーク設定」の「接続設定...(E)」ボタンを押して進みます。
デフォルトで「システムのプロキシー設定を利用する(U)」ラジオボタンが選択されています。
「手動でプロキシーを設定する(M)」ラジオボタンを選択して、入力可能な状態にします。
HTTPプロキシー(X) BurpSuiteで設定したポートと同じポート番号をブラウザのプロキシサーバのポートとして設定します。
下にある「このプロキシーをFTPとHTTPSでも使用可能にする(S)」のチェックボックスにチェックを入れます。
「OK」ボタンを押します。
これで、Burp Suiteを使う準備が整いました。
それでは、Burp SuiteにてWebサーバとブラウザ間のデータのやり取りを中間で確認・変更する方法をご説明します。
リクエストをキャプチャした際に、右側の「INSPECTOR」に表示されている「Body Parameters」を選択することでリクエストされるパラメータ一覧を確認することができます。
さらに、パラメータ一覧のパラメータの行を選択することで、対象パラメータの項目にアクセス出来ます。
この状態ではパラメータ名(NAME)や値(VALUE)を変更することが出来るため、リクエストされる値を任意のものへ変更することができます。
変更した後で「Apply Changes」ボタンを押します。
「Apply Changes」ボタンを押すとリクエストに変更内容が反映されます。
Forwardボタンを押すと、キャプチャされた内容がサーバへリクエストされ、その結果(サーバからのレスポンス)がキャプチャされます。
続けてForwardボタンを押すと、キャプチャされた内容がブラウザに表示されます。以降は、①から⑥の繰り返しになります。
今回は、ローカルプロキシーツール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
なお、これら内容は自らが管理しているサイト以外への実施は厳禁となりますので、ご注意下さい。