ウェブスパイダーを設定する

Nexposeではウェブサイトをスパイダー巡回して、ディレクトリ構造、デフォルトディレクトリ、サーバー上のファイルとアプリケーション、切れたリンク、アクセス不能なリンク、およびその他の情報を検出することが可能です。

本アプリケーションはその後、SQLインジェクション、クロスサイトスクリプティングCSS/XSS、バックアップスクリプトファイル、読み込み可能CGIスクリプト、非セキュアなパスワード使用、およびソフトウェア欠陥や設定エラーから生じるその他の問題といった、セキュリティの不具合の証拠を分析します。

一部の内蔵スキャンテンプレートは、デフォルトでウェブスパイダーを利用しています

これらのテンプレートの設定を調整可能です。また、ウェブスパイダー設定をカスタムテンプレート内で設定可能です。スパイダーは、各ウェブページ内のリンクを調べて、どのページがスキャンされたかを判定します。多くのウェブサイトにおいて、まだスキャンが行われていないページではアドレスバー内にベースURLが表示され、その後パラメータ介在性のリンクが表示されます。

例えばアドレス、www.exampleinc.com/index.html?id=6では、?id=6パラメータはおそらくブラウザに配信されるべきコンテンツを指しています。クエリストリングを含める設定を有効化する場合、スパイダーはフルストリングwww.exampleinc.com/index.html?id=6を、すでに検索されたすべてのURLページに対してチェックして、このページが分析されたかどうかを確認します。

設定を有効化しない場合、スパイダーは?id=6パラメータなしでベースURLのみをチェックします。

スキャンするウェブサイトへのアクセスを得るため、本アプリケーションは広く利用されているウェブブラウザとしてウェブサーバーアプリケーションに表示されます。ブラウザが行うのと同様に、ウェブページリクエストを送信してこれを行います。このリクエストには、ヘッダと呼ばれる情報項目が含まれます。ヘッダの1つであるユーザーエージェントは、ユーザーのブラウザの特徴を定義します。具体的には、バージョン番号やサポートされるウェブアプリケーション技術などです。ユーザーエージェントはウェブサイトに対して、本アプリケーションを特定のブラウザとして表現します。なぜなら、一部のウェブサイトはHTTPリクエストをサポートしておらず拒否するからです。デフォルトのユーザーエージェントストリングは、ターゲットウェブサイトに向けて本アプリケーションをInternet Explorer 7として表現します。

ウェブスパイダーの設定ステップおよびオプション

一般のウェブスパイダー設定を設定するには

  1. スキャンテンプレート設定パネルのウェブスパイダーページに移動します。
  2. チェックボックスを選択してウェブスパイダーを有効化します。

注意: ウェブスパイダーチェックボックスを利用してクエリストリングを含めると、スパイダーはより多くのリクエストをウェブサーバー宛てに送ります。これにより全体的なスキャン時間が増大し、正規ユーザーのためのウェブサーバーのパフォーマンスに影響が出る可能性があります。

  1. 希望する場合、適切なチェックボックスを選択して、スパイダーを行う場合のクエリストリングを含めます。
  2. 単一スキャン中に何度も起こるクロスサイトスクリプティングをスパイダーにテストさせようとする場合、当該オプションのチェックボックスを選択します。

本テストは、ウェブサーバーに保存された犯意のあるコード経由で起こる、危険な攻撃のリスク削減に役立ちます。これを有効化すると、ウェブスパイダーのスキャン回数が増える場合があります。

注意:  デフォルトのユーザーエージェント設定を変更すると、本アプリケーションがウェブサイトから受け取るコンテンツが修正される場合があります。

  1. ブラウザIDユーザーエージェントフィールド内のデフォルト値を変更する場合、新規値を入力します。

