はじめに
Burp Suite は、Web アプリケーションのセキュリティテストのための強力なツールです。そのコアコンポーネントの 1 つである Proxy は、ブラウザとターゲットアプリケーション間のすべての HTTP/S トラフィックを傍受し、記録します。HTTP History タブには、すぐに数百または数千のリクエストが蓄積され、興味のある特定の項目を見つけるのが困難になります。
この実験 (Lab) では、Proxy の HTTP History 内にある強力なフィルタリング機能の使い方を学びます。これらのフィルタを使いこなすことは、効率的にトラフィックを分析し、脆弱性を特定し、アプリケーションの最も関連性の高い部分にテストの労力を集中させるために不可欠です。
Proxy > HTTP History タブへ移動する
このステップでは、Burp Suite を起動し、プロキシされたすべてのトラフィックが記録される HTTP History タブに移動します。
まず、Burp Suite を起動する必要があります。通常、デスクトップ環境のアプリケーションメニューで見つけるか、ターミナルから起動できます。
Burp Suite が実行されると、上部にいくつかのタブ(Dashboard、Target、Proxy、Intruder など)が表示されたメインウィンドウが表示されます。Proxy タブは、インターセプトプロキシを制御し、リクエストの履歴を表示できる場所です。
Proxy タブをクリックします。Proxy タブ内には、いくつかのサブタブが表示されます。HTTP history サブタブをクリックします。
これで、Burp のプロキシを通過した HTTP リクエストのリストが表示されたテーブルが表示されるはずです。すでにいくつかのサンプル トラフィックを生成しています。
「Filter」バーをクリックしてフィルタオプションを表示する
このステップでは、履歴テーブルに表示されるリクエストを制御できるフィルタオプションを表示します。
デフォルトでは、HTTP History はキャプチャされたすべての項目を表示します。「Filter: Showing all items」というテキストが表示された薄い灰色のバーが、リクエストのテーブルの上にあります。このバーは詳細なフィルタコントロールを隠しています。
フィルタオプションを表示するには、このフィルタバーのどこかをクリックするだけです。
クリックすると、バーが下に展開され、HTTP History をフィルタリングするための包括的なオプションが表示されます。これは、次のステップでリクエストを絞り込むために使用するコントロールパネルです。
「Show only in-scope items」にチェックを入れる
このステップでは、最も重要なフィルタの一つであるスコープフィルタの使い方を学びます。これにより、ターゲットアプリケーションに関連するトラフィックのみに焦点を当てることができます。
まず、ターゲットスコープが何であるかを定義する必要があります。
- Target タブに移動します。
- Scope サブタブをクリックします。
- 「Target Scope」セクションで、Add ボタンをクリックします。
- ダイアログボックスが表示されます。ターゲットとして
http://portswigger-labs.netを入力し、OK をクリックします。Burp Suite は、スコープ外の項目を履歴に送信するのを停止するかどうか尋ねる場合があります。この実験ではフィルタの動作を確認したいので、No をクリックしてください。
次に、Proxy > HTTP history タブに戻ります。前のステップで開いたフィルタオプションで、「Filter by request type」セクションを見つけます。
Show only in-scope items というラベルのチェックボックスにチェックを入れます。
すぐに、履歴テーブルのリクエストリストが更新されます。これで、portswigger-labs.net に対して行われたリクエストのみが表示されるようになります。example.com へのリクエストは非表示になり、スコープベースのフィルタリングの威力を示します。
MIME タイプ(例:HTML)でフィルタリングする
このステップでは、レスポンスの MIME タイプに基づいてフィルタリングすることで、表示される履歴をさらに絞り込みます。これは、Web ページ、スクリプト、画像などの特定のコンテンツタイプを見つけるのに役立ちます。
フィルタオプションがまだ表示されている状態で、「Filter by MIME type」というラベルのセクションを見つけます。このセクションでは、レスポンスの Content-Type ヘッダーに基づいてリクエストを表示または非表示にすることができます。
- ラジオボタンが Show only に設定されていることを確認します。
- HTML の横にあるチェックボックスにチェックを入れます。
HTML ボックスにチェックを入れると、HTTP 履歴テーブルが再度更新されます。これで、HTML MIME タイプを持つレスポンスを返したスコープ内のリクエストのみが表示されるようになります。CSS ファイル(main.css)のリクエストは非表示になり、メインページの要求のみが残ります。このテクニックは、スタイルシート、スクリプト、画像などの他のリソースからユーザーが表示可能なページを分離するのに非常に効果的です。
レスポンスボディ内の検索語句でフィルタリングする
このステップでは、検索語句フィルタを使用して、レスポンス内の特定のコンテンツに基づいてリクエストを見つけます。これは、特定の機能、エラーメッセージ、または潜在的な脆弱性を特定するための非常に強力な機能です。
フィルタオプションで、下部にある「Filter by search term」セクションを見つけます。
- テキストフィールドに
PortSwiggerと入力します。 - Response body の横にあるチェックボックスがオンになっていることを確認します。これにより、Burp は HTTP レスポンスのボディ内を検索するようになります。
- ドロップダウンを「Literal search」のままにします。これにより、入力した正確なテキストが検索されます。
HTTP 履歴は、以前のすべての基準(スコープ内、HTML)を満たし、かつレスポンスボディにリテラル文字列「PortSwigger」を含む項目のみを表示するようにフィルタリングされます。これにより、キャプチャされたトラフィックの非常に具体的でターゲットを絞った分析が可能になります。ドロップダウンを「Literal search」から「Regex」に変更することで、正規表現を使用してより複雑な検索パターンを実行することもできます。
まとめ
この実験では、Burp Suite のプロキシ HTTP 履歴をフィルタリングするための基本的なテクニックを学びました。まず、履歴タブに移動してフィルタオプションを表示しました。次に、いくつかの種類のフィルタを組み合わせて適用する練習をしました。
- スコープ (Scope): 特定のターゲットに焦点を当てることで、ノイズを減らします。
- MIME タイプ (MIME Type): HTML のような特定のコンテンツタイプを分離します。
- 検索語句 (Search Term): レスポンス内の特定のコンテンツに基づいてリクエストを見つけます。
これらのフィルタリングスキルを習得することは、大規模で複雑な Web アプリケーションを分析する際に、より効率的かつ効果的に作業できるようになるため、あらゆる Web セキュリティ専門家にとって不可欠です。
