はじめに
この実験では、Burp Suite Intruder の攻撃タイプの一つである Battering Ram について探求します。Burp Intruder は、Web アプリケーションに対するカスタマイズされた攻撃を自動化するための強力なツールです。Battering Ram 攻撃タイプは、同じペイロードを HTTP リクエスト内の複数の位置に挿入する必要がある状況に特化して設計されています。
この攻撃の一般的なユースケースは、ユーザー名とパスワードが同一である可能性がある(例:admin/admin)弱い認証情報に対するログインフォームのテストです。この実験を通して、ログインリクエストのキャプチャ方法、ペイロードマーカーの設定方法、Battering Ram 攻撃タイプの選択方法、ペイロードリストの設定方法、そして最終的に攻撃を実行して結果を分析する方法を学びます。
この実験の終わりには、Web アプリケーションセキュリティテストのワークフローで Battering Ram 攻撃をいつ、どのように使用するかについての実践的な理解が得られるでしょう。
Intruder へのログインリクエストの送信
このステップでは、必要なツールを起動し、Burp Intruder で攻撃設定を行うためのサンプルログインリクエストをキャプチャします。
まず、ターミナルを開いて Burp Suite を起動します。通常、アプリケーションメニューから見つけるか、コマンドラインから起動できます。この実験では、起動できる状態にあると仮定します。
次に、実験環境で提供されている Firefox Web ブラウザを開きます。
それでは、Burp Suite が Web トラフィックをインターセプトするように設定しましょう。
- Burp Suite で、Proxy タブに移動し、次に Intercept サブタブに移動します。インターセプトがオンになっていることを確認してください(ボタンは「Intercept is on」と表示されているはずです)。
- Firefox で、ブラウザが Burp のプロキシを使用するように設定します。設定 -> ネットワーク設定に移動し、手動プロキシ設定で HTTP Proxy として
127.0.0.1、Port として8080を使用するように設定します。 - Firefox のアドレスバーで、テストアプリケーションのログインページ
http://127.0.0.1:5000/loginにアクセスします。 - ユーザー名に
test、パスワードにtestを入力し、「Login」ボタンをクリックします。
リクエストは Burp Suite の Proxy -> Intercept タブでキャプチャされます。画面には生の HTTP リクエストが表示されます。
最後に、このキャプチャされたリクエストを Intruder に送信します。リクエストウィンドウ内のどこかを右クリックし、コンテキストメニューから Send to Intruder を選択します。キーボードショートカット Ctrl+I を使用することもできます。
これで Intruder タブに移動すると、リクエストがロードされ、設定の準備ができていることが確認できます。
Positions で、ユーザー名とパスワードの両方のフィールドにペイロードマーカーを追加する
このステップでは、Burp Intruder がペイロードを配置する HTTP リクエスト内の位置を定義します。Battering Ram 攻撃では、ユーザー名とパスワードの両方のフィールドをマークします。
Intruder タブに移動し、次に Positions サブタブに移動します。Proxy タブから送信したリクエストが表示されます。Burp Suite は、リクエストの興味深いと思われる部分に自動的にペイロードマーカー(§ シンボルでハイライトされています)を追加します。
この特定の攻撃では、ペイロードの位置を正確に制御したいと考えています。
- まず、右側にある Clear § ボタンをクリックします。これにより、自動生成されたすべてのペイロードマーカーが削除されます。
- 次に、リクエストボディ内でユーザー名とパスワードを含む行を探します。これは
username=test&password=testのようになっているはずです。 usernameパラメータの値testをマウスでハイライトします。- Add § ボタンをクリックします。行は
username=§test§&password=testのようになるはずです。 - 次に、
passwordパラメータの値testをハイライトします。 - もう一度 Add § ボタンをクリックします。
これらの手順を完了すると、リクエストボディはユーザー名とパスワードの値の両方の周りにペイロードマーカーを持つようになります。以下のようになります。
username=§test§&password=§test§
この設定により、Intruder はこれらの 2 つの特定の位置にペイロードを挿入するようになります。
Attack Type を 'Battering Ram' に設定する
このステップでは、シナリオに適した攻撃タイプを選択します。Burp Intruder には 4 つの異なる攻撃タイプがあり、それぞれが独自の目的を果たします。
- Sniper: 単一のペイロードセットを使用し、一度に 1 つの位置をターゲットにします。
- Battering ram: 単一のペイロードセットを使用し、同じペイロードをすべてのマークされた位置に同時に配置します。
- Pitchfork: 複数のペイロードセットを使用し、各セットから 1 つのペイロードを対応する位置に配置します。
- Cluster bomb: 複数のペイロードセットを使用し、ペイロードのすべての可能な組み合わせをテストします。
ユーザー名とパスワードが同じかどうかをテストするという目標には、Battering ram 攻撃が最適です。これは、潜在的な認証情報の単一リストを取得し、同じリクエストでユーザー名とパスワードの両方にそれぞれを試行します。
Intruder -> Positions タブで、画面上部にある Attack type ドロップダウンメニューを探します。デフォルトでは「Sniper」に設定されています。ドロップダウンメニューをクリックし、Battering ram を選択します。
選択すると、Burp Intruder は Battering Ram 攻撃ロジックを使用するように設定されます。
シンプルなペイロードリストを設定する (例:test, guest)
このステップでは、Intruder が攻撃に使用するペイロードのリストを提供します。Battering Ram 攻撃タイプを使用するため、ペイロードセットを 1 つだけ設定する必要があります。
- Intruder -> Payloads タブに移動します。
- 「Payload Sets」セクションには、「Payload set: 1」および「Payload type: Simple list」と表示されているはずです。これはデフォルトであり、今回の目的に合っています。
- その下の「Payload Options」セクションには、ペイロードを追加するためのテキストボックスがあります。ペイロードを 1 つずつ入力して Add ボタンをクリックして追加することも、リストを直接ボックスに貼り付けることもできます。
この実験では、一般的なデフォルトまたは弱い認証情報をいくつか追加しましょう。リストに既存のペイロードがあればクリアし、以下を追加してください。
testguestadminpassworduser
これで、「Payload Options」リストは以下のようになります。
test
guest
admin
password
user
この設定により、Intruder はこのリストを反復処理します。各項目について、その値をステップ 2 でマークした username および password フィールドに配置します。
攻撃を実行し、同じペイロードが両方の位置でどのように使用されるかを分析する
この最終ステップでは、攻撃を開始し、結果を分析して、Battering Ram 攻撃がどのように機能するかを理解します。
- Positions および Payloads タブのすべての設定が正しいことを確認します。
- Intruder ウィンドウの右上隅にある Start attack ボタンをクリックします。
新しい「Intruder attack」ウィンドウが開き、攻撃がすぐに開始されます。各リクエストが送信されるにつれて入力される結果テーブルが表示されます。
結果を分析しましょう。
- Results Table: 「Payload」、「Status」、「Length」の列に注目してください。「Payload」列には、その特定のリクエストに使用されたペイロードリストの値が表示されます。
- Request/Response Tabs: 結果テーブルのいずれかの行をクリックします (例:ペイロード
guestの行)。ウィンドウの下部で、その試行の Request および Response を確認できます。- Request タブでは、ペイロード
guestがusernameおよびpasswordパラメータの両方に挿入されていることがわかります:username=guest&password=guest。これは Battering Ram の動作を確認するものです。 - Response タブでは、サーバーの応答を確認できます。
- Request タブでは、ペイロード
結果に異常がないか探してください。ログイン成功は、通常、異なるステータスコードまたは応答長を持つでしょう。この場合、test ペイロードはログイン成功につながるはずです。応答本文で「Login successful!」メッセージを探すか、「Length」で結果を並べ替えて、どの応答が異なるかを確認することで特定できます。
この分析は、Battering Ram 攻撃が、認証情報テストで一般的なシナリオである、複数のパラメータで単一の入力が使用されるケースを効率的にテストする方法を示しています。
まとめ
この実験では、Burp Suite Intruder を使用して Battering Ram 攻撃を正常に設定および実行しました。
以下の方法を学びました。
- Burp Proxy を使用して HTTP リクエストをキャプチャし、Intruder に送信する方法。
- デフォルトのペイロードマーカーをクリアし、カスタムペイロードの位置を正確に定義する方法。
- Battering Ram 攻撃タイプを選択し、その特定のユースケースを理解する方法。
- 攻撃用のシンプルなペイロードリストを設定する方法。
- 攻撃を開始し、結果を分析して、各リクエストで指定されたすべての位置に同じペイロードが使用されたことを確認する方法。
Battering Ram は、ペネトレーションテスターのツールキットにおいて貴重なツールであり、特にログインフォームや、単一のデータが複数のパラメータとして使用される可能性のあるその他の機能をテストする際に役立ちます。このテクニックを習得することで、Web アプリケーションのセキュリティ評価の効率と効果が向上します。