どのユーザーエージェントストリングを入力すべきか分からない場合、ウェブサイトデベロッパーまでお問い合わせください。

  1. 希望する場合、よくあるユーザー名およびパスワードの利用をチェックするオプションを選択します。本アプリケーションは、これらの認証資格情報credentialsの利用を脆弱性としてレポートします。これはセキュアでない慣行です。なぜなら攻撃者により簡単に推測されてしまうからです。この設定を有効化すると、本アプリケーションは、よくあるユーザー名およびパスワードを発見されたフォーム宛てに送信して、ウェブアプリケーションにログオンしようと試みます。複数のログオン試行により、認証サービスがこれらの認証資格情報credentialsを持つアカウントをロックアウトする可能性があります。

任意ウェブスパイダーを有効化して弱い認証資格情報credentialsの利用をチェックすることが可能です。

ウェブスパイダーはスキャン中にログオンフォームを発見しますので、これらのフォームがよく利用されているユーザー名やパスワードを受け入れるかどうかを判定できます。受け入れる場合、この慣行をエクスプロイトする自動攻撃に対しては脆弱となります。ウェブスパイダーは、チェックを実行するためよく利用されている認証資格情報credentialsでこれらのフォームからのログオンを試行します。試行が成功すると、脆弱であると認識されます。

注意:  本チェックにより、特定のセキュリティポリシーを持つ認証サービスで、これらのよくある認証資格情報credentialsを利用するアカウントのロックアウトが起こるかもしれません。

  1. ウェブスパイダー設定ページの弱い認証資格情報credentialsのチェックエリアに移動して、よくあるユーザー名とパスワードの利用をチェックするとラベル付けされたチェックボックスを選択します。

ウェブスパイダーのパフォーマンス設定を設定するには

  1. 解決する外部ホストの最大数を入力します。またはデフォルト値、100のままにします。

本オプションは、スパイダーが解決可能な固有のホスト名の最大数を設定します。この機能により、特に大規模なウェブサイトの場合、スパイダープロセスにかなり時間がかかるようになります。なぜなら、クロスリンクチェックが頻繁に行われるからです。許容可能なホストの範囲は1~500です。

  1. ターゲットウェブサーバーからの応答を待つ時間を、スパイダー応答タイムアウトフィールドにミリ秒単位で入力します。1~3600000ミリ秒1時間の範囲の値を入力可能です。デフォルト値は120000ミリ秒2分です。ウェブスパイダーは、スパイダーリクエストの最大再試行回数フィールドに指定された値に基づきリクエストを再試行します。
  2. スパイダーの最大ディレクトリレベルとラベル付けされたフィールドに数値を入力して、ウェブスパイダーのディレクトリ深さ制限を設定します。

ディレクトリ深さを制限すると、特に大規模なサイトの場合、時間を大幅に節約できます。ディレクトリトラバーサルを制限しない場合は、当該フィールドに0と入力します。デフォルト値は6です。

注意: 時間制限のある反復スケジュール化スキャンを実行する場合、ターゲットサイトの一部が制限時間の終わりにスキャンされないまま残る可能性があります。後続のスキャンはウェブスパイダーが中断したところから再開されませんので、ターゲットウェブサイトの全スキャンが完了されないという場合もあり得ます。

  1. 最大スパイダー時間フィールドに数値を入力して、各ウェブサイトをスキャンする最大分数を設定します。

時間制限により、特に大規模なターゲットウェブサイトの場合、スキャンが割り当て時間枠より長くかかることを防止できます。デフォルト値0のままにすると、制限時間なしとなります。許容可能な範囲は1~500です。

  1. スパイダーする最大ページ数フィールドに数値を入力して、スパイダーがリクエストするページ数を制限します。

これは、大規模サイトにとって時間節約となる措置です。許容可能な範囲は1~1,000,000ページです。

注意:  時間制限とページ制限の両方を設定する場合、ウェブスパイダーは、最初の制限に達したときにターゲットウェブサイトのスキャンを停止します。

  1. 失敗後にリクエストを再試行する回数を、スパイダーリクエストの最大再試行回数フィールドに入力します。0~100の値を入力してください。値0は、失敗したリクエストの再試行はしないという意味です。デフォルト値は2回です。

