ペネトレーションテストでのBurp Suiteの使用方法

このセクションでは、Web アプリケーションのテストワークフローにおけるBurp Suiteの使い方の基本を説明します。Burpのインストールと起動、プロジェクトの開始、表示設定は、Burp Suite入門のヘルプを参照してください。

Burp Suiteを初めて使用する場合は、以下のビデオを見て、ユーザインタフェースに慣れることを推奨します。

YouTubeで"Burp Suite Essentials"の残りのプレイリストをチェックできます。

ビデオチュートリアル

Burp Suite Essentialsプレイリスト

ペネトレーションテストにBurpを使用するには、追加設定が不要なBurpブラウザを使用してください。Burpブラウザを起動するには、Proxy > インターセプトタブに移動し、ブラウザを開くをクリックします。新しいブラウザセッションが開き、すべてのトラフィックが自動的にBurpを経由するようプロキシされます。これでHTTPSもテストできます。

Burpを起動しBurpブラウザを開いたら、Proxy > インターセプトタブを開き、インターセプトが有効になっていることを確認してください(もしインターセプト無効になっていたら、クリックしてインターセプト状態を反転します)。次に、ブラウザで任意のURLにアクセスします。

ブラウザが送信した各HTTPリクエストが、インターセプトタブに表示されます。それぞれのメッセージを確認し、必要なら編集もできます。編集が完了したら、転送ボタンをクリックして、宛先Webサーバにリクエストを送信します。インターセプトされたメッセージが保留されている場合、ブラウザが読み込みを完了させるためには、すべてのメッセージを転送する必要があります。

インターセプトの必要に応じてインターセプト有効/無効ボタンを変更してください。詳細は、Burp Proxyとは?を参照してください。

ペネトレーションテスト: リクエストのインターセプト

Burpを実行している状態でアプリケーションをブラウズすると、Proxy > HTTP履歴タブには、インターセプト機能が無効になっている場合でも、すべてのリクエストとレスポンスが保持されます。このタブから、生成された一連のリクエストを確認できます。

メッセージエディタパネルでテーブル内のアイテムを選択して、完全なリクエストとレスポンスを表示します。

ペネトレーションテスト: Proxy履歴

Inspectorを使用すると、メッセージで見つかった潜在的に興味深いアイテムを分析するのに役立つさまざまな機能にすばやくアクセスできます。たとえば、エンコードされたアイテムをInspectorでドリルダウンすると、適切なデコード手順のシーケンスが適用されるため、より人間が読める形式で値を調べられます。

Burp Repeaterなどの編集可能なメッセージの場合、Inspectorでこのデコードされた値も編集できます。関連するエンコーディングは、入力した値に対して自動的に再適用されます。

ペネトレーションテスト: Inspector

ブラウズをしていると、Burpはデフォルトで対象アプリケーションのサイトマップも作成します。これは、Target > サイトマップタブで確認できます。

このサイトマップには、あなたがブラウザでアクセスしたすべてのURLと、Burpがレスポンスから推測したコンテンツ(たとえば、HTMLレスポンスから分析したリンクなど)が含まれます。既にアクセスしたアイテムは黒で、その他のアイテムは灰色で表示されます。ツリーを展開し個々のアイテムを選択すると、完全なリクエストとレスポンスが(存在していれば)表示されます。

詳細は、Targetツールの使い方を参照してください。ライブタスクを適切に設定すると、ブラウズ時にサイトマップに追加するコンテンツを制御できます。

ペネトレーションテスト: サイトマップ

Burp Suiteは補助ツールとして設計されており、ユーザが実行しようとする操作を制御できます。Burpのペネトレーションテストワークフローの中核は、特定のタスクを実行するために各ツール間でHTTPリクエストを転送する機能です。

Proxy > インターセプトタブやHTTP履歴サイトマップタブなど、HTTPメッセージが表示されるどこからでも、メッセージを転送できます。1つまたは複数のメッセージを選択し、コンテキストメニューから他のツールに転送できます。

ペネトレーションテスト: 手動ツールへのリクエスト送信

特定のタスクに使用するBurpツールは次の通りです:

とても簡単なものから高度で専門的なものまで、さまざまなテストタスクを実行する際に、Burpのツールを組み合わせて使用できます。

