はじめに
この実験では、Burp Suite の Intruder ツールの最も基本的で一般的に使用される攻撃タイプの一つである「Sniper」攻撃を実行する方法を学びます。Burp Intruder は、Web アプリケーションに対してカスタマイズされた攻撃を自動化し、セキュリティ上の脆弱性を特定および悪用するための強力なツールです。
Sniper 攻撃は、ペイロードのリストを反復処理し、HTTP リクエスト内の指定された単一の位置にペイロードを一つずつ挿入するように設計されています。これにより、ユーザー名の推測、パスワードリセットトークンの検索、または単一のパラメータに対する脆弱性ファジングなどのタスクに最適です。
この実験では、Intruder へのリクエストの送信、ペイロード位置の設定、Sniper 攻撃タイプの選択、簡単なペイロードリストの読み込み、そして最後に攻撃の実行と結果の分析を行います。この実験のために、Burp Suite は既に環境にインストールされています。
Intruder > Positions でパラメータ値を指定し、「Add §」をクリックする
このステップでは、攻撃のターゲットを定義します。リクエストを Intruder に送信した後、ペイロードを挿入する正確な場所を指定する必要があります。
まず、作業するためのリクエストが必要です。この実験の目的のために、Burp Proxy でログインリクエストを傍受し、それを Intruder に送信した(リクエストを右クリックして「Send to Intruder」を選択)と仮定します。Intruder のリクエストは次のようになります。
POST /login HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
username=myuser&password=mypass
デフォルトでは、Burp Intruder は、リクエストの興味深い部分と思われるものに自動的にペイロードマーカー(§)を追加します。正確な制御を得るためには、これらをクリアして独自の設定を行うのが最善です。
Intruder>Positionsタブに移動します。- 右側にある
Clear §ボタンをクリックして、自動的に追加されたすべてのペイロードマーカーを削除します。 - リクエストエディタで、マウスを使用して
usernameパラメータの値(この場合はmyuser)のみをハイライトします。 - 値がハイライトされた状態で、
Add §ボタンをクリックします。
これで、リクエストは次のようになり、myuser の位置のみがペイロード位置としてマークされます。
POST /login HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
username=§myuser§&password=mypass
これにより、Intruder は各試行でリクエストの他の部分を変更せずに、myuser の場所にのみペイロードを挿入するようになります。
攻撃タイプを「Sniper」に設定する
このステップでは、目的に合った攻撃タイプを選択します。Burp Intruder には 4 つの異なる攻撃タイプがあり、それぞれ異なる目的を果たします。この実験では Sniper を使用します。
攻撃タイプの概要は次のとおりです。
- Sniper: 単一のペイロードセットを使用します。各ペイロード位置(
§...§)を一つずつターゲットにします。各位置に対して、リスト内のすべてのペイロードを反復処理します。これは、単一のパラメータをファジングする際に最も一般的なタイプです。 - Battering ram: 単一のペイロードセットを使用します。定義されたすべてのペイロード位置に同じペイロードを同時に挿入します。
- Pitchfork: 複数のペイロードセットを使用します。各リクエストに対して、各セットから 1 つのペイロードを取得し、対応する位置に配置します。
- Cluster bomb: 複数のペイロードセットを使用します。すべてのセットからのペイロードの可能なすべての組み合わせをテストします。
単一のパラメータで異なるユーザー名のリストをテストすることが目標であるため、Sniper が最適な選択です。
攻撃タイプを設定するには:
Intruder>Positionsタブに留まります。- 画面上部にある
Attack typeドロップダウンメニューを探します。 - ドロップダウンをクリックし、リストから
Sniperを選択します。
これで、Intruder が Sniper 攻撃メソッドを使用するように設定されました。
Intruder > Payloads タブに移動する
このステップでは、攻撃に使用される実際のデータを定義するセクションに移動します。ターゲットの位置(username)と攻撃タイプ(Sniper)を設定したので、次に論理的なステップはペイロードのリストを提供することです。
ペイロードは、ステップ 1 で定義した §...§ の位置に Intruder が置き換える値です。
続行するには、単に Intruder ツールの Payloads サブタブに移動してください。これは、先ほど作業していた Positions タブのすぐ隣にあります。このタブをクリックすると、ペイロード設定画面に移動し、次のステップで潜在的なユーザー名のリストを設定します。
シンプルなペイロードリストをロードする(例:admin, test, user)
このステップでは、攻撃に使用するペイロードのリストを設定します。攻撃タイプは Sniper で、ペイロード位置は 1 つなので、ペイロードセットを 1 つだけ設定する必要があります。
Intruder > Payloads タブで、Payload Sets と Payload Options のセクションが表示されます。
Payload Setsセクションで、Payload setが1に、Payload typeがSimple listに設定されていることを確認します。これはデフォルトであり、単純な文字列のリストを提供するために使用されます。Payload Options [Simple list]セクションで、ペイロードを追加します。テキストボックスに直接入力するか、Addボタンを使用して追加できます。
テスト用に、いくつかの一般的なユーザー名を追加しましょう。 テキストエリアに、各値を新しい行に入力します。
admin
test
user
root
guest
これで、Payload Options セクションにこのリストが含まれているはずです。Intruder は、このリストの各行に対して 1 つのリクエストを送信し、以前にマークした username パラメータに値を代入します。下部にある Payload Count は 5 と表示されるはずです。
攻撃を開始し、結果テーブルを観察する
このステップでは、設定した攻撃を開始し、その結果を分析します。位置、攻撃タイプ、ペイロードがすべて設定されたので、開始する準備ができました。
- 攻撃を開始するには、
Intruderタブの右上隅にあるStart attackボタンをクリックします。 - 新しい「Attack」ウィンドウが開き、結果テーブルが表示されます。このウィンドウは、Intruder が各リクエストを送信するにつれてリアルタイムで更新されます。
結果テーブルは、このプロセスで最も重要な部分です。特に、以下の列に注意してください。
- Payload: そのリクエストに使用された特定のペイロード(例:
admin、test)。 - Status: レスポンスの HTTP ステータスコード(例:
200、302、401)。 - Length: レスポンスボディのサイズ(バイト単位)。
潜在的な脆弱性や有効なユーザー名を見つけるには、異常を探します。たとえば、ログイン成功は 302 Found ステータス(ダッシュボードへのリダイレクト)になる可能性がありますが、すべての失敗した試行は 200 OK(ログインページの再表示)になります。同様に、有効なユーザー名のレスポンスは、エラーメッセージが変わる(例:「パスワードが間違っています」対「ユーザーが見つかりません」)ため、他のものとは異なる Length を持つ可能性があります。
テーブルを Status または Length 列で並べ替えることで、ベースラインと異なるレスポンスを簡単に見つけることができ、潜在的な発見を示唆します。
まとめ
この実験では、Burp Intruder を使用して基本的な Sniper 攻撃を正常に実行しました。これは、Web アプリケーションのセキュリティテスターにとって基本的なスキルです。
以下の方法を学びました。
- デフォルトのマーカーをクリアし、独自のマーカーを追加することで、
Positionsタブでテスト対象の特定の要求パラメータを分離する方法。 - 攻撃タイプを
Sniperに設定する方法。これは、ペイロードのリストを使用して単一のパラメータをテストするのに理想的です。 Payloadsタブに移動し、単純なカスタム入力リストをロードする方法。- 攻撃を開始し、結果テーブルを分析して、HTTP ステータスコードとレスポンス長の異常を探し、興味深い動作を特定する方法。
Burp Intruder で Sniper 攻撃を習得することは、ユーザー名列挙、パスワード推測、一般的な脆弱性のファジングなどの反復的なテストタスクを自動化するための強力な方法を提供します。
