はじめに
Burp Suite は、Web アプリケーションのセキュリティテストのための強力なツール群です。その中でも最も役立つ機能の 1 つが Burp Comparer です。これは、HTTP リクエストやレスポンスなど、任意の 2 つのデータ間の視覚的な「差分」を実行するためのツールです。セッショントークン、隠しフォームフィールド、エラーメッセージなどの脆弱性を明らかにする可能性のある微妙な違いを特定するのに非常に役立ちます。
この実験では、Burp Comparer を使用する基本的なワークフローを学びます。Burp Proxy を使用して類似した 2 つの HTTP リクエストをキャプチャし、それらを Comparer ツールに送信してから、ハイライトされた違いを分析します。
プロキシ履歴から類似した 2 つのリクエストを見つける
このステップでは、Burp Suite と Web ブラウザを起動し、類似した 2 つのログインリクエストを生成します。これらのリクエストは、比較のために使用されます。
まず、必要なアプリケーションを起動します。Burp Suite と Chromium Web Browser はどちらもデスクトップ上にあります。
- デスクトップ上の Burp Suite アイコンをダブルクリックして起動します。ダイアログボックスが表示された場合は、デフォルト設定を使用し、
NextをクリックしてからStart Burpをクリックします。 - デスクトップ上の Chromium Web Browser アイコンをダブルクリックします。
次に、トラフィックをキャプチャする必要があります。ここでは、架空のウェブサイトに異なる認証情報で 2 回ログインを試みます。
- Burp Suite で、
Proxyタブに移動し、その中のInterceptサブタブに移動します。ボタンがIntercept is offと表示されている場合は、クリックしてIntercept is onに変更します。 - Chromium ブラウザで、次のアドレスに移動します:
http://www.google.com。リクエストが Burp Suite で「停止」するのを確認します。 - Burp Suite に戻ります。キャプチャされたリクエストが表示されます。この実験では、これを変更する必要はありません。
Forwardボタンをクリックして、リクエストを進めてください。ブラウザで Google のホームページが読み込まれるまで、これを数回繰り返します。 - 次に、ターゲットリクエストを生成しましょう。ブラウザで「login page example」と検索します。簡単なログインフォームを提供する任意の検索結果をクリックします。この例では、ページを見つけ、ユーザー名に
user1、パスワードにpass1を入力したと仮定します。ログインボタンをクリックします。 - Burp Suite に戻り、
Forwardをクリックしてログインリクエストを通過させます。 - ブラウザに戻り、
user2とpass2のような異なる認証情報を入力し、再度ログインボタンをクリックします。 - Burp Suite に戻り、もう一度
Forwardをクリックします。
これでトラフィックが生成されたので、プロキシ履歴でリクエストを見つけることができます。
Burp Suite で、Proxy タブに移動し、次に HTTP history サブタブに移動します。ここに、プロキシを通過したすべてリクエストのログが表示されます。リストを調べて、使用したログインページへの 2 つの POST リクエストを見つけます。これらは、次のステップで比較する 2 つのリクエストです。
最初の要求を右クリックし、「Comparer に送信」を選択する
このステップでは、2 つのログイン要求のうち最初のものを Comparer ツールに送信します。
Burp Suite の Proxy -> HTTP history タブ内に留まり、キャプチャされた要求のリストを確認します。
- 最初に行ったログイン要求(例:認証情報
user1とpass1を含むもの)を見つけます。 - 履歴リスト内のその特定の要求を右クリックします。これにより、多くのオプションが表示されるコンテキストメニューが開きます。
- このコンテキストメニューから、
Send to Comparerオプションを見つけて選択します。
このアクションにより、選択された要求のコピーが取得され、Comparer ツールにロードされます。Burp Suite ウィンドウの上部にある Comparer タブがハイライトされるか、色が変わって、新しいデータを受信したことを示します。Comparer タブをクリックして、1 つのアイテムがロードされたことを確認できます。
2 番目の要求を右クリックし、「Comparer に送信」を選択する
次に、2 番目のログイン要求を Comparer ツールに送信します。これにより、比較に必要な 2 番目のアイテムが提供されます。
Proxy->HTTP historyタブに戻ります。- 行った 2 番目のログイン要求(例:認証情報
user2とpass2を含むもの)を見つけます。 - 履歴リスト内のこの 2 番目の要求を右クリックします。
- 表示されるコンテキストメニューから、再度
Send to Comparerを選択します。
この操作を実行すると、Comparer タブに両方の要求が含まれるようになります。Comparer タブに切り替えると、比較の準備ができた 2 つのアイテムがリストされているのがわかります。
Comparer で 2 つのアイテムを選択し、「Words」をクリックして比較する
Comparer に両方の要求がロードされたので、実際の比較を実行する準備ができました。
- Burp Suite の
Comparerタブに移動します。 - Comparer インターフェースの上部には、送信したアイテムのリストが表示されます。2 つのアイテムが表示されているはずです。
- 両方のアイテムを選択します。まず最初のアイテムをクリックし、次に
Ctrlキーを押しながら 2 番目のアイテムをクリックすることで実行できます。これで両方がハイライトされるはずです。 - ウィンドウの下部には、比較オプションが表示されます。主なオプションは
WordsとBytesです。Words比較は、HTTP 要求のようなテキストベースのデータに最適です。これは単語単位で違いを分析するため、出力が非常に読みやすくなります。Bytes比較はバイトレベルの差分を実行し、バイナリデータに適しています。 Wordsボタンをクリックして比較を開始します。
Burp Suite は、2 つの要求を処理し、並べて表示される比較結果を準備します。
要求間のハイライトされた違いを分析する
この最終ステップでは、比較の結果を分析して、2 つの要求間で何が変更されたかを理解します。
前のステップで Words をクリックした後、Comparer タブのメインパネルが更新され、2 つの要求が並べて表示されます。Burp Comparer は、違いを簡単に見つけられるように、色分けシステムを使用しています。
- 黄色: 変更されたデータをハイライトします。
- ピンク: 追加されたデータをハイライトします。
- 青: 削除されたデータをハイライトします。
2 つの要求パネルをスクロールします。サイドのスクロールバーにも色のマーカーがあり、変更箇所の場所へ素早くジャンプするのに役立ちます。
要求ボディ内の違いを明確に確認できるはずです。ユーザー名とパスワードのパラメータの値(user1 対 user2 および pass1 対 pass2)は黄色でハイライトされ、変更されたことを示します。
Web アプリケーションによっては、その他の違いに気づくこともあります。例えば:
- 新しいパラメータの値の長さが異なる場合、
Content-Lengthヘッダーが異なる可能性があります。 - サーバーが新しいセッション ID を割り当てた場合、
Cookieヘッダーが変更されている可能性があります。
これらのハイライトされた違いを分析することで、Web アプリケーションが異なる入力にどのように応答するかを迅速に理解できます。これは、幅広いセキュリティ脆弱性を発見するための基本的なテクニックです。
まとめ
この実験では、Burp Comparer を使用して HTTP 要求を分析する基本的なワークフローを学びました。ネットワークトラフィックを生成し、プロキシ履歴から 2 つの類似した要求を分離し、それらを Comparer ツールに送信することに成功しました。単語ベースの比較を実行することで、2 つの要求間の正確な違いを視覚的に特定することができました。
このスキルは、認証メカニズムの分析、パラメータタンパリングのテスト、さまざまな入力に対するアプリケーションの応答の変化を観察することによる潜在的なインジェクションポイントの特定など、多くの Web セキュリティテストタスクに不可欠です。
