Webアプリケーションのセキュリティは現代において極めて重要です。そのセキュリティテストや脆弱性診断の現場で広く利用されているのが、PortSwigger社によって開発された統合プラットフォーム「Burp Suite」です。この記事では、Burp Suiteの基本的な使い方から応用テクニックまで、詳しく解説していきます。
Burp Suiteとは? 🤔
Burp Suite(バープ スイート)は、Webアプリケーションのセキュリティテストを実施するための多機能ツール群です。ペネトレーションテストや脆弱性診断の専門家から、開発者、セキュリティ学習者まで、幅広いユーザーに利用されています。HTTP/S通信を傍受・分析・改ざんするプロキシ機能を中心に、様々なテストツールが統合されており、効率的かつ詳細なセキュリティ評価を可能にします。
主な特徴は以下の通りです:
- 統合プラットフォーム: 必要なツールが一箇所にまとまっており、ツール間でリクエストを簡単に送受信できます。
- プロキシ機能: ブラウザとWebサーバー間の通信を中継し、リクエストとレスポンスをリアルタイムで確認・編集できます。
- 多様なツール群: スキャン、攻撃の自動化、セッショントークンの分析など、多岐にわたるテストに対応するツールを備えています。
- 拡張性: BApp Storeから提供される拡張機能や、自作の拡張機能により、機能をカスタマイズ・追加できます。
Burp Suiteには、主に以下のエディションがあります。
- Community Edition: 無料で利用可能。基本的な手動テストツールが含まれており、学習や基本的な診断に適しています。
- Professional Edition: 有料版。自動脆弱性スキャナ、高度なIntruder機能、Collaborator(OAST)など、プロフェッショナル向けの強力な機能が追加されています。プロジェクトの保存も可能です。
- Enterprise Edition: 大規模組織向け。CI/CDパイプラインとの統合や、多数のWebサイトに対する継続的な自動スキャンに特化しています。
この記事では、主にCommunity Editionでも利用可能な機能を中心に解説しますが、Professional Editionの強力な機能についても触れていきます。
インストールと初期設定 🛠️
Burp Suiteを使い始めるための手順は比較的簡単です。
- ダウンロード: PortSwigger公式サイトから、お使いのOS(Windows, macOS, Linux)に合ったBurp Suite Community Edition(または購入済みのProfessional Edition)のインストーラーをダウンロードします。Javaで開発されているため、システムにJava Runtime Environment (JRE) が必要になる場合がありますが、多くのインストーラーにはJREが含まれています。
- インストール: ダウンロードしたインストーラーを実行し、画面の指示に従ってインストールを進めます。通常、インストール先フォルダの指定程度で完了します。
- 起動: インストール後、Burp Suiteを起動します。初回起動時にはプロジェクト選択画面が表示されます。Community Editionでは「Temporary project」(一時プロジェクト)しか選択できません。Professional Editionではプロジェクトをファイルに保存できます。「Next」をクリックし、次の設定画面では「Use Burp defaults」(デフォルト設定を使用)を選択して「Start Burp」をクリックします。
-
プロキシ設定 (Burp Suite側):
Burp Suiteがブラウザからの通信を受け付けるためのリスナーを設定します。「Proxy」タブ -> 「Options」(または「Proxy Settings」)タブを選択します。「Proxy Listeners」セクションで、デフォルトで
127.0.0.1:8080
が設定されていることを確認します。もしポート番号8080
が他のアプリケーションで使用されている場合は、「Edit」ボタンで空いているポート(例:8081
)に変更します。 -
プロキシ設定 (ブラウザ側):
Burp Suiteで通信を傍受するには、お使いのWebブラウザがHTTP/HTTPSリクエストをBurp Suiteに送信するように設定する必要があります。
- Burp Browser (推奨): Burp Suiteには、設定済みのChromiumベースのブラウザが内蔵されています。「Proxy」タブ -> 「Intercept」タブにある「Open Browser」ボタンをクリックすると、自動的にプロキシ設定と証明書が適用されたブラウザが起動します。特別な理由がない限り、この方法が最も簡単で確実です。
- 手動設定: 既存のブラウザ(Firefox, Chromeなど)を使用する場合、ブラウザのネットワーク設定でHTTPおよびHTTPSプロキシとして、Burp Suiteで設定したリスナーアドレスとポート(デフォルトは
127.0.0.1:8080
)を指定する必要があります。FoxyProxyのようなブラウザ拡張機能を使うと、プロキシ設定のオン/オフを簡単に切り替えられて便利です。
-
Burp CA証明書のインストール (HTTPS通信):
HTTPS通信を傍受・解読するには、ブラウザがBurp SuiteのCA証明書を信頼する必要があります。Burp Browserを使用する場合は通常不要ですが、手動でブラウザを設定した場合はインストールが必要です。
- Burp Suiteのプロキシ設定を有効にしたブラウザで
http://burpsuite
またはhttp://127.0.0.1:8080
にアクセスします。 - 表示されたページの右上にある「CA Certificate」リンクをクリックし、証明書ファイル(
cacert.der
)をダウンロードします。 - ブラウザの証明書マネージャー(設定 -> プライバシーとセキュリティ -> 証明書 -> 証明書の表示 -> 認証局証明書)を開き、ダウンロードした証明書ファイルをインポートします。インポート時に「この認証局によるウェブサイトの識別を信頼する」といったオプションにチェックを入れてください。
- Burp Suiteのプロキシ設定を有効にしたブラウザで
これで、Burp Suiteを使ってWebアプリケーションの通信を分析する準備が整いました 🎉
主要な機能(ツール)の紹介 🔧
Burp Suiteは多くのツールで構成されています。ここでは特に重要なツールを紹介します。
Proxy (プロキシ)
Burp Suiteの中核機能です。ローカルプロキシとして動作し、ブラウザとターゲットWebサーバー間のHTTP/HTTPS通信を傍受(インターセプト)し、検査、改ざんすることができます。
- Intercept: 通信を一時停止させ、リクエストやレスポンスを送信前に編集できます。「Intercept is on」で傍受開始、「Intercept is off」で傍受停止(通信は通過)。最近のバージョンでは、インターセプトしたリクエストがリスト表示され、非同期リクエストも扱いやすくなりました。
- HTTP history: プロキシを通過したすべてのHTTP/HTTPS通信のログが記録されます。各リクエスト/レスポンスの詳細を確認したり、他のツールに送信したりできます。
- WebSocket history: WebSocket通信のログを記録します。
- Options (Proxy Settings): プロキシリスナーの設定、インターセプトのルール設定、レスポンスの自動書き換えルール(Match and Replace)、TLS証明書関連の設定など、詳細なカスタマイズが可能です。
Target (ターゲット)
テスト対象アプリケーションに関する情報を集約し、攻撃対象領域(アタックサーフェス)を把握するためのツールです。
- Site map: プロキシ経由でアクセスしたサイトの階層構造や、発見されたエンドポイント、パラメータなどをツリー形式で表示します。手動での探索やスキャナ(Pro版)によるクロール結果がここに蓄積されます。レスポンスから推測される未リクエストのURLも表示されます(灰色表示)。
- Scope: テスト対象とする範囲(スコープ)を定義します。スコープ内の通信のみをログに記録したり、スキャンの対象としたりすることができます。「Add」でスコープに追加したいURL(プレフィックスやドメイン)を指定します。「Exclude」でスコープから除外するURLを指定することも可能です。適切にスコープを設定することで、テストの効率が大幅に向上します。
Repeater (リピーター)
特定のHTTPリクエストを手動で繰り返し送信し、パラメータを改ざんしながらサーバーの応答を分析するためのツールです。脆弱性の詳細な調査や確認に非常に役立ちます。
ProxyのHTTP historyなどから興味のあるリクエストを選択し、右クリックメニューから「Send to Repeater」を選ぶと、Repeaterタブにそのリクエストがコピーされます。リクエスト内容を編集し、「Send」ボタンをクリックすると、レスポンスが右側のペインに表示されます。リクエストとレスポンスはタブごとに管理され、複数のリクエストを並行してテストできます。レスポンスタイムやサイズも表示されるため、挙動の変化を捉えやすいです。
Intruder (イントルーダー)
カスタマイズされた攻撃を自動化するための強力なツールです。リクエスト内の特定の位置(ペイロードポジション)に、定義したペイロード(値のリスト)を挿入しながら大量のリクエストを送信し、レスポンスを分析します。
主な用途:
- 入力ベースの脆弱性(SQLインジェクション、クロスサイトスクリプティング(XSS)など)のファジング(様々な値を試すこと)。
- ブルートフォース攻撃(ID・パスワードの試行)。
- 識別子の列挙(ユーザーID、ファイル名など)。
- レート制限のテスト。
基本的な使い方:
- Proxy履歴などからベースとなるリクエストを「Send to Intruder」で送信します。
- Intruderタブの「Positions」サブタブで、ペイロードを挿入したい箇所を選択し、「Add §」ボタンでペイロードポジションとしてマークします(自動でマークされることもあります)。不要なポジションは「Clear §」で解除します。
- Attack typeを選択します。
Attack Type 説明 Sniper 単一のペイロードセットを使用。マークされた各ポジションに順番にペイロードを挿入していく(最も一般的)。 Battering ram 単一のペイロードセットを使用。マークされたすべてのポジションに同時に同じペイロードを挿入する。 Pitchfork ポジションごとに異なるペイロードセットを使用。各リクエストで、対応するペイロードリストから同じインデックスの値を使用する。 Cluster bomb ポジションごとに異なるペイロードセットを使用。すべてのペイロードの組み合わせを試行する(リクエスト数が非常に多くなる)。ブルートフォース攻撃などで使用。 - 「Payloads」サブタブで、使用するペイロードを定義します。ペイロードタイプ(Simple list, Numbers, Dates, Brute forcer, Dictionary fileなど)を選択し、具体的な値や設定を行います。Community Editionではペイロードタイプや速度に制限があります。
- 必要に応じて「Options」サブタブでリクエストヘッダの更新、リダイレクトの追跡、Grep(レスポンスから特定の文字列を抽出)などの設定を行います。
- 「Start attack」ボタンで攻撃を開始します。新しいウィンドウが開き、送信されたリクエスト、レスポンスコード、長さ、指定したGrepの結果などが一覧表示されます。この結果をソートしたりフィルタリングしたりして、異常な応答を探します。
Sequencer (シーケンサー)
セッショントークンやCSRFトークンなど、予測不可能であるべきデータ(乱数)の品質(ランダム性)を分析するためのツールです。十分な数のサンプルを収集し、様々な統計的検定を用いて、トークンが推測可能でないかを評価します。
Decoder (デコーダー)
データを様々な形式(URLエンコード、Base64、HTML、Hexなど)でエンコード/デコードするためのユーティリティツールです。リクエストやレスポンスに含まれるエンコードされたデータを手早く解読したり、特定の形式にエンコードしたりする際に便利です。Smart decode機能を使えば、自動的に適切な形式でデコードを試みてくれます。
Comparer (コンペアラー)
2つのデータ(通常はHTTPリクエストやレスポンス)を比較し、その差分を視覚的に表示するツールです。例えば、パラメータを変更した場合のリクエスト間の違いや、権限の異なるユーザーでアクセスした場合のレスポンスの違いなどを確認するのに役立ちます。「Word」単位または「Byte」単位での比較が可能です。
Scanner (スキャナー) Professional/Enterpriseのみ
Webアプリケーションの脆弱性を自動的に検出するスキャナーです。SQLインジェクション、XSS、OSコマンドインジェクションなど、多数の脆弱性タイプに対応しています。
- Passive Scan (受動的スキャン): プロキシを通過する通常のトラフィックを分析し、リクエストやレスポンスの内容から脆弱性の兆候(例:コメント内の個人情報、安全でないCookie属性など)を探します。アプリケーションに余計なリクエストは送信しません。
- Active Scan (能動的スキャン): 実際に悪意のある可能性のあるリクエストを送信し、アプリケーションの応答を分析して脆弱性を検出します。より多くの脆弱性を発見できますが、アプリケーションに影響を与える可能性もあります。
スキャンは、Targetのサイトマップから特定のホストやブランチを右クリックして「Scan」を選択するか、ダッシュボードから「New Scan」を開始して設定します。検出された脆弱性は「Issues」セクションにリストアップされ、詳細な情報(リクエスト/レスポンス、脆弱性の説明、修正案など)を確認できます。
Collaborator Client (コラボレータークライアント) Professional/Enterpriseのみ
Out-of-Band Application Security Testing (OAST) を行うための機能です。外部とのインタラクション(DNSクエリやHTTPリクエストなど)をトリガーとする脆弱性(例:Blind SSRF, Blind XSS, Blind SQL Injectionなど)を検出するために、PortSwiggerが提供する特殊なサーバー(Burp Collaborator)を利用します。Scannerや手動テスト中にCollaboratorサーバーへのコールバックが発生した場合、それを検知して脆弱性を報告します。
Extender (エクステンダー)
Burp Suiteの機能を拡張するためのモジュールです。
- BApp Store: PortSwiggerやコミュニティによって開発された様々な拡張機能(BApp)をインストールできます。Logger++, Autorize, Upload Scannerなど、テストを効率化する便利な拡張機能が多数公開されています。
- APIs: Java, Python (Jython), Ruby (JRuby) を使って独自の拡張機能を作成するためのAPIが提供されています。これにより、特定のテストシナリオに合わせたカスタムツールや自動化処理を実装できます。
- Extensions: インストール済みの拡張機能の管理や、自作拡張機能のロードを行います。
2025年2月リリースのバージョン 2025.2 からは、Montoya APIにAI機能が統合され、LLMを利用した拡張機能の開発が可能になりました。
基本的な診断ワークフロー 🚶♀️➡️🚶♂️
Burp Suiteを使った基本的なWebアプリケーション診断の一般的な流れを紹介します。
-
準備と設定:
- Burp Suiteを起動し、プロジェクト(一時的または保存用)を開始します。
- プロキシリスナーが動作していることを確認します。
- Burp Browserを起動するか、使用するブラウザのプロキシ設定と証明書インストールを行います。
- TargetタブのScope設定で、診断対象のURLをスコープに追加します。これにより、関連のないトラフィックを除外し、診断に集中できます。
-
アプリケーションのマッピング(情報収集):
- 設定したブラウザを使って、診断対象のWebアプリケーションを手動で探索します。ログイン、各機能の利用、フォーム送信など、できるだけ多くの機能やページにアクセスします。
- この操作により、アクセスしたURLやリソースがTargetタブのSite mapに記録されていきます。
- (Pro版) 必要に応じて、Site mapから自動クロール(Spider)やコンテンツ発見(Discover content)を実行し、手動探索では見つけにくいリソースも探します。
-
手動テストと分析:
- ProxyのHTTP historyやTargetのSite mapを確認し、興味深いリクエスト(パラメータを含む、重要な機能を扱うなど)を探します。
- 見つけたリクエストをRepeaterに送信します。Repeaterでパラメータ値を変更したり、ヘッダーを追加/削除したりしながらリクエストを再送し、レスポンスの変化を観察して脆弱性の兆候を探します(例:エラーメッセージの変化、予期せぬデータの表示など)。
- 特定のパラメータに対して多数の値を試したい場合(例:IDOR、ブルートフォース、ファジング)、リクエストをIntruderに送信します。ペイロードポジションとペイロードリストを設定し、攻撃を実行して結果を分析します。
- Decoderを使って、リクエストやレスポンスに含まれるエンコードされたデータを解読します。
- Comparerを使って、異なるリクエストやレスポンス間の差分を確認します(例:権限昇格のテスト)。
- Sequencerを使って、セッショントークンなどのランダム性を評価します。
-
自動スキャン (Pro/Enterprise版):
- 手動テストと並行して、または手動テストの後で、Scannerによる自動脆弱性スキャンを実行します。TargetのSite mapからスキャン対象を選択するか、ダッシュボードから新規スキャンを開始します。
- スキャン設定(スキャンタイプ、クロール範囲など)を適切に構成します。
- スキャンが完了したら、ダッシュボードやIssuesタブで検出された脆弱性を確認し、誤検知でないか検証します(Repeaterなどで再現テストを行う)。
-
レポート作成と報告:
- 発見された脆弱性について、再現手順、影響、推奨される対策などをまとめます。
- (Pro版) Burp Suiteのレポート生成機能を利用したり、検出結果をエクスポートして外部のレポートツールに取り込んだりします。最近のバージョンでは、手動で発見した脆弱性を記録する機能も追加されました。
このワークフローは一例であり、対象アプリケーションの特性やテストの目的に応じて、ツールの使い方や手順は柔軟に変化します。重要なのは、各ツールの特性を理解し、状況に応じて効果的に組み合わせることです。
応用テクニックとヒント ✨
- セッションハンドリングルール: ログインが必要なアプリケーションをテストする際、セッションが切れるとテストが中断してしまいます。「Project options」(または「Settings」)->「Sessions」タブでセッションハンドリングルールを設定すると、セッション切れを自動的に検知し、再ログイン処理を行うマクロを実行させることができます。これにより、認証が必要な箇所に対するIntruder攻撃やScannerスキャンを継続できます。
- Match and Replace: ProxyのOptions設定にあるMatch and Replace機能を使うと、プロキシを通過するリクエストやレスポンスに対して、正規表現を用いた自動的な文字列置換が可能です。例えば、常に特定のヘッダーを追加したり、レスポンス中の特定のスクリプトタグを無効化したりするのに使えます。
- 検索機能 (Pro版): 大量のHTTP履歴やサイトマップから特定のキーワード、正規表現、ヘッダーなどを含むリクエスト/レスポンスを検索できます。特定の脆弱性パターンや情報漏洩の痕跡を探す際に非常に便利です。
- 拡張機能の活用: BApp Storeにはテストを効率化する多くの拡張機能があります。例えば、「Autorize」はアクセス制御のテストを支援し、「Logger++」はより高機能なログ表示を提供します。積極的に活用しましょう。
- HTTP/2 サポート: Burp SuiteはHTTP/2に対応しています。必要に応じて、「Project options」(または「Settings」)->「HTTP」->「HTTP/2」で設定を調整できます。Repeaterでも送信プロトコルを選択できます。
- キーボードショートカット: よく使う操作(Send to Repeater, Send to Intruderなど)にはキーボードショートカットが割り当てられています。覚えると操作が格段に速くなります。
まとめ 🏁
Burp Suiteは、Webアプリケーションのセキュリティテストにおいて非常に強力で多機能なツールです。プロキシ機能による通信の傍受・改ざんを基本に、Repeaterによる手動テスト、Intruderによる自動化攻撃、Scanner(Pro版)による自動脆弱性診断など、様々なツールを連携させることで、効率的かつ網羅的なテストが可能になります。
無料のCommunity Editionでも多くの基本的な機能が利用でき、Webセキュリティの学習や基本的な診断には十分役立ちます。より高度な機能や自動化が必要な場合は、Professional EditionやEnterprise Editionの導入を検討すると良いでしょう。
この記事で紹介した機能やワークフローは一部に過ぎません。実際にBurp Suiteを使いこなし、様々なアプリケーションをテストすることで、さらに多くの発見やテクニックを習得できるはずです。ぜひ、日々の開発やセキュリティテストにBurp Suiteを活用してみてください! 💪
参考情報 📚
- PortSwigger 公式サイト: https://portswigger.net/burp (ツールのダウンロード、ドキュメント、Web Security Academyなど)
- Burp Suite ドキュメント (日本語): https://portswigger.net/burp/documentation/index_ja.html (一部機能の日本語ドキュメント)