はじめに
Burp Repeater の使用に関するこの実験へようこそ。Burp Repeater は、Burp Suite 内のシンプルでありながら強力なツールで、個々の HTTP リクエストを手動で操作・再送信し、アプリケーションの応答を分析するために使用されます。これは、Web アプリケーションのセキュリティテスターにとって基本的なツールであり、サーバーがさまざまな入力にどのように応答するかを観察することで、脆弱性を調査することができます。
この実験では、Burp Repeater のコアワークフローを学びます。まず、Web アプリケーションから標準的なリクエストをキャプチャし、それを Repeater に送信し、パラメータを変更してから、サーバーに再送信します。最後に、変更されたリクエストに対するサーバーの応答を分析し、リクエスト履歴のナビゲーション方法を学びます。
Repeater タブでリクエストを選択する
このステップでは、サンプル Web アプリケーションからリクエストをキャプチャし、操作のために Burp Repeater に送信します。ラボ環境では、Web アプリケーションと Burp Suite が既に起動しています。ブラウザは Burp Suite を経由するように設定されています。
まず、トラフィックを生成しましょう。
- デスクトップから Web ブラウザを開きます。
- アドレスバーに
http://127.0.0.1:5000と入力して、ターゲットアプリケーションにアクセスします。 - シンプルなログインフォームが表示されます。デフォルト値(
userとpass)のまま、Submitボタンをクリックします。
次に、このリクエストを Burp Suite で見つけましょう。
- Burp Suite ウィンドウに切り替えます。
Proxyタブに移動し、次にHTTP historyサブタブをクリックします。ブラウザが行ったリクエストのリストが表示されます。/loginエンドポイントへのPOSTリクエストを探します。リストの先頭付近にあるはずです。それをクリックして、下のパネルで詳細を表示します。- リクエストパネルのどこかを右クリックし、コンテキストメニューから
Send to Repeaterを選択します。ホットキーCtrl+Rを使用することもできます。
Repeaterツールに新しいタブが表示され、オレンジ色に点滅します。Repeaterタブをクリックして、送信したリクエストを表示します。
ヘッダーまたはパラメータ値を変更する
このステップでは、Repeater タブに送信したリクエストを変更します。Repeater の UI は、左側のリクエストパネルと右側のレスポンスパネルの 2 つの主要なセクションに分かれています。現在、Repeater からリクエストを送信していないため、レスポンスパネルは空です。
左側のリクエストパネルに注目しましょう。送信する前に、リクエストのどの部分でもここで編集できます。これには、リクエストライン、ヘッダー、およびリクエストボディが含まれます。
- リクエストパネルの下部を見てください。フォームデータを含む
POSTリクエストのボディが表示されます:username=user&password=pass。 - 別のユーザーとしてログインできるかテストしてみましょう。
usernameパラメータの値をuserからadminに変更します。行は次のようになります:username=admin&password=pass。 - ヘッダーを変更することもできます。たとえば、
User-Agentヘッダーを見つけて、その値をMy-Custom-Browser/1.0のようなカスタム値に変更します。
左側のパネルにある変更されたリクエストは、送信する準備ができました。
「Send」ボタンをクリックして変更されたリクエストを発行する
このステップでは、変更された HTTP リクエストをサーバーに送信します。左側のパネルでリクエストを編集した後、次のアクションはそれを送信することです。
リクエストパネルの上部には、「Send」ボタンがあります。このボタンは、パネルに表示されている現在リクエストを発行するために使用されます。
- 前のステップで説明したようにリクエストが変更されていることを確認してください(例:
usernameがadminに設定されている)。 - 「Send」ボタンをクリックします。
Burp Repeater は、この変更されたリクエストをターゲットサーバー(127.0.0.1:5000)に送信します。しばらくすると、サーバーからのレスポンスが右側のレスポンスパネルに表示されます。
サーバーからのレスポンスを分析する
このステップでは、変更されたリクエストに対するサーバーのレスポンスを分析します。「Send」をクリックした後、右側のレスポンスパネルにはサーバーから返されたデータが入力されました。
- レスポンスパネルを確認します。ステータスライン(例:
HTTP/1.0 200 OK)、レスポンスヘッダー、およびレスポンスボディを含む完全な HTTP レスポンスが表示されます。 - レスポンスボディを見てください。テストアプリケーションは出力にユーザー名を反映するため、「Login attempt for user: 'admin' failed. Please try again.」というメッセージが表示されるはずです。これは、サーバーが変更された入力を処理したことを確認します。
- レスポンスボディの上部には、「Pretty」、「Raw」、「Hex」、「Render」といったいくつかの表示オプションがあります。
Pretty: フォーマットされたレスポンスバージョンを表示します。HTML や JSON に役立ちます。Raw: サーバーから受信した正確なバイトを表示します。Render: レスポンスをウェブブラウザのようにレンダリングしようとします。「Render」をクリックして、失敗メッセージが表示されたログインページの視覚的な表現を確認してください。
レスポンスの分析は重要なスキルです。異なるペイロードを送信し、レスポンスを観察することで、アプリケーションの動作方法を発見し、潜在的な脆弱性を特定することができます。
送信したリクエスト間を移動するために履歴矢印を使用する
このステップでは、Repeater タブ内の履歴ナビゲーション機能の使用方法を学びます。Repeater は、現在のタブで送信したすべてのリクエストの履歴を保持しており、わずかに異なるリクエストへのレスポンスを比較するのに非常に役立ちます。
「Send」ボタンの隣に、数字(現在は「1」)と戻る/進む矢印(「<」と「>」)が表示されます。これらを使用してリクエスト履歴をステップ実行できます。
- 別の履歴エントリを作成しましょう。リクエストパネルで、
usernameをuserに戻します。 - 再度「Send」をクリックします。レスポンスが更新され、
userに対するログイン試行が反映されているのがわかります。「Send」ボタンの隣の数字は「2」になります。 - 次に、戻る矢印(「<」)をクリックします。リクエストおよびレスポンスパネルが更新され、最初の(
username=adminの)リクエストとその対応するレスポンスが表示されます。数字は「1」に戻ります。 - 進む矢印(「>」)をクリックして、2 番目の(
username=userの)リクエストに戻ります。
この機能により、変更を手動で再入力したり、複数の Repeater タブを管理したりすることなく、リクエストのバリエーションを迅速にテストし、結果を比較することができます。
まとめ
この実験では、Burp Suite のコアコンポーネントである Burp Repeater の基本的な操作を学びました。
ウェブアプリケーションから HTTP リクエストをキャプチャし、Repeater に送信することに成功しました。その後、リクエストのパラメータやヘッダーを変更し、変更されたリクエストをサーバーに再発行し、結果のレスポンスを分析する練習を行いました。最後に、履歴ナビゲーションを使用して送信したさまざまなリクエスト間を効率的に切り替える方法を学びました。
Burp Repeater を習得することは、手動でのウェブアプリケーションセキュリティテストに習熟するための重要なステップです。なぜなら、幅広い脆弱性を探るために必要な制御を提供してくれるからです。
