記録されたログインシーケンス
スキャンのアプリケーションログインを設定する際に、基本的なユーザ認証情報を指定する方法の他に、記録されたログインシーケンスをインポートする方法もあります。記録されたログインシーケンスは、Burp ScannerにWebサイトへのログイン方法を根本的に正確に指示する一連の指示です。記録されたログインシーケンスを提供すれば、次のようなより複雑な認証メカニズムをBurpが正常に処理できます。
-
シングル、サインオン
-
ユーザ名とパスワードを同じフォームに入力しないマルチステップログイン
-
追加のフィールドやチェックボックスなどがあるログインフォーム
注
Burpがこれらのケースのいくつかを処理できるようにするために、ログインシーケンスの実行に必要なスコープ外のリンクをクローラが一時的にたどれるようにする必要があります。ただしこれらの場所は、スキャンの一部としてクロールまたは診断はされません。
専用のChrome拡張機能を使用して、記録されたログインシーケンスをすばやく簡単に作成できます。拡張機能は、ブラウザで手動でログインシーケンスを実行しているときに、Webサイトとのやり取りをキャプチャします。JSONベースの"スクリプト"が自動的に生成されます。スクリプトは、スキャンランチャのアプリケーションログインセクションにインポートできます。認証されたクロールをスキャンが開始するとき、新しいブラウザセッションが開き、このスクリプトを使用してアクションが再現され、完全なログインシーケンスが最初から実行されます。
記録されたログインシーケンスの制限
記録されたログインシーケンスを使用するか決定する前に、次の制限に注意してください。
-
記録されたログインは、ブラウザを利用したスキャンにのみ互換性があります。Burpがクロール中にBurpブラウザの初期化に失敗した場合、以前のクローラエンジンにフォールバックし、作成した記録済みログインを無視します。詳細はイベントログを確認して、Burpブラウザのヘルスチェックを実行してください。
-
記録されたログインを使用する場合、Burp Scannerはユーザの自己登録や、無効な認証を送信した意図的なログイン失敗はできません。その結果、スキャン設定から"ログイン機能"のクロール設定は無視されます。
-
認証システムによっては、スキャン中にログインを繰り返すと、不審な挙動と認識される可能性があります。これにより、クローラが処理できないような追加の認証手順やロボット対策が起動される可能性があります。この場合、これらのチェックを無効にしてテストインスタンスでのスキャンの実行を推奨します。
-
記録されたログインは、2要素認証、文字選択パスワード、CAPTCHAと互換性がありません。
注
記録されたログインは、CAPTCHAに対応していません。CAPTCHAシステムは、記録されたログインツールのような自動化されたシステムを拒否するために特別に設計されています。もしサポートすると、CAPTCHAプロバイダーは私たちがCAPTCHAの仕組みを回避する方法にパッチを当て、私たちはそのCAPTCHAの脆弱性を見つけ、プロバイダーがそれを修正する、といういたちごっこになる可能性があります。
ログインシーケンスを記録するヒント
これらのヒントは、複雑なログインメカニズムの場合でも、とりあえず動作する記録されたログインシーケンスを作成するのに役立ちます:
-
記録されたログインシーケンスに関する制限事項のリストを確認し、対象アプリケーションの認証プロセスがBurp Suiteの記録されたログインと互換性があるかを確認してください。
-
もしアプリケーションが基本的なシングルステップのHTMLログインフォームを使用している場合、記録されたログインシーケンスではなく、ログイン認証情報の追加を検討してください。シンプルなログイン情報が使えるならば、その方がより高速なスキャンが可能です。
-
ログイン完了後は、他のリンクのクリックやログアウトは行わず、一連の作業を終了してください。記録されたログインシーケンスは、ログイン処理のみを実行するように設計されています。その他の遷移は、Burp Scannerのクロールフェーズの一部として自動的に処理されます。
-
ページや要素の読み込みが完全に終了するのを待ってから、次の動作を行ってください。
-
マウスを余計にクリックするなどの無駄な動作は避けてください。Burp Scannerは、記録したすべてのアクションを繰り返します。
-
ページ上のどの要素を操作するする場合でも、キーボードショートカットではなく、マウスクリックを使用してください。自動的に選択されるフィールドについても、このヒントが当てはまります。
-
記録されたログインシーケンスは、Webアプリケーションの認証のみを扱うことを目的としています。宛先サーバが、Microsoft NTLMなどのプラットフォーム認証を必要とする場合、これらの認証情報を別途入力する必要があります。カスタムスキャン設定の一部として、プラットフォーム認証の認証情報を設定できます。
-
サイトのスキャンスコープ内のページでログインシーケンスが終了しているか、再確認してください。クローラは、ログインの過程ではスコープ外のリンクをたどれますが、ログインシーケンスの最後はスコープ内のページで終了する必要があります。
-
可能であれば、再生する予定の画面上でシーケンスを記録してください。大きなモニターで記録したものを、小さなモニターで再生しようとすると、問題となることがあります。
Burp Scanner用にログインシーケンスを記録する方法
注
ログインシーケンスを記録する前に、上記の記録する際のヒントを読んでください。これらのヒントは、複雑な認証シーケンスを記録する際に起こりがちなエラーを回避するのに役立ちます。
認証されたクロールをBurp Scannerができるようにログインシーケンスを記録するには、Burp Suite Navigation Recorder拡張機能を使用します。これはBurpのBurpブラウザにプリインストールされており、すぐに使用できます。外部ブラウザで作業する場合は、拡張機能のインストールと設定を手動で行う必要があります。
-
Burpブラウザ、あるいはBurp Suite Navigation Recorder拡張をインストールした外部のChromeを開きます。
-
拡張機能をもう一度クリックして、"Start recording"を選択します。新しいシークレットウィンドウが開きます。
-
シークレットウィンドウで、対象のWebサイトを参照します。赤い枠線は、ウィンドウが記録されていることを示しています。
-
キャプチャしたいログインシーケンスを完了します。スキャン中にBurpが使用する認証情報を必ず入力してください。
-
必要に応じて、残りのログインシーケンスを実行します。スキャンの対象となるページで終了するようにしてください。
-
完了したら、拡張機能アイコンをもう一度クリックして、"Stop recording"を選択します。生成されたスクリプトは自動的にクリップボードにコピーされます。間違えた場合は、アイコンをもう一度クリックして、ログインシーケンスを再記録できます。誤ってクリップボードからスクリプトを紛失した場合は、最後に記録されたシーケンスのコピーもできます。
-
Burpで、スキャンランチャに移動しアプリケーションのログイン設定を開きます。"記録されたログインシーケンスを使用する"オプションを選択し、"新規"をクリックします。
-
これがどのログインシーケンスであるかを覚えやすいようにラベルを追加します。最後に、クリップボードのデータを"スクリプトの貼り付け"フィールドに貼り付けて、"OK"をクリックします。記録された手順は、アプリケーションログインのリストに追加されます。
このプロセスを、Burpで使用する認証情報のセットごとに繰り返します。たとえば、通常のユーザとしてログインするログインシーケンスと、管理者としてログインする別のログインシーケンスを記録できます。
外部ブラウザを使用したログインシーケンスの記録
Burpブラウザを使用してログインシーケンスを記録する代わりに、外部のChromeも使用できます。拡張機能をインストールして設定するために、いくつかの簡単な手順を実行する必要があります。
-
Chromeを開き、Burp Suite Navigation Recorder拡張を追加します。
-
ブラウザの右上隅にある拡張機能のアイコンをクリックします。プロンプトが表示されたら、"設定を開く"をクリックします。
-
拡張機能の設定ページで、"シークレットモードでの実行を許可する"オプションのスイッチを有効にします。これで、ログインシーケンスの記録に、このブラウザが使用できるようになります。
記録されたログインシーケンスのテスト方法
記録されたログインシーケンスを保存した後、ブラウザでの操作が正確にキャプチャされ記録されたかどうか、再生して確認できます。これは、新しい記録が期待どおりに機能しているかの確認や、既存の記録がスキャン中に失敗した場合のトラブルシューティングに役立ちます。
-
スキャンランチャに移動し、アプリケーションのログイン設定を開きます。"記録されたログインシーケンスを使用する"を選択します。
-
記録されたログインシーケンスを新しくアップロードするか、設定ライブラリから既存のログインシーケンスを読み込みします。
-
テストしたいログインシーケンスを選択し、"再生"ボタンをクリックします。Burpブラウザが開きます。
-
そのブラウザで、Burpが自動的に対象Webサイトに移動し、記録したログインシーケンスが実行開始されるか確認する必要があります。これはすべてかなり迅速に行われます。手順の再生中にブラウザを手動で操作すると、テストに影響を及ぼす可能性があるため、避けてください。
-
Burpが記録の再生を終了すると、ブラウザウィンドウを閉じる前に、最後のページで数秒間一時停止します。これは、ログインシーケンスが停止した場所を確認するのに十分な時間でしょう。すべてが正常に機能した場合、これは正常にログインした後に通常表示されるページになります。それではない場合、プロセスのどの段階で問題が発生しているかについての手がかりが得られるかもしれません。
記録されたログインシーケンスのトラブルシューティング
Burp Scannerはスキャン中に、記録されたログインシーケンスを再生できない場合があります。これによってすべてのスキャンが失敗するわけではありませんが、認証されたクロールを実行できなくなります。いろいろな手順を実行して、これらの問題をトラブルシューティングできます。
-
制限事項のリストを確認し、クロールしているログイン機構と記録されたログイン機能に互換性があるか確認します。
-
イベントログを確認してください。問題がログインシーケンス自体にあるのか、ブラウザに一般的な問題があるのかが、エラーメッセージに表示されているかもしれません。一部のログエントリは、後で解決された一時的な障害のみを表示している場合があることに注意してください。たとえば、対象サイトが帯域制限を課している場合、クローラがログインできなかったことを示す多くのエントリが表示されることがあります。ただし、スキャンの後半では正常にログインしている可能性があります。
-
"ヘルプ"メニューから、Burpブラウザのヘルスチェックを実行し、Burpブラウザに問題がないことを確認します。記録されたログインは、ブラウザを利用したスキャンとのみ互換性があるため、ブラウザに問題がある場合にBurp Scannerは記録されたログインシーケンスを使用できません。
-
"再生"機能を使用して記録されたログインシーケンスをテストします。正常にログインした場合に期待されるページで手順が終了するかを確認してください。そうでない場合は、Burpがどのアクションまでは正常に実行できたのか判別できるかもしれません。ログインシーケンスを再記録して、別のテストを実行してみてください。この新しい記録も同じ段階で失敗したように見える場合、手順の次のアクションが、Burp Scannerがサポートしていない手順かもしれません。
-
スキャンスコープ内のページでログインシーケンスが終了しているかを再確認します。クローラはログインプロセス中に一時的にスコープ外のリンクをたどれますが、ログイン処理の最後のアクションを完了した後は、スコープ内のページにリダイレクトしている必要があります。
-
大きい/高解像度のモニタを使用して記録し、小さい/低解像度のモニタでログインシーケンスを再生しようとすると、失敗する場合があります。再生中の画面に収まらないと、シーケンスは失敗します。これを軽減するには、再生する画面でシーケンスを再記録してください。