Burp Suiteは、ウェブアプリケーションのセキュリティ専門家の必須ツールです。そのプロキシモジュールは、ブラウザとサーバー間のHTTP/HTTPSトラフィックをリアルタイムでキャプチャ、分析、修正することを可能にします。このガイドでは、Burp Suiteをプロキシとして設定する方法、基本的なペンテストに使用するモジュール、および初心者が犯しがちな一般的なミスを避ける方法について説明します。
Burp Suiteとは何か、ペンテスターにとっての必要性
Burp Suiteは、PortSwigger社によって開発されたウェブアプリケーションのセキュリティテストのための統合プラットフォームです。このツールは、Community(無料)、Professional、Enterpriseの3つのエディションがあります。初級および中級レベルのほとんどのタスクにはCommunity版で十分ですが、Professional版はアクティブな脆弱性スキャナーやIntruderの高度な機能へのアクセスを提供します。
Burp Suiteのペンテストにおける主な役割は、中間者プロキシとしての役割です。このツールは、ブラウザとターゲットウェブアプリケーションの間に立ち、すべてのHTTP/HTTPSトラフィックをキャプチャします。これにより、以下のことが可能になります:
- ブラウザがユーザーに隠している「生」のリクエストとレスポンスを見ることができる
- リクエストのパラメータをリアルタイムで修正する — ヘッダー、POSTリクエストのボディ、クッキーを変更する
- ページを再読み込みせずに変更されたデータでリクエストを繰り返す
- 脆弱性を探すためにパラメータの値を自動的に試行する
- ウェブアプリケーションの完全なマップを構築する(スパイダー/クローラー)
- SQLi、XSS、IDOR、SSRFなどの脆弱性を見つける
Burp Suiteは、商業プロジェクトで活動するプロのペンテスターや、Bug Bountyプログラム(HackerOne、Bugcrowd)の参加者によって使用されています。アプリケーションセキュリティの分野でキャリアを始める際に、最初にインストールされるツールです。
⚠️ 注意:
Burp Suiteは、所有者からの書面による許可があるアプリケーションのテストや、学習用のスタンド(DVWA、WebGoat、HackTheBox、TryHackMe)のみで使用してください。無許可のテストは、刑事罰の対象となります。
Burp Suiteにおけるプロキシキャプチャの仕組み
Burp Suiteを起動し、プロキシモジュールを有効にすると、ローカルプロキシサーバーがあなたのマシン上に立ち上がります。デフォルトでは、127.0.0.1:8080でリッスンしています。ブラウザはこのアドレスをHTTP/HTTPSプロキシとして使用するように設定されます。
動作の概要は以下の通りです:
ブラウザ │ │ HTTP/HTTPS リクエスト ▼ Burp Suite プロキシ (127.0.0.1:8080) │ │ ← ここでBurpがキャプチャし、表示し、変更を許可する │ ▼ ターゲットウェブサーバー (example.com) │ │ HTTP/HTTPS レスポンス ▼ Burp Suite プロキシ │ │ ← ここでBurpがサーバーのレスポンスをキャプチャする │ ▼ ブラウザ (レスポンスを受け取る)
HTTPSトラフィックの場合、Burp Suiteは各ドメインのために独自のTLS証明書をリアルタイムで生成します。ブラウザが安全でない接続の警告を表示しないようにするためには、BurpのルートCA証明書をブラウザまたはオペレーティングシステムの信頼された証明書機関にインストールする必要があります。この手順が必要なのは、HTTPSトラフィックを復号化するためであり、このステップを踏まないと暗号化されたデータしか見ることができません。
キャプチャモード(Intercept)は、オンまたはオフにすることができます。Interceptがオンになっていると、各リクエストはBurpで「フリーズ」し、あなたの決定を待ちます:そのまま通過させる、変更する、またはリセットする。オフになっていると、Burpはトラフィックを透過的に通過させますが、HTTP履歴にログを記録します。
ブラウザの設定とCA証明書のインストール
これは作業を開始するための最も重要なステップです。2つのオプションを考えてみましょう:Burpの内蔵ブラウザを使用する方法と、Chrome/Firefoxを手動で設定する方法です。
オプション1:Burp Suiteの内蔵ブラウザ(初心者に推奨)
バージョン2021.x以降、Burp Suiteにはプロキシでの作業用に既に設定された内蔵のChromiumブラウザが付属しています。これは作業を開始する最も迅速な方法です:
- Burp Suiteを開く → プロキシセクションに移動
- ブラウザを開くボタンをクリック
- Burpのプロキシに設定されたChromiumが開きます
- 必要なサイトに移動すると、トラフィックがすぐにキャプチャされます
オプション2:Firefoxの手動設定
Firefoxは手動設定に適しており、独自の証明書ストレージを持っているため(システムに依存しない):
ステップ1. Firefoxでプロキシを設定:
- Firefoxを開く → 設定 → プロキシサーバー(またはFoxyProxy拡張を使用)
- 「プロキシの手動設定」を選択
- HTTPプロキシ:
127.0.0.1、ポート:8080 - 「HTTPS用にこのプロキシを使用する」にチェックを入れる
- OKをクリック
ステップ2. BurpのCA証明書をインストール:
- Burp Suiteが起動していてプロキシが有効であることを確認
- ブラウザで次のアドレスにアクセス:
http://burpsuiteまたはhttp://127.0.0.1:8080 - 「CA証明書」をクリックすると、
cacert.derというファイルがダウンロードされます - Firefoxで:設定 → プライバシーとセキュリティ → 証明書 → 証明書の表示
- 「証明書機関」タブ → インポート → ダウンロードしたファイルを選択
- 「ウェブサイトの識別にこのCAを信頼する」にチェックを入れる
- OKをクリック
これらのステップを経ることで、FirefoxはBurpが生成するHTTPSサイト用の証明書を信頼し、警告なしに暗号化されたトラフィックをキャプチャできるようになります。
HTTP/HTTPSトラフィックのキャプチャと分析
ブラウザの設定が完了したら、トラフィックの作業を開始できます。Burp Suiteのプロキシタブの主な機能を見てみましょう。
HTTP履歴 — すべてのリクエストのログ
HTTP履歴タブ(プロキシ → HTTP履歴)は、Burpを通過したすべてのリクエストのログです。ここでは以下のことが確認できます:
- リクエストメソッド(GET、POST、PUT、DELETEなど)
- URLとパラメータ
- HTTPヘッダー(Cookie、Authorization、User-Agentを含む)
- リクエストボディ(POST/PUT用)
- サーバーのレスポンスコード(200、302、403、500...)
- レスポンスのサイズと時間
任意のリクエストを右クリックすると、Repeater、Intruder、Scanner、Decoderなどのモジュールに送信するオプションを含むコンテキストメニューが表示されます。これがBurpでの主な作業プロセスです。
Intercept — アクティブキャプチャモード
Interceptをオンにすると(「Intercept is on/off」ボタン)、ブラウザからの次のリクエストがBurpで「フリーズ」します。内容が表示され、以下の操作が可能です:
- Forward — リクエストを変更せずに通過させる
- Drop — リクエストを破棄する(サーバーには届かない)
- 手動でデータを変更 — 任意のフィールドを編集してForwardを押す
- Action → Send to Repeater — Repeaterに送信してさらなる分析を行う
実際の例:ログインフォームのPOSTリクエストをキャプチャします。リクエストのボディにusername=admin&password=12345のパラメータが表示されます。Burp内で値を変更してForwardを押すと、サーバーは変更されたデータを受け取ります。
主要モジュール:Repeater、Intruder、Scanner
Burp Suiteは単なるプロキシではありません。これは一連のツールのエコシステムです。最も頻繁に使用される3つのモジュールを見てみましょう。
Repeater — リクエストの手動テスト
Repeaterはペンテスターの作業馬です。HTTP履歴からリクエストを送信し(右クリック → Send to Repeater)、その後以下の操作が可能です:
- リクエストの任意のパラメータを変更する
- Sendボタンでリクエストを再送信する
- 右側のパネルでサーバーのレスポンスを見る
- 異なるリクエストの応答を比較する
- 送信したすべてのバリエーションの履歴を保存する
Repeaterの典型的な使用シナリオ:GETリクエストでid=5というパラメータを見つけました。リクエストをRepeaterに送信し、id=1、id=0、id=-1、id=999999のときに何が起こるかを確認します。これはIDOR(Insecure Direct Object Reference)の基本的なチェックです。
Intruder — 自動化された試行
Intruderは、指定された辞書やパターンに従ってパラメータの値を自動的に試行することを可能にします。主な攻撃モードは以下の通りです:
| モード | 説明 | 使用法 |
|---|---|---|
| スナイパー | 1つのパラメータ、1つの辞書 | 1つのフィールドのブルートフォース |
| バッタリングラム | 複数のパラメータ、1つの値 | 複数の場所で同じ値が必要な場合 |
| ピッチフォーク | 複数のパラメータ、複数の辞書(同時) | 用意されたペアからログイン+パスワードを試行する |
| クラスター爆弾 | 複数のパラメータ、すべての組み合わせ | すべての組み合わせを完全に試行する |
Community版では、Intruderの速度は人工的に制限されています(約1秒あたり1リクエスト)。Professional版には制限がありません。この制限を回避するために、Community版ではサードパーティの拡張機能やBurpと組み合わせたffuf/wfuzzユーティリティを使用します。
Scanner — 自動脆弱性スキャナー(Pro)
ScannerはProfessional版でのみ利用可能です。これは、キャプチャされたリクエストを自動的に分析し、脆弱性を探します:SQLインジェクション、XSS、XXE、SSRF、パストラバーサルなど。他の脆弱性を探すために、Community版では受動的スキャンが行われ、Burpがトラフィックを分析し、アクティブな攻撃なしに潜在的に危険な場所をハイライトします。
Burp Suiteを使用した一般的な脆弱性の検索
Burp Suiteを使用して最も一般的な脆弱性を検索する実践的なシナリオを見てみましょう。
SQLインジェクション(SQLi)
Repeaterを使用した基本的なSQLiチェック:
- データベースに送信されるパラメータを含むリクエストをキャプチャします(例:
id=5またはsearch=test) - Repeaterに送信します
- 値に単一引用符を追加します:
id=5' - Sendをクリックし、レスポンスを確認します — サーバーがSQLエラーを返したり、動作が変わった場合は、SQLiの兆候があります
- ブールインジェクションをチェックします:
id=5 AND 1=1とid=5 AND 1=2— レスポンスが異なる場合、インジェクションがあります
反射型XSS
反射型XSSのチェック:
- レスポンスページに表示される値を持つパラメータを見つけます
- リクエストをRepeaterに送信します
- テストペイロードを挿入します:
<script>alert(1)</script> - レスポンスを確認します — ペイロードがHTMLにエスケープなしで含まれている場合、XSSが存在します
- scriptタグがフィルタリングされていないか確認します:
<img src=x onerror=alert(1)>を試してみてください
IDOR(Insecure Direct Object Reference)
現代のウェブアプリケーションで最も一般的な脆弱性のクラスの1つです:
- 数値IDでオブジェクトにアクセスするリクエストを見つけます:
/api/user/profile?id=1234 - Repeaterに送信します
- IDを別の値に変更します:
id=1235、id=1 - サーバーが他のユーザーのデータを返し、認証エラーが発生しなかった場合、これはIDORです
認証チェックとセッション管理
Burp Suiteは、認証メカニズムを簡単にチェックできます:
- 保護されたリソースへのリクエストをRepeaterにコピーします
- セッションクッキーの値を削除または変更します
- サーバーが認証エラーを返すか、それともデータを返すかを確認します
- アルゴリズムを
noneに変更した場合、JWTトークンが機能するかを確認します
Burp Suite + 外部プロキシ:その必要性
Burp Suiteはローカルのツールプロキシです。しかし、いくつかのシナリオでは、ペンテスターはBurpのトラフィックを外部プロキシを通過させる必要があります。いつ、なぜこれが必要かを見てみましょう。
シナリオ1:実際のIPアドレスからのテスト
一部のウェブアプリケーションは、地理的ロケーションやIPの評判に基づく保護を持っています。ターゲットアプリケーションがデータセンターからのトラフィックや既知のVPN-IPをブロックする場合、ペンテスターはレジデンシャルプロキシを使用できます — これらは実際の家庭ユーザーのIPアドレスを持ち、サーバーには通常の訪問者のように見えます。
シナリオ2:アクティブテスト中のレート制限の回避
アクティブスキャンやIntruderを使用していると、ターゲットサーバーは大量のリクエストのためにあなたのIPをブロックすることがあります。プロキシプールを通じてローテーションすることで、異なるIPアドレスに負荷を分散させることができます。これらのタスクには、データセンタープロキシが適しており、高速で安定した接続を提供し、特に自動化されたテストにおいて重要です。
Burp Suiteでのアップストリームプロキシの設定方法
Burp Suiteはアップストリームプロキシ(上位プロキシ)をサポートしています。設定方法は以下の通りです:
- Burp Suiteを開く → 設定(または古いバージョンではユーザーオプション)
- ネットワーク → 接続 → アップストリームプロキシサーバーセクションに移動
- 追加をクリック
- 宛先ホストフィールドに
*(すべてのホスト用)または特定のドメインを指定します - 外部プロキシのアドレスとポートを指定します
- タイプを選択:HTTP、SOCKS4、またはSOCKS5
- 必要に応じてログインとパスワードを入力します
- OKをクリック
# Burp Suiteでのアップストリームプロキシの設定例: Destination host: * Proxy host: proxy.example.com Proxy port: 8888 Auth type: Basic Username: your_login Password: your_password Proxy type: SOCKS5
この設定を行うと、Burpがターゲットサーバーに送信するすべてのトラフィックは、指定されたアップストリームプロキシを通過します。ブラウザは引き続き127.0.0.1:8080でBurpに接続し、Burpは外部プロキシを通じてリクエストを自動的にフォワードします。
ペンテストのためのプロキシタイプの比較
| プロキシタイプ | 速度 | 匿名性 | ペンテストでの使用 |
|---|---|---|---|
| データセンター | 高い | 中程度 | アクティブスキャン、Intruder |
| レジデンシャル | 中程度 | 高い | ジオブロックの回避、ユーザーの模倣 |
| モバイル | 中程度 | 非常に高い | モバイルAPIのテスト、厳しいWAFの回避 |
Burp Suiteを使用する際のヒントとよくある間違い
Burp Suiteを使用している間に、ペンテスターコミュニティには初心者の一般的なミスと検証されたテクニックのリストが蓄積されました。ここでは最も重要なものを紹介します。
初心者のよくある間違い
- CA証明書のインストールを忘れた。 症状:HTTPSサイトが安全でない接続の警告を表示し、トラフィックがキャプチャされない。解決策:上記の手順に従って証明書をインストールしてください。
- Interceptがオンのままになっている。 ブラウザが「フリーズ」し、ページが読み込まれない。解決策:プロキシ → Interceptに移動し、「Intercept is on」をクリックしてキャプチャをオフにします。
- システムトラフィックの例外を追加しなかった。 BurpはWindowsの更新やアンチウイルスなどのトラフィックをキャプチャします。プロキシ → オプション → クライアントリクエストのキャプチャでフィルタを設定し、必要なドメインのみをキャプチャします。
- 許可なしに本番サーバーをテストしている。 これは違法です。テスト用のスタンドや明示的な許可があるアプリケーションのみを使用してください。
- Target → Site Mapタブを無視している。 ここでBurpはアプリケーション全体のマップを構築します — 発見されたすべてのエンドポイント、パラメータ、レスポンスが表示されます。これは偵察時の貴重な情報源です。
役立つテクニック
- Match and Replace。 プロキシ → オプション → Match and Replaceで、リクエスト内の値を自動的に置き換える設定ができます。例えば、ヘッダーを自動的に追加したり、User-Agentをモバイル用に変更したりします。
- Decoder。 Decoderモジュールは、データを迅速にデコード/エンコードすることを可能にします:Base64、URLエンコーディング、HTMLエンティティ、Hex。トークンやパラメータの分析に不可欠です。
- Comparer。 サーバーの2つのレスポンスをバイト単位で比較できます。Comparerに似たリクエストを2つ送信し、すぐに違いを確認できます。
- BApp Store。 Burp Suiteは拡張機能をサポートしています(BApp Store)。人気のあるもの:Autorize(認証チェック)、Logger++(拡張ログ)、Turbo Intruder(Communityでの高速試行)、JWT Editor。
- プロジェクトを保存します。 Professional版ではプロジェクトを保存できます。Community版では、エクスポート → 状態を保存を使用して、閉じる際にHTTP履歴を失わないようにします。
- スコープを使用します。 Target → Scopeでターゲットアプリケーションのドメインを追加します。これにより、Burpは関連性のないトラフィックをフィルタリングし、Google、CDNなどへのリクエストでHTTP履歴を混雑させることを防ぎます。
実践のための役立つリソース
| リソース | タイプ | 対象者 |
|---|---|---|
| PortSwigger Web Security Academy | 無料のラボ + 理論 | 初心者と中級者 |
| DVWA (Damn Vulnerable Web App) | ローカルスタンド | リスクなしの実践 |
| HackTheBox / TryHackMe | オンラインCTFプラットフォーム | 実際のシナリオの実践 |
| WebGoat (OWASP) | レッスン付きのローカルスタンド | OWASP Top 10の学習 |
結論
Burp Suiteは、ウェブアプリケーションのセキュリティテストのための強力でありながらアクセス可能なツールです。そのプロキシモジュールはHTTP/HTTPSトラフィックの完全な可視性を提供し、Proxy → Repeater → Intruderの組み合わせは手動ペンテストのほとんどのタスクをカバーします。Community版とPortSwigger Web Security Academyの無料ラボから始めることができ、これは実践でツールを習得するための最良の方法です。
スタートのための重要なステップ:Burp Suiteをインストールし、FoxyProxyを介してブラウザを設定し、CA証明書をインストールし、スコープにターゲットドメインを追加すれば、作業の準備が整います。基本的なモジュールを習得したら、BApp Storeの拡張機能の学習に進んでください:Autorize、Turbo Intruder、JWT Editorは、あなたの可能性を大幅に広げてくれます。
ペンテストの範囲内で、非標準の地理的位置でアプリケーションをテストしたり、IPブロックを回避したり、実際のユーザーのトラフィックを模倣する必要がある場合は、Burp Suiteでアップストリームプロキシを設定することをお勧めします。IPの評判に基づく保護を回避し、高い匿名性が求められるタスクには、レジデンシャルプロキシが適しており、実際のユーザーのIPアドレスからのトラフィックを提供し、テスト中のブロックのリスクを最小限に抑えます。
```