Burp Intruderはさまざまな攻撃タイプに対応しています。多くの場合、あるタスクは複数タイプの攻撃で達成できます。しかし適切なタイプを選択すれば、手動によるセキュリティテストの労力を大幅に削減できます。
このチュートリアルでは、クラスター爆弾攻撃タイプを使って、ユーザ名とパスワードのフィールドを同時にブルートフォースする方法を紹介します。
クラスター爆弾攻撃は、Burp Suite Community Editionのユーザには適していないかもしれません - Burp Suite Professionalに搭載されているフルスピード版のBurp Intruderがありません。
クラスター爆弾(Cluster bomb)攻撃タイプは、定義されたポジションごとに別のペイロードセットを割り当てます。そして各セットから順番にペイロードを配置します。これは、複数の異なる入力値を複数の場所に挿入し、可能な限りのあらゆる組み合わせをテストする攻撃に便利です。
クラスター爆弾攻撃を使用する場合、定義されたペイロードの数に応じて生成されるリクエスト数が指数関数的に増加します。つまりこの攻撃タイプは主に、比較的小さいデータセットでの反復処理を想定しています。
このチュートリアル例にある101個のユーザ名と100個のパスワードでは、10100個(101 * 100 = 10,100)の攻撃リクエストが生成されます。
下記にあるラボの課題では、2つの別々のスナイパー(Sniper)攻撃を使って解くよう提案していますが、今回はクラスター爆弾攻撃で解いてみます。クラスター爆弾攻撃で複数のペイロードセットを使用して、ユーザ名とパスワードフィールドを同時にテストできます。
クラスター爆弾攻撃を使用するとより多くのリクエストが送信されることになるため、スナイパー攻撃を2回行うよりも効率が悪いです。しかしスナイパー方式とは異なり、有効なユーザ名を列挙する必要はありません。
Burpブラウザは、暗号化されたHTTPSプロトコルでもHTTP通信を簡単にプロキシできます。設定は不要で、Proxyタブを開き、ブラウザを開くをクリックし、Intercept無効になっているか確認してください。
Burpブラウザを開き、次のURLにアクセスします:
https://portswigger.net/web-security/authentication/password-based/lab-username-enumeration-via-different-responses
Access the labをクリックしプロンプトが表示されたら、自分のPortSwiggerアカウントでログインします。
ラボで、My accountリンクをクリックし、ログインページを開きます。
UsernameとPasswordフィールドに、後で確認するためのサンプルデータを入力します。Log inボタンをクリックします。
Burp Suiteで、Proxyタブに移動し、HTTP履歴タブをクリックします。すると、Burp Suiteを開いた後にBurpブラウザが生成したHTTPリクエストの一覧が表示されます。
MethodがPOST
で、URLが/login
のリクエストを探し、それをクリックします。
先程選択したリクエストを右クリックして、Intruderに送信をクリックします。
Intruderタブをクリックします。リクエストがBurp Intruderに送信され、ペイロードポジション(§マークで区切られている)が3箇所に挿入されていることに注目してください。
このラボに解答するには、ユーザ名とパスワードのペイロードポジションのみが必要です。§クリアをクリックして、すべてのポジションをクリアします。
ユーザ名フィールドで入力したデータを選択し、§追加をクリックすると、ペイロードポジションとしてマークされます。
同様にパスワードフィールドで入力したデータにも行い、両方のフィールドにマークを付けます。
攻撃タイプ選択のドロップダウンで、クラスター爆弾を選択します。
ペイロードタブをクリックします。ペイロードセットが1に、ペイロードタイプが単純リストに設定されているか確認してください。
ペイロードオプション[単純リスト]で、ユーザ名候補のリストをボックスに貼り付けます。
ペイロードセットで2を選択します。
ペイロードオプション[単純リスト]で、パスワード候補のリストをボックスに貼り付けます。リクエスト数が10,100に増えていることに注目してください。
攻撃開始をクリックします。
ペイロードセットは、ペイロードセットが挿入される位置ごとに定義します。例えば、リクエストテンプレート内に2つのペイロードポジションを定義した場合、ペイロードセット1は1つ目に、ペイロードセット2は2つ目に挿入されます。
Intruderが、ペイロードセット1の各項目とペイロードセット2の最初の項目を組み合わせたリクエストを作成した後に、ペイロードセット2の次の項目に移って処理を繰り返していることに注目してください。これは、ペイロードセット2の最後に到達するまで行われます。
実行が終了するまで攻撃を待ちます - 特に、Burp Suite Community Editionに付属している速度制限されたBurp Intruderを使用している場合は、数分かかることがあります。
Status列のヘッダをクリックすると、レスポンスのリストがHTTPステータスコードでソートされます。さらに数回クリックする必要があるかもしれません。
ほとんどのリクエストが200
(OK)ステータスコードであるのに対し、1つのリクエストが302
(Found)であることに注目してください。このリクエストで使用されたユーザ名とパスワードをメモしてください - これらがラボに解答するための正しいログイン情報です。なお、次のスクリーンショットのような組み合わせになる可能性は低いと思われます。
Proxyタブで、Intercept無効になっていることを確認します。
Burpブラウザで、ラボのログインページに戻り、302
ステータスコードでメモしたユーザ名とパスワードを入力します。Log inをクリックします。これでラボを解答できます。
おめでとうございます - Burp Intruderでクラスター爆弾攻撃を設定して、単純なログインフォームをより簡単にブルートフォースする方法を学びました。
実際のWebアプリケーションには、ブルートフォース攻撃を阻止するための強固な対策がされていることが多いです。これらを回避する方法を知りたい場合は、Webセキュリティアカデミーの認証に関するトピックを参照してください。