TOUCH THE SECURITY Powered by Security Service G

ナレッジ

2017.10.13

ローカルプロキシツールBurpの使い方 その1 ~ Proxy機能編 ~

こんにちは、セキュリティサービスGの「シン」です。このブログではWebアプリケーションのセキュリティに興味がある方向けの記事を発信していきます。

簡単に私の経歴を紹介しますと、高校卒業後は某外資系アパレルブランドで接客業を7年、のちにWebプログラミングに興味を持ちIT業界に転職しました。3年ほどWebプログラミングのエンジニアとして従事し、上司の勧め(というより強制)でWebアプリケーションのセキュリティエンジニアとしてキャリアをスタートして現在は大手セキュリティサービス事業部に所属し、Webアプリケーションセキュリティ診断業務を行っています。なんでアパレル業界からIT業界へ?と思いますが、ただ単純に興味があったからですね。まったく違う業界への転職に不安はもちろんありましたが、興味があれば頑張れる性格なのです。

自分の話はこれくらいにして…

1. Webアプリケーションセキュリティ診断について

Webアプリケーションセキュリティ診断では自動診断ツールおよびセキュリティ診断技術者の手動により、リクエストで送信されるパラメータに診断値を挿入して、そのレスポンスの挙動から脆弱性の有無を判定します。

私の現場でのWebアプリケーションセキュリティ診断では、商用の自動診断ツールを使用して診断を行い、脆弱性の性質上、自動診断ツールでは検出できないものは診断技術者自らが手動でプロキシツールを用いて診断します。プロキシツールとはブラウザとサーバ間のHTTP通信をキャプチャし、通信内容を閲覧および改竄できるツールです。

プロキシツールを利用する主な目的
  • Webアプリケーションセキュリティ診断
  • Webアプリケーション開発者が開発時のセキュリティ対策の自己チェックする場合
  • Webアプリケーションセキュリティ診断結果の再現
プロキシツールの種類
  • Burp Suite
  • OWASP Zap
  • Fiddler

上記の中でも私が診断で頻繁に使用するツールは「Burp Suite」というプロキシツールです。

BurpSuiteとは
  • PortSwigger社のローカルプロキシツールBurpSuite
  • http通信をキャプチャして通信内容を改ざんすることが可能
  • 無料版(Free Edition)と有料版(Professional Edition)の二種類
  • 有料版はWebアプリケーションセキュリティ診断サービスに必要な自動診断などの様々な機能が利用できる

Burpは様々な機能を兼ね備えていて、無料版のBurpでもWebアプリケーションセキュリティ診断で活用できる便利な機能が利用できます。では無料版のBurpではどんな事ができるのかをこのブログで数回に分けて紹介していきたいと思います。

今回の第一回目はBurpの「Proxy機能」について説明します。

2.Burp Suiteのインストール

まずはBurpをインストールしましょう。以下のサイトからBurpSite(FreeEdition)をダウンロードしてください。
https://portswigger.net/burp/freedownload
※BurpはJava アプリのため、Javaの実行環境(JRE)をインストールしておく必要があります。
https://java.com/ja/download/

インストールの後、Burpを起動。「Next」ボタンを押下します。

「Start Burp」ボタンを押下します。

Burpが起動しました。

BurpのProxy機能とはWebアプリケーションの通信でサーバにリクエストを送信する際に、BurpがHTTP通信をキャプチャして、通信内容の閲覧や通信内容の書き換えができる機能です。

先ほどWebアプリケーションセキュリティ診断ではパラメータに診断値を挿入して、そのレスポンスの挙動から脆弱性の有無を判定すると説明しましたが、もちろんブラウザ上から入力フォームやGETパラメータに脆弱性を判定する診断データを入力して、脆弱性が存在するかチェックする事もできますが、Cookieやhiddenパラメータなどは画面上からでは診断値を挿入できず、また脆弱性の有無はレスポンスヘッダやレスポンスボディ(HTMLソースなど)を見て判定するため、ブラウザ上からでは効率よくチェックが行えません。そのためWebアプリケーションセキュリティ診断ではプロキシツールを使用して作業を行います。

では実際に操作してみましょう。