正規表現に関連するウェブスパイダー設定を設定するには

  1. 慎重に扱うべきデータフィールド名の正規表現を入力します。または、デフォルトストリングのままにします。

本アプリケーションは脆弱性として慎重に扱うべきと指定されたフィールド名をレポートしますフォーム作業によりクリアの慎重に扱うべきデータが送信されます。正規表現に一致すると、慎重に扱うべきデータフィールド名であると認識されます。

  1. 慎重に扱うべきコンテンツの正規表現を入力します。本アプリケーションは、慎重に扱うべきと指定された脆弱性ストリングとしてレポートします。フィールドを空欄にすると、慎重に扱うべきストリングの検索は行われません。

ディレクトリパスに関連するウェブスパイダー設定を設定するには

  1. チェックボックスを選択して、robots.txtプロトコルで定められた規格を守るようスパイダーに指示します。

Robots.txtは、一般に公開されていないウェブサイトの全部/一部にスパイダーやその他のウェブロボットがアクセスすることを防止する、表記法です。

注意: 含まれるブートストラップパスのスキャン範囲は、ウェブスパイダー設定で設定した時間制限およびページ制限により変わります。ブートストラップパスをスキャンする前にスキャンが指定時間またはページ制限に達した場合、これらのパスはスキャンされません。

  1. メインのウェブサイトURLからリンクされていないアプリケーションベースURLをスパイダーに含めさせる場合、これらのURLパスをブートストラップパスフィールドに入力します。

/myapp.複数のエントリをカンマで区切ります。当該フィールドを空欄にすると、スパイダーはブートストラップパスをスキャンに含めません。

  1. 除外するベースURLを除外パスフィールドに入力します。複数のエントリをカンマで区切ります。

除外パスを指定すると、本アプリケーションはこれらのURLをスパイダーすることも、脆弱性またはそれらに関連するファイルを発見することも試みません。当該フィールドを空欄にすると、スパイダーはいかなるパスもスキャンから除外しません。

希望に応じて、その他のスキャンテンプレート設定を設定します。スキャンテンプレートの設定が終了したら、保存をクリックします。

ウェブスパイダーを微調整する

ウェブスパイダーはウェブサーバーを巡回して、ウェブサイトの完全なレイアウトを判定します。これは徹底したプロセスであり、ウェブサイト保護の威力が高まります。ほとんどのウェブアプリケーション脆弱性テストは、ウェブスパイダーに依存しています。

Nexposeはスパイダーデータを利用して、SQLインジェクション、クロスサイトスクリプティングCSS/XSS、バックアップスクリプトファイル、読み込み可能CGIスクリプト、セキュアでないパスワードの利用、その他カスタムソフトウェアの欠陥や誤った設定から生じる多くの問題といった、よくある問題のカスタムウェブアプリケーションを評価します。

デフォルトでは、ウェブスパイダーは3つのスレッドと20ミリ秒のパーリクエストディレイを使用して、サイトを巡回します。これにより生成されるトラフィック量は、発見されたリンク済みサイトコンテンツの量により異なります。複数プロセッサ・システム上でアプリケーションを実行中である場合、スパイダースレッドの数はプロセッサあたり3つに増加します。

完全なウェブスパイダースキャンを、500ページをホストする応答型サーバーに対して行う場合、ターゲットアセットにより平均150ミリ秒あたり1ページが提供されると仮定すると、かかる時間は90秒にやや満たないという計算になります。10,000ページをホストする同一サーバーに対するスキャンには、約28分かかります。

ウェブスパイダー用のスキャンテンプレートを設定する場合、ディレクトリ最大数または深さ、さらにはウェブサイト当たりの巡回ページ最大数を入力します。これらの値により、ウェブスパイダーにかかる時間を制限可能です。デフォルトでは、スパイダーはクロスサイトリンクを無視し、スキャン中のエンドポイントのみに留まります。

アセット目録にウェブサイトが含まれていない場合、必ずこの機能をオフにしてください。オンになっていると非常に時間がかかる場合があります。