Burp Suite で 2 つのサイトマップを比較する

Beginner
オンラインで実践に進む

はじめに

この実験 (lab) では、Burp Suite の強力な機能の一つである「サイトマップの比較 (Compare site maps)」の使い方を学びます。この機能は、Web アプリケーションのセキュリティテスト、特に認可の脆弱性を特定する上で不可欠です。異なる権限レベルを持つユーザーがアクセスできるサイトの構造とコンテンツを比較することで、不適切に公開されているエンドポイントやデータを迅速に見つけることができます。

以下の操作を行います。

  1. 標準ユーザーと管理者という 2 つのユーザーロールを持つ、シンプルなローカル Web アプリケーションを起動します。
  2. Burp Suite の組み込みブラウザを使用して、低権限ユーザーとしてアプリケーションを探索します。
  3. サイトマップ比較プロセスを開始し、低権限ユーザーのビューを最初のマップとして保存します。
  4. 高権限ユーザーとしてログインし、再度アプリケーションを探索して、新しい管理者機能でサイトマップを更新します。
  5. 比較を完了し、結果を分析して、管理者のみがアクセスできるコンテンツとエンドポイントを特定します。

低権限ユーザーとしてアプリケーションをブラウズする

このステップでは、Burp Suite を起動し、そのブラウザを設定して、標準的な低権限ユーザーとしてターゲットアプリケーションをブラウズします。これにより、このユーザーがアクセスできるすべてのエンドポイントとリソースが Burp のサイトマップに記録されます。

まず、Burp Suite を開きます。アプリケーションメニューの通常 Applications -> Other -> Burp Suite Community Edition の下にあります。プロンプトが表示されたら、一時プロジェクトを選択し、Next をクリックしてから Start Burp をクリックします。

Burp Suite が実行されたら、すべてのトラフィックが正しくプロキシされるように、組み込みブラウザを使用する必要があります。

  1. Proxy タブに移動し、次に Intercept サブタブに移動します。
  2. Open Browser ボタンをクリックします。新しい Chromium ブラウザウィンドウが開きます。

次に、このブラウザを使用して Web アプリケーションとやり取りします。

  1. 新しいブラウザのアドレスバーで http://127.0.0.1:5000 に移動します。
  2. ログインページが表示されます。ユーザー名に user、パスワードに password を入力します。
  3. Login ボタンをクリックします。
  4. ユーザーダッシュボードにリダイレクトされます。リンクがあればクリックしてみてください。ただし、このシンプルなアプリでは、ダッシュボードを表示するだけで十分です。

次に、メインの Burp Suite ウィンドウに戻り、Target -> Site map タブに移動します。ブラウジングに基づいてアプリケーションの構造がマッピングされているのがわかります。

Target > Site map でホストを選択し、「サイトマップの比較」を実行する

このステップでは、サイトマップ比較プロセスを開始します。低権限ユーザーの視点からサイトマップを既に作成しました。次に、この現在のマップを比較の最初の時点として使用することを Burp Suite に指示します。

  1. Burp Suite ウィンドウで、Target -> Site map タブにいることを確認します。
  2. 左側のペインに、訪問したサイトのツリービューが表示されます。アプリケーションのホストである http://127.0.0.1:5000 を見つけて選択します。
  3. ホスト http://127.0.0.1:5000 を右クリックします。これにより、多くのオプションが表示されるコンテキストメニューが開きます。
  4. コンテキストメニューから Engagement tools に移動し、次に Compare site maps をクリックします。

この操作により、「サイトマップの比較 (Compare site maps)」ウィザードが開きます。このウィザードが比較の設定を案内します。

(画像の説明:Burp Suite のサイトマップにおける右クリックコンテキストメニューを示すスクリーンショット。カーソルが「Engagement tools」の下にある「Compare site maps」オプションをハイライトしています。)

ウィザードで、Map 1 に「現在のサイトマップを使用 (Use current site map)」を選択する

このステップでは、比較対象となる 2 つのサイトマップのうち、最初のサイトマップを設定します。前のステップで開いたウィザードで、両方のマップのソースを定義できます。