3.Burpの初期設定(1) Proxy Listeners

まずBurp プロキシにて初期設定を行います。「Proxy」タブ→「Options」タブ内の「Proxy Listeners」の一行目を選択し「Edit」ボタンを押してください。

Bind to Port に適当なポート番号を入力してOKを押下します。ここでは8080を指定します。
※デフォルトは8080 です。競合するポートが設定されている場合はその他の空いているポートを割り当ててください。

4.Burpの初期設定(2) Intercept Server Responses

次にBurpでレスポンス内容もキャプチャするための設定を行います。「Proxy」タブ→「Options」タブ内の「Intercept Server Responses」にある「Intercept responses based on the following rules」のチェックボックスにチェックを入れます。

5.Burpの初期設定(3) Upstream Proxy Servers
※必要な場合のみ

もし対象サイトにアクセスするのに外部Proxyサーバの設定が必要な場合はBurpに以下の設定を行います。必要無い場合は次の6.ブラウザのプロキシサーバ設定へ進んでください。

「User options」タブ→「Connections」タブ内の「Upstream Proxy Servers」の「Add」ボタンを押下します。

Proxy hostとProxy portに外部プロキシのアドレスとポート番号を入力してOkボタンを押下します。

6.ブラウザのプロキシサーバの設定

次にブラウザを開き、プロキシサーバ設定を変更します。※IE 使用時
ブラウザのツール→インターネットオプション→「接続」タブ→LAN の設定ボタンからプロキシサーバを以下に変更します。

  • IP アドレス:localhost
  • ポート番号:8080
  • ※Burpで設定したアドレスとポートを指定します。

ではサイトにアクセスしてProxy機能を操作してみましょう。

【注意】これからの操作を実施する場合は、必ず実施許可されたサイトまたは自身で作成したローカル環境にあるサイトのみで実施してください。無断でインターネットに公開されているサイトに対して行った場合、不正アクセスとみなされる場合があります。

7.インターセプト

Burpの「Proxy」→「Intercept」タブ内の画面にある「Intercept is on」を「Intercept is off」の状態にします。(Intercept ボタンは押下することでON/OFF を切り替えることが出来ます)

次に先ほどプロキシ設定したブラウザから、通信をキャプチャしたい前画面まで遷移して、「Intercept is off」を「Intercept is on」に切り替えます。「Intercept is on」にすることでHTTP通信がキャプチャできる状態になります。

ボタンまたはリンクを押下します。ここでは私が作成したサイトの新規登録の確認ボタンを押下してHTTP通信をキャプチャします。

BurpがHTTP通信をキャプチャして、リクエストの通信内容が表示されます。

8.HTTP通信内容の書き換え

キャプチャした状態で「Intercept」内の「Params」タブ内にCookieやGET、POSTのリクエストパラメータ一覧が表示されるので、Valueの値を直接書き換えすることで、書き換えしたデータでサーバに送信されます。ここではnameパラメータの値を「SecurityTest」から「SecurityTestTest」に書き換えます。

書き換えが完了したら「Forward」ボタンを押下します。Webサーバへ送信され、レスポンスがBurpにキャプチャされます。

セキュリティ診断ではこの時のレスポンスの内容を見て脆弱性の有無をチェックしていきます。

9.文字列の検索

調べたい文字列がレスポンスのどこにあるか瞬時に確認したい場合は、Burp 画面の一番下に入力テキストがあるので、調べたい文字列を入力すると右下にmatch 数が表示され、入力した文字の背景が黄色い網掛けになります。

また「Forward」ボタンを押下します。書き換えた内容でブラウザに表示されます。

Proxy機能の一連の流れは終了です。

10.操作ログ

書き換えした内容は「Proxy」→「HTTP history」に表示されます。書き換えた通信はEditedにチェックが入ります。

11.まとめ

第一回目はBurp SiteのProxy機能についての使い方を説明しました。これらができるようになれば、BurpのProxy機能だけでも十分にWebアプリケーションのセキュリティチェックを行うことができます。

次回のブログでは、BurpのProxy機能以外の便利な機能についての記事をアップしていきたいと思います。

記事一覧に戻る