はじめに
Burp Intruder は、Web アプリケーションに対するカスタマイズされた攻撃を自動化するための Burp Suite 内の強力なツールです。高度に設定可能で、単純な総当たり攻撃から複雑な脆弱性スキャンまで、幅広いタスクを実行するために使用できます。
Intruder の主な機能の 1 つは、さまざまな攻撃タイプです。「Cluster Bomb」攻撃タイプは、攻撃で複数の異なる入力の組み合わせをテストする必要がある場合に特に役立ちます。これは、定義された各位置に対して 1 つずつ、複数のペイロードセットを使用し、ペイロードのすべての可能な組み合わせを反復処理します。これは、潜在的なユーザー名のリストとパスワードの別のリストがあるログインフォームの総当たり攻撃のようなシナリオに理想的です。
この実験では、サンプルログインページで有効なユーザー名とパスワードの組み合わせを検出するために、Burp Intruder を使用して Cluster Bomb 攻撃を設定および実行する方法を学びます。
Intruder へのログインリクエスト送信
このステップでは、Burp Suite と Web ブラウザを起動し、ログインリクエストをキャプチャして Burp Intruder に送信し、さらに分析を行います。
まず、Burp Suite を起動する必要があります。
- デスクトップの左上隅にある Application メニューをクリックします。
Other->Burp Suite Community Editionに移動します。
Burp Suite が起動します。「Temporary project」を選択して「Next」をクリックし、次に「Start Burp」をクリックします。
次に、Firefox Web ブラウザを開き、Burp Suite をプロキシとして使用するように設定します。
- Application メニュー ->
Internet->Firefox Web Browserをクリックします。 - Firefox で、
Settings->General->Network Settingsに移動し、「Settings...」をクリックします。 Manual proxy configurationを選択します。HTTP Proxyを127.0.0.1に、Portを8080に設定します。Also use this proxy for HTTPSのチェックボックスをオンにします。- 「OK」をクリックします。
これで、ターゲットのログインページにアクセスします。Firefox のアドレスバーに次のように入力します。
http://127.0.0.1:5000/login
シンプルなログインフォームが表示されるはずです。Burp Suite で、Proxy タブに移動し、次に Intercept サブタブに移動して、インターセプトがオンになっていることを確認します(ボタンは「Intercept is on」と表示されているはずです)。
Firefox に戻り、ユーザー名に test、パスワードに test を入力し、「Login」ボタンをクリックします。リクエストは Burp の Proxy -> Intercept タブでキャッチされます。
次に、このキャプチャされたリクエストを Intruder に送信します。
- リクエストパネル内のどこかを右クリックします。
- コンテキストメニューから
Send to Intruderを選択します。 Intruderタブがハイライトされ、リクエストが送信されたことを示します。
これで、Proxy -> Intercept タブの「Intercept is on」ボタンをクリックして、インターセプトをオフにすることができます。
ユーザー名とパスワードフィールドにペイロードマーカーを追加する
このステップでは、Burp Intruder のペイロード位置を設定します。ペイロード位置は、攻撃中に Intruder がペイロードを配置する場所を指示します。ログインフォームに対する Cluster Bomb 攻撃では、2 つの位置が必要です。1 つはユーザー名用、もう 1 つはパスワード用です。
Burp Suite の Intruder タブに移動します。Target、Positions、Payloads、Options の 4 つのサブタブが表示されます。Positions タブをクリックします。
Proxy から送信したリクエストがここに表示されます。Burp Intruder は、ペイロードを配置すべき場所を自動的に推測し、ペイロードマーカー(§...§)を追加します。これらをクリアし、より良い制御のために独自の設定を行います。
- ウィンドウの右側にある
Clear §ボタンをクリックします。これにより、自動的に追加されたすべてのペイロードマーカーが削除されます。 - リクエストエディタで、ユーザー名パラメータを含む行
username=testを見つけます。 - 値
testのみを選択的にハイライトします。 Add §ボタンをクリックします。行はusername=§test§のようになります。- 次に、パスワードパラメータを含む行
password=testを見つけます。 - 値
testのみを選択的にハイライトします。 - 再度
Add §ボタンをクリックします。行はpassword=§test§のようになります。
これで 2 つのペイロード位置が定義されました。Burp Intruder は、攻撃中にこれらのマーカーが付いた場所にデータを代入します。
攻撃タイプを「Cluster Bomb」に設定する
このステップでは、目標に適した攻撃タイプを選択します。Burp Intruder には 4 つの攻撃タイプがあり、それぞれ異なる目的を果たします。
- Sniper: 単一のペイロードセットを使用し、一度に 1 つの位置をターゲットにします。
- Battering Ram: 単一のペイロードセットを使用し、同じペイロードをすべての位置に同時に配置します。
- Pitchfork: 複数のペイロードセットを使用し、各セットから 1 つのペイロードを対応する位置に配置します。
- Cluster Bomb: 複数のペイロードセットを使用し、ペイロードのすべての組み合わせを試します。
今回のシナリオでは、あるリストのすべての可能なユーザー名に対して、別のリストのすべての可能なパスワードをテストしたいと考えています。Cluster Bomb 攻撃タイプがこれに最適です。
Intruder -> Positions タブで、画面上部にある Attack type ドロップダウンメニューを見つけます。
- ドロップダウンメニューをクリックします。
- リストから
Cluster Bombを選択します。
Cluster Bomb を選択すると、Payloads タブで、前のステップで定義したペイロードマーカーの数に対応する複数のペイロードセットを設定できるようになることに注意してください。今回の場合は、設定するペイロードセットは 2 つになります。
2 つのペイロードリスト(ユーザー名とパスワード)を設定する
このステップでは、Intruder が攻撃に使用する潜在的なユーザー名とパスワードのリストを提供します。
Intruder -> Payloads タブに移動します。
Cluster Bomb 攻撃タイプを選択し、2 つのペイロード位置を定義したので、これで 2 つの別々のペイロードリストを設定できます。
まず、ユーザー名リスト(ペイロードセット 1)を設定します。
Payload setドロップダウンが1に設定されていることを確認します。これは、最初に追加した§マーカー(ユーザー名)に対応します。Payload Optionsの下にあるAddボタンをクリックします。- 以下の潜在的なユーザー名を 1 行に 1 つずつ入力します。
userguestadminroot
次に、パスワードリスト(ペイロードセット 2)を設定します。
Payload setドロップダウンを1から2に変更します。これは、2 番目の§マーカー(パスワード)に対応します。Payload Optionsの下にあるAddボタンをクリックします。- 以下の潜在的なパスワードを 1 行に 1 つずつ入力します。
password123456qwertypassword123
これで、これら 2 つのリストのすべての組み合わせをテストするように Intruder が設定されました。合計で 4(ユーザー名)x 4(パスワード)= 16 件のリクエストが送信されます。
ペイロードの全組み合わせをテストするために攻撃を実行する
このステップでは、攻撃を開始し、結果を分析して正しいログイン認証情報を見つけます。
Intruderタブの右上隅にあるStart attackボタンをクリックします。- 「Intruder attack」というタイトルの新しいウィンドウが開き、攻撃がすぐに開始されます。
この新しいウィンドウには、結果テーブルが表示されます。リクエストが送信され、テーブルに結果が入力されていくのがわかります。注目すべき重要な列は次のとおりです。
Payload 1: そのリクエストに使用されたユーザー名。Payload 2: そのリクエストに使用されたパスワード。Status: レスポンスの HTTP ステータスコード(例:OK の場合は 200、Unauthorized の場合は 401)。Length: レスポンスボディのサイズ(バイト単位)。
ログインが成功した場合、失敗した場合とは異なるレスポンスになる可能性が高いです。この違いは、Status コードまたは Length で確認できます。
結果を確認してください。他のリクエストとは異なる Length と Status を持つ 1 つのリクエストに気づくはずです。ほとんどの試行は 401 Unauthorized ステータスになりますが、正しいものは 200 OK になります。成功したログインのレスポンス Length も異なります。
ユニークなレスポンスを簡単に見つけるには、Status または Length の列ヘッダーをクリックして結果を並べ替えることができます。
成功したリクエストは、次のペイロードの組み合わせを持ちます。
- Payload 1:
admin - Payload 2:
password123
テーブル内のこの成功したリクエストをクリックすると、下のパネルで完全な Request と Response を表示できます。成功したログインのレスポンスには、「Login Successful!」というテキストが含まれます。
おめでとうございます。Cluster Bomb 攻撃を正常に使用して、有効な認証情報を見つけることができました!
まとめ
この実験では、Burp Intruder を使用して Cluster Bomb 攻撃を実行する方法を学びました。
まず、Burp のプロキシを使用してログインリクエストをインターセプトし、Intruder に送信しました。次に、ユーザー名フィールドとパスワードフィールドに対して、2 つの異なるペイロード位置を手動で設定しました。Cluster Bomb 攻撃タイプを選択した後、ユーザー名用とパスワード用の 2 つの別々のペイロードリストを設定しました。
最後に、攻撃を開始し、結果テーブルを分析して、異常なレスポンスステータスコードと長さを探すことで、成功したログインの組み合わせを特定しました。この実践的な演習は、複数の入力を持つ認証メカニズムをテストするための Cluster Bomb 攻撃タイプの強力さと有用性を示しています。
