Burp Suite Web Application Testing について
Burp Suite を使った Web アプリケーションのセキュリティテストを支援するスキルです。HTTP の傍受やリクエスト分析から手動テスト、スキャン結果の確認まで扱い、許可されたテストを前提に Community と Professional の機能差も示します。
主な機能
- 01HTTP トラフィックの傍受と変更
- 02履歴の確認と対象範囲の設定
- 03リクエストの再送とレスポンス分析
- 04Professional 版での脆弱性スキャン
- 05Intruder のペイロード攻撃設定
活用シーン
- 01許可されたアプリテストでリクエストを確認
- 02パラメーター処理とビジネスロジックをテスト
- 03レスポンスから脆弱性の兆候を調査
- 04対象範囲内をスキャンして発見事項を記録
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ davila7/ claude-code-templates --skill burp-suite-web-application-testingインストール後、Claude Code で/burp-suite-web-application-testingを入力して読み込まれたか確認します。
詳細
Burp Suite によるWebアプリケーションテスト
目的
Burp Suite の統合ツールセットを使用して、包括的なWebアプリケーションのセキュリティテストを実行します。HTTPトラフィックの傍受と改変、リクエストの分析とリプレイ、自動脆弱性スキャン、手動テストのワークフローを含みます。このスキルにより、プロキシベースのテスト手法を通じて、Webアプリケーションの脆弱性を体系的に発見・悪用できます。
入力 / 前提条件
必要なツール
- Burp Suite Community または Professional Edition のインストール
- Burp の組み込みブラウザ、または設定済みの外部ブラウザ
- 対象Webアプリケーションの URL
- 認証が必要なテストの場合は有効な認証情報(該当する場合)
環境設定
- 一時プロジェクトまたは名前付きプロジェクトで Burp Suite を起動
- プロキシリスナーを 127.0.0.1:8080(デフォルト)で有効化
- ブラウザを Burp プロキシを使用するように設定(または Burp のブラウザを使用)
- HTTPS 傍受のために CA 証明書をインストール
エディションの比較
| 機能 | Community | Professional |
|---|---|---|
| Proxy | ✓ | ✓ |
| Repeater | ✓ | ✓ |
| Intruder | 制限付き | フル |
| Scanner | ✗ | ✓ |
| Extensions | ✓ | ✓ |
出力 / 成果物
主な出力
- 傍受・改変された HTTP リクエスト/レスポンス
- 修正アドバイスを含む脆弱性スキャンレポート
- HTTP 履歴とサイトマップのドキュメント
- 特定された脆弱性に対する概念実証(PoC)のエクスプロイト
core ワークフロー
フェーズ 1: HTTP トラフィックの傍受
Burp のブラウザを起動する
プロキシ連携をシームレスに行うため、統合ブラウザを開きます。
- Burp Suite を開き、プロジェクトを作成または開きます
- Proxy > Intercept タブに移動します
- Open Browser をクリックして、事前設定済みのブラウザを起動します
- Burp とブラウザの両方を同時に表示できるようにウィンドウを配置します
傍受の設定
キャプチャするリクエストを制御します。
Proxy > Intercept > Intercept is on/off toggle
When ON: Requests pause for review/modification
When OFF: Requests pass through, logged to history
リクエストの傍受と転送
傍受したトラフィックを処理します。
- インターセプトのトグルを Intercept on に設定します
- ブラウザで対象 URL に移動します
- Proxy > Intercept タブで保持されたリクエストを確認します
- リクエストの内容(ヘッダー、パラメータ、ボディ)を確認します
- Forward をクリックしてリクエストをサーバーに送信します
- ページが読み込まれるまで、後続のリクエストを転送し続けます
HTTP 履歴の表示
完全なトラフィックログにアクセスします。
- Proxy > HTTP history タブに移動します
- 任意のエントリをクリックして、リクエスト/レスポンス全体を表示します
- 列見出しをクリックして並べ替えます(# は時系列順)
- フィルターを使用して、関連するトラフィックに絞り込みます
フェーズ 2: リクエストの改変
傍受と改変
転送前にリクエストのパラメータを変更します。
- 傍受を有効にします: Intercept on
- ブラウザで対象のリクエストを発生させます
- 傍受されたリクエスト内で改変するパラメータを見つけます
- リクエストエディタで値を直接編集します
- Forward をクリックして、改変したリクエストを送信します
一般的な改変対象
| 対象 | 例 | 目的 |
|---|---|---|
| 価格パラメータ | price=1 | ビジネスロジックのテスト |
| ユーザー ID | userId=admin | アクセス制御のテスト |
| 数量の値 | qty=-1 | 入力検証のテスト |
| 隠しフィールド | isAdmin=true | 権限昇格のテスト |
例: 価格操作
POST /cart HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
productId=1&quantity=1&price=100
# Modify to:
productId=1&quantity=1&price=1
結果: 改変された価格でアイテムがカートに追加されます。
フェーズ 3: ターゲットスコープの設定
スコープの定義
特定のターゲットにテストを絞り込みます。
- Target > Site map に移動します
- 左パネルでターゲットのホストを右クリックします
- Add to scope を選択します
- 確認が表示されたら Yes をクリックして、スコープ外のトラフィックを除外します
スコープによるフィルタリング
HTTP 履歴からノイズを取り除きます。
- HTTP 履歴の上にある表示フィルターをクリックします
- Show only in-scope items を選択します
- 履歴にはターゲットサイトのトラフィックのみが表示されるようになります
スコープの利点
- サードパーティへのリクエストによる雑然さを減らせます
- スコープ外のサイトを誤ってテストすることを防げます
- スキャンの効率が向上します
- より整理されたレポートを作成できます
フェーズ 4: Burp Repeater の使用
Send Request to Repeater
手動テスト用にリクエストを準備します:
- HTTP 履歴から興味深いリクエストを特定します
- リクエストを右クリックし、Send to Repeater を選択します
- Repeater タブに移動してリクエストにアクセスします
Modify and Resend
さまざまな入力を効率的にテストします:
1. View request in Repeater tab
2. Modify parameter values
3. Click Send to submit request
4. Review response in right panel
5. Use navigation arrows to review request history
Repeater Testing Workflow
Original Request:
GET /product?productId=1 HTTP/1.1
Test 1: productId=2 → Valid product response
Test 2: productId=999 → Not Found response
Test 3: productId=' → Error/exception response
Test 4: productId=1 OR 1=1 → SQL injection test
Analyze Responses
脆弱性の兆候を探します:
- スタックトレースを露出させるエラーメッセージ
- フレームワーク/バージョン情報の漏えい
- ロジックの欠陥を示す異なるレスポンス長
- ブラインドインジェクションを示唆するタイミングの違い
- レスポンス内の予期しないデータ
Phase 5: Running Automated Scans
Launch New Scan
脆弱性スキャンを開始します(Professional のみ):
- Dashboard タブに移動します
- New scan をクリックします
- URLs to scan フィールドにターゲット URL を入力します
- スキャン設定を構成します
Scan Configuration Options
| Mode | Description | Duration |
|---|---|---|
| Lightweight | High-level overview | ~15 minutes |
| Fast | Quick vulnerability check | ~30 minutes |
| Balanced | Standard comprehensive scan | ~1-2 hours |
| Deep | Thorough testing | Several hours |
Monitor Scan Progress
スキャンのアクティビティを追跡します:
- Dashboard でタスクのステータスを確認します
- Target > Site map がリアルタイムで更新されるのを確認します
- 検出された脆弱性については Issues タブを確認します
Review Identified Issues
スキャン結果を分析します:
- Dashboard でスキャンタスクを選択します
- Issues タブに移動します
- 問題をクリックして次の内容を表示します:
- Advisory: 説明と修正方法
- Request: 脆弱性を引き起こした HTTP リクエスト
- Response: 脆弱性を示すサーバーのレスポンス
Phase 6: Intruder Attacks
Configure Intruder
自動攻撃を設定します:
- リクエストを Intruder に送信します(右クリック > Send to Intruder)
- Intruder タブに移動します
- § マーカーを使用してペイロードの位置を定義します
- 攻撃タイプを選択します
Attack Types
| Type | Description | Use Case |
|---|---|---|
| Sniper | Single position, iterate payloads | Fuzzing one parameter |
| Battering ram | Same payload all positions | Credential testing |
| Pitchfork | Parallel payload iteration | Username:password pairs |
| Cluster bomb | All payload combinations | Full brute force |
Configure Payloads
Positions Tab:
POST /login HTTP/1.1
...
username=§admin§&password=§password§
Payloads Tab:
Set 1: admin, user, test, guest
Set 2: password, 123456, admin, letmein
Analyze Results
攻撃の出力を確認します:
- レスポンス長でソートして異常を見つけます
- ステータスコードでフィルタリングして成功した試行を確認します
- grep を使用して特定の文字列を検索します
- ドキュメント用に結果をエクスポートします
Quick Reference
Keyboard Shortcuts
| Action | Windows/Linux | macOS |
|---|---|---|
| Forward request | Ctrl+F | Cmd+F |
| Drop request | Ctrl+D | Cmd+D |
| Send to Repeater | Ctrl+R | Cmd+R |
| Send to Intruder | Ctrl+I | Cmd+I |
| Toggle intercept | Ctrl+T | Cmd+T |
Common Testing Payloads
# SQL Injection
' OR '1'='1
' OR '1'='1'--
1 UNION SELECT NULL--
# XSS
<script>alert(1)</script>
"><img src=x onerror=alert(1)>
javascript:alert(1)
# Path Traversal
../../../etc/passwd
..\..\..\..\windows\win.ini
# Command Injection
; ls -la
| cat /etc/passwd
`whoami`
Request Modification Tips
- 右クリックでコンテキストメニューのオプションを表示します
- エンコード/デコードには decoder を使用します
- Comparer ツールを使用してリクエストを比較します
- 興味深いリクエストはプロジェクトに保存します
Constraints and Guardrails
Operational Boundaries
- 許可されたアプリケーションのみをテストします
- 意図しないスコープ外のテストを防ぐため、スコープを設定します
- サービス拒否を避けるため、スキャンのレートを制限します
- 検出事項とすべての操作を文書化します
Technical Limitations
- Community Edition には自動スキャナーがありません
- 一部のサイトではプロキシのトラフィックがブロックされる場合があります
- HSTS/証明書ピンニングには追加の設定が必要になる場合があります
- 大量のスキャンは WAF によるブロックを引き起こす可能性があります
Best Practices
- 大規模なテストを行う前に、必ずターゲットのスコープを設定します
- 確実なインターセプトのために Burp のブラウザを使用します
- 作業内容を保持するため、プロジェクトを定期的に保存します
- 誤検出がないか、スキャン結果を手動で確認します
Examples
Example 1: Business Logic Testing
Scenario: E-commerce price manipulation
- 通常どおりカートに商品を追加し、リクエストをインターセプトします
- POST ボディ内の
price=9999パラメーターを特定します price=1に変更します- リクエストを転送します
- 改ざんした価格で購入手続きを完了します
Finding: サーバーがクライアントから提供された価格の値を信頼しています。
例 2:認証バイパス
シナリオ:ログインフォームのテスト
- 有効な認証情報を送信し、Repeater でリクエストをキャプチャします
- テストのためにリクエストを Repeater に送信します
username=admin' OR '1'='1'--を試します- ログイン成功のレスポンスを確認します
発見事項:認証における SQL インジェクション。
例 3:情報漏えい
シナリオ:エラーベースの情報収集
- 製品ページに移動し、
productIdパラメーターを確認します - リクエストを Repeater に送信します
productId=1をproductId=testに変更します- フレームワークのバージョンを露出する詳細なエラーを確認します
発見事項:スタックトレースで Apache Struts 2.5.12 が露出していました。
トラブルシューティング
ブラウザがプロキシ経由で接続しない
- プロキシリスナーが有効であることを確認します(Proxy > Options)
- ブラウザのプロキシ設定が 127.0.0.1:8080 を指していることを確認します
- ローカル接続をブロックしているファイアウォールがないことを確認します
- 確実にセットアップするには、Burp の組み込みブラウザを使用します
HTTPS インターセプトが失敗する
- Burp の CA 証明書をブラウザ/システムにインストールします
- http://burp にアクセスして証明書をダウンロードします
- 証明書を信頼されたルートに追加します
- インストール後にブラウザを再起動します
動作が遅い
- 処理を減らすためにスコープを絞り込みます
- 不要な拡張機能を無効にします
- 起動オプションで Java のヒープサイズを増やします
- 使用していない Burp のタブや機能を閉じます
リクエストがインターセプトされない
- 「Intercept on」が有効になっていることを確認します
- インターセプトのルールが対象をフィルタリングしていないことを確認します
- ブラウザが Burp のプロキシを使用していることを確認します
- 対象が未サポートのプロトコルを使用していないことを確認します