クロールベースのスキャン中のBurp Scannerの挙動を設定する多数のオプションがあります。これらはスキャン開始時にその場で設定でき、またBurpの設定ライブラリでも管理できます。
Burp Suiteの設定ライブラリには組み込み設定が用意されているので、これらのオプションを素早く設定できます。
これらの設定は、クロールの目的とアプリケーションの性質を反映するためにクロールロジックの動作を制御します。
最大リンク深度とは、クローラによる開始URLから作成されるナビゲーション遷移(リンクのクリックやフォームの送信)の最大回数です。最近のアプリケーションは、メニューやページフッターのような場所で、すべてのレスポンスに大量のナビゲーションを構築する傾向があります。このため通常は、開始URLから少数のホップで、アプリケーションの大部分のコンテンツと機能に到達できます。アイテムの表示、ショッピングカートへの追加、チェックアウトなど、多段階処理を完全に網羅するには、さらに多くのホップが必要です。
一部のアプリケーションでは、非常に長いナビゲーションシーケンスが含まれていても、興味深い違いのある機能ではない場合があります。たとえばショッピングアプリケーションでは、膨大な数の商品カテゴリ、サブカテゴリ、表示フィルタがある場合があります。クローラにとってこれはリンクの非常に深いネストされたツリーとして表示され、すべて異なるコンテンツを返します。このような場合、ナビゲーション構造の深くまで入り込むことにほとんど意味がないため、最大リンク深度を8など小さな数に制限するのが適当です。
現実世界のアプリケーションは、コンテンツやナビゲーションの構成方法、レスポンスの揮発性、アプリケーション状態の種類や複雑さの点で、まったく異なっています。極端な例では、アプリケーションはそれぞれの異なる機能について固有で安定したURLを使い、各レスポンスで固定のコンテンツを返し、サーバ側の状態が含まれません。逆の極端な例では、機能にアクセスする都度変化する短命なURLを使い、異なる機能への異なるナビゲーション経路でアクセスするとURLが頻繁に変化し、非確定に変わる揮発性のコンテンツを返し、ユーザの操作によってその後に観察される内容や動作が変化する重度のステートフルな機能などを使用しています。
Burpのクローラは、これらの両極端を処理できます。必要に応じて、短命で頻繁に変化するURL、揮発性のコンテンツ、アプリケーション状態の変化を処理できます。ただし、これらのケースを完全に処理すると、クロール作業に大幅な負荷が発生します。クロール戦略の設定を使用して、指定したアプリケーションに適用されるアプローチを調整できます。実際にこの設定は、クロールの速度と達成される網羅性とのトレードオフになります。デフォルトの戦略は、一般的なアプリケーションで網羅性と速度のバランスが取れています。より安定してユニークなURLを使っていて、ステートフルな機能がないアプリケーションをクロールする場合は、より速度を最適化した戦略を選択できます。あるいは、より揮発的で頻繁に変わるURLや、複雑なステートフル機能のアプリケーションをクロールする場合は、より網羅性を最適化した戦略も選択できます。
Burp Scannerの"Fastest(最速)"クロール戦略は、一部の重要な点が他の戦略とは異なることに注意してください。
このオプションを有効にし、使用する1つ以上のアプリケーションログインを設定すると、Burp Scannerは認証されていないクロールフェーズをスキップします。顧客から提供されたログイン情報のみを使用し、ユーザの自己登録を試みたり、ログインを失敗することはありません。これにより、全体のクロール時間を短縮できます。
アプリケーションのログイン情報を提供しない場合、クローラは認証されていないクロールを自動的に実行するようになります。
最新アプリケーションのクロールは、ステートフルな機能、不安定なコンテンツ、無制限のナビゲーションのおかげで、終わらない場合があります。Burpのクローラはさまざまな手法を使用して、クロールの初期段階でユニークなコンテンツを最大限発見しようとします。クロール制限の設定では、クロールの効果が限界に達したとき、クロール範囲に制限がかけられます。一般的に、スキャンされるアプリケーションに関する知識に基づいて、クロール範囲の制限を設定するのが妥当です。
以下に基づいてクロールを制限できます:
これらの設定は、クロール中に検出されたログイン機能に対するクローラの処理方法を制御します。クローラが次のことを行う必要があるかどうかを設定できます:
これらの設定は、記録されたログインシーケンスとは互換性がありません。記録されたログインをスキャンに使用する場合、これらの設定は無視されます。
クローラは、次のチェックリストを使用して、ターゲットサイトのログインフォームと登録フォームを識別します。
type=password
属性の入力フィールドが含まれていること。
name
属性がパスワードフィールドにあること。
これらの基準がすべて満たされると、クローラは次のルールを順番に適用して、登録フォームとログインフォームを区別します。たとえば、2つのフォームに同じ数のパスワードフィールドがある場合、テキストフィールドの数などを比較します。
登録フォームには、これらが多く含まれます:
クローラは、パスワードフィールドによってログインフォームと登録フォームを識別します。ただし、関連するフィールドが次の場合にのみ、ユーザ名またはメールアドレスを入力します。
type=email
またはtype=text
のフィールドがある
name
属性がある
これらのいずれかの条件を満たさない場合クローラは、フォームであることは認識しますが、対応するデータを正しく入力できません。
これらの設定はBurp Scannerの、スキャンのクロールフェーズで発生するアプリケーションエラーの処理方法 (接続失敗や送信タイムアウト)を制御します。
次のオプションを設定できます:
空白のままにしておくと、無効にできます。
これらの設定で、クロールタスク用に設定されている次の設定を上書きできます。
クロールの詳細をカスタマイズできます:
robots.txt
ファイルを取得し、そこからリンクを抽出するか制御します。
sitemap.xml
ファイルを取得し、そこからリンクを抽出するか制御します。抽出するアイテムの最大数を設定できます。
/ \ ? = &.
。ただし、この設定で手動で制御も可能です。
Burpブラウザの挙動を制御します:
クロールと診断にBurpブラウザを使用する - この設定は、Burp Scannerが対象サイトのナビゲートにBurpブラウザを使用するかどうかを制御します。これをブラウザを利用したスキャンと呼びます。
デフォルトでは、マシンが必要な要件を満たしていると思われる場合、Burp ScannerはBurpブラウザを使用しますが、必要に応じて常にブラウザを使用するようにも強制できます。少なくとも2つのCPUコアと8GBのRAMを搭載したマシンの使用を推奨します。または、ブラウザによるスキャンの完全な無効化もできます。この場合、Burp Scannerは従来のクロールエンジンを使用します。
スコープ外のホストから必要なリソースとデータを読み込む - この設定は、必要に応じてクローラがスコープ外のホストにリクエストを発行するかどうかを制御します。Webサイトが正しく機能するために、外部でホストされているサブリソースの読み込みや、APIからのデータ取得が必要なことがよくあります。これらのリクエストを許可すると、スキャンの対象範囲を最大化できます。クローラが行ったスコープ外のリクエストは、診断されないことに注意してください。
サイトリソースの読込タイムアウト - この設定は、Burp Scannerがクロール中にサブリソースを読み込もうとしたとき、待機する時間をミリ秒単位で指定します。
ブラウザ画面を表示してクロールする - デフォルトで、Burp Scannerはヘッドレスブラウザを使用してクロールを行います。この設定を有効にすると、スキャンが開始されたとき、ブラウザのウィンドウが新しく開き、クローラが対象Webサイトをナビゲートする様子がリアルタイムで見えます。これはトラブルシューティングに役立ちます。
画面を表示したブラウザのクロールを監視していると、Burp Scannerが複数のウィンドウを開き、既存のウィンドウが使用できなくなることがあります。これは予想される挙動で、スキャンに問題があるわけではありません。冗長なウィンドウは、一定時間後に自動的に閉じられます。