一部のテストでは、Burpブラウザを使用できない場合があります。その場合は追加の手順が必要で、Burpと共に動作するようブラウザを設定し、ブラウザにBurpのCA証明書をインストールする必要があります。

テストワークフロー

手動や自動の技術を効果的に組み合わせられ、Burpの動作を完全に制御でき、テストするすべてのアプリケーションについて詳細な情報と分析を提供します。

一部のユーザは、Burpをこのように使うのではなく、高速かつ簡単にアプリケーションの脆弱性スキャンを実行したいだけかもしれません。もしそうなら、Webサイトのスキャンを参照してください。

次の図は、Burpのペネトレーションテストワークフローの主要部分のおおまかな概要です。

Burp Suiteのテストワークフロー

情報収集、分析

ProxyツールはBurpのワークフローの中心部に位置します。Burpブラウザでアプリケーションを巡回している間、Burpはすべての関連情報を収集しており、他のアクションを簡単に開始できます。典型的なテストで、情報収集、分析フェーズには次のタスクが行われます。

アプリケーションの手動マッピング

BurpブラウザがBurp Proxyを経由している間に、リンクを辿る、フォームを送信する、複数手順の処理を実行するなどの操作を行い、アプリケーションを手動でマッピングしていきます。このプロセスで、リクエストしたコンテンツがProxy履歴とTargetサイトマップに取り込まれ、レスポンスから推測できる追加のコンテンツ(リンク、フォームなど)が、(ライブタスクによって)サイトマップに追加されます。リクエストされていないアイテム(サイトマップでグレーで表示される)を確認し、ブラウザでこれらをリクエストします。

必要な箇所で自動マッピングを実行

必要に応じて、さまざまな方法でマッピングプロセスを自動化できます。次のことが可能です:

自動アクションを実行する前に、ターゲットスコープセッションハンドリングなどBurpのさまざまな挙動の設定を更新する必要があります。

アプリケーションの攻撃経路の分析

マッピングプロセスでは、アプリケーションについて収集したすべての情報を、Proxy履歴やTargetサイトマップへ取り込みます。どちらのリポジトリにも、含まれている情報の分析を手助けする機能や、アプリケーションが晒している攻撃経路を評価する機能があります。さらに、Burpの対象分析を使用すると、攻撃経路の範囲やアプリケーションが使用しているさまざまな種類のURLを見つけられます。

ツールの設定

対象アプリケーションに応じた動作をBurpにさせるために必要なさまざまな設定があり、テストの各段階で使用する必要があります。例:

脆弱性の検出とエクスプロイト

対象アプリケーションの情報収集と分析、必要なBurpの設定が終わったら、アプリケーションの脆弱性調査を開始できます。この段階では多くの場合、一度に複数のBurpツールを使用し、ツール間で個々のリクエストを受け渡してさまざまなタスクを実行し、Burpブラウザに戻って追加のテストを実行するのが最も効果的です。Burp全体でコンテキストメニューを使用すると、ツール間のアイテムの受け渡しや他のアクションが実行できます。

Burpのデフォルト設定で、Proxyを通過したすべてのリクエストとレスポンスにライブパッシブスキャンが自動的に実行されます。アプリケーションを積極的に調査する前から既に、詳細な調査に裏付けられた問題点が登録される場合があります。

Burpのツールはさまざまな方法で使用でき、積極的に脆弱性をテストするプロセスをサポートします。さまざまな種類の問題点における例を挙げます。

入力値ベースのバグ

SQLインジェクション、クロスサイトスクリプティング、ファイルパストラバーサルのような問題で、さまざまな方法でBurpを使用できます:

ロジックと設計の欠陥

クライアント側のコントロールを安全に使用していない問題、アカウントロックアウトの欠如、多段階処理で重要な処理を省略できる問題などは、通常手動で作業する必要があります:

アクセス制御の問題

Burpには、アクセス制御の脆弱性をテストする際に便利な機能があります:

その他の脆弱性

その他の種類の脆弱性を調査する際に発生するほぼすべてのタスクで使用できる機能がBurpにはあり、多くは自動化できます。例:

続きを読む

Burpの全ツールと機能、Burpでテストする際の一般的なワークフローについて、豊富なドキュメントがあります。

Burpのメインツールの詳細は、次のリンクを参照してください:

さらに、Burp Suiteの使用に関するサポートセンタの記事もチェックしてください。