「サイトマップの比較 (Compare site maps)」ウィザードが開きました。このウィザードには、「サイトマップ 1 (Site map 1)」と「サイトマップ 2 (Site map 2)」の 2 つの主要なセクションがあります。ここではまず最初のマップを設定し、次に 2 番目のマップを設定します。

  1. 「サイトマップ 1 (Site map 1)」の設定エリアには、マップをどこから読み込むかについてのいくつかのオプションが表示されます。
  2. Use current site map というラベルのラジオボタンを選択します。これにより、Burp は現在存在するサイトマップのスナップショット(低権限ユーザーのセッションを反映したもの)を取得し、それを比較のベースラインとして使用するようになります。
  3. まだ OK をクリックしないでください。ウィザードは両方のマップに対して設定する必要があります。現時点では、最初のマップを設定しました。次の操作を行う間、このウィザードを開いたままにしておきます。

これで、比較対象の最初のサイトマップを正常に定義できました。ウィザードは、2 番目のマップを定義するのを待ちます。

高権限ユーザーとしてログインし、サイトマップを再リクエストする

このステップでは、高権限ユーザーアカウントに切り替えて、再度アプリケーションをブラウズします。これにより、Burp のサイトマップに管理者のみがアクセスできる新しいエンドポイントが追加されます。これは、比較で検出したいまさにそのものです。

  1. Burp 組み込みの Chromium ブラウザウィンドウに戻ります。
  2. http://127.0.0.1:5000 のログインページに再度移動します。これにより、効果的に 'user' アカウントからログアウトします。
  3. ログインページで、ユーザー名に admin、パスワードに adminpassword を入力します。
  4. Login ボタンをクリックします。
  5. ダッシュボードにリダイレクトされます。ダッシュボードには、'admin' ユーザーへのウェルカムメッセージが表示され、新しいリンク Go to Admin Panel が含まれています。
  6. Go to Admin Panel リンクをクリックします。これにより、標準ユーザーからはアクセスできなかった /admin ページに移動します。

これらの操作を実行することで、Burp Suite は新しいエンドポイント(/admin など)へのリクエストを記録し、既存のエンドポイント(/dashboard など)に対する異なるレスポンスを確認するようになります。Burp のライブサイトマップは、この新しい情報で更新されました。

Map 2 に「現在のサイトマップを使用 (Use current site map)」を選択し、違いを表示する

この最終ステップでは、比較設定を完了し、結果を分析して、低権限セッションと高権限セッションの違いを見つけます。

  1. Burp Suite ウィンドウに戻ります。「サイトマップの比較 (Compare site maps)」ウィザードはまだ開いているはずです。
  2. 次に、「サイトマップ 2 (Site map 2)」の設定エリアに注目します。
  3. 最初のマップで行ったのと同じように、Use current site map というラベルのラジオボタンを選択します。今回は、「現在の」マップには、低権限セッションと高権限セッションの両方のすべてのリクエストが含まれています。
  4. OK ボタンをクリックして比較を実行します。

新しい「サイトマップ比較 (Site map comparison)」ウィンドウが表示され、結果が表示されます。このウィンドウには 3 つの主要なパネルがあり、以下が表示されます。

  • Items only in map 1: 最初のセッションには存在したが、2 番目のセッションには存在しなかったエンドポイント。
  • Items only in map 2: 2 番目のセッションでのみ検出されたエンドポイント。ここに認可の問題が見つかります。
  • Items with different responses: 両方のユーザーがアクセスできたが、異なるコンテンツを返したエンドポイント。

「Items only in map 2」リストを確認します。/admin エンドポイントが表示されるはずです。これにより、/admin ページは高権限ユーザーのみがアクセスまたは検出可能であることがすぐにわかります。

「Items with different responses」リストの /dashboard エントリをクリックします。下部には、各マップのリクエストとレスポンスが表示されます。Diff ボタンを使用して横並びの比較を表示すると、管理者が利用できる追加の「Go to Admin Panel」リンクが強調表示されます。

まとめ

この実験では、Burp Suite の「サイトマップの比較 (Compare site maps)」機能を使用して、アプリケーションのアクセス制御を分析しました。2 つの異なるユーザーの視点からアプリケーションの状態を体系的にキャプチャし、それらを比較して違いを自動的に特定する方法を学びました。

具体的には、標準ユーザーには表示されない管理エンドポイント (/admin) を発見しました。これは、この手法が明らかにするのに役立つ、典型的な認可の脆弱性の例です。この方法は、徹底的な Web アプリケーションセキュリティ評価の基本的な部分であり、攻撃対象領域を効率的にマッピングし、潜在的なセキュリティ上の欠陥を見つけることができます。