なぜFirefoxを使うの?
- デフォルトでXSS対策がされないため、検査がやりやすいから。
- Proxy設定がOSのProxy設定に依存する。そのため。Windows等で利用する場合は設定の調整が必要。
OWASP ZAPの設定
利用前に設定したほうがよさそうなもの
モード
意図しない検査対象へスキャンをしないように、プロテクトモードにするのがよさそうだ。
- セーフモード
- コンテキストに入っていても、攻撃を行えない
- プロテクトモード
- 標準モード
- 攻撃モード
プロテクトモードの場合、検査対象を指定する必要がある。
- 一旦アクセスすると、左ペインに「サイト」が増える
- これを右クリックし[コンテキストに含める]がでるので、選択する
- [セッション・プロパティ]画面で、[コンテキストに含める]に当該のURLが登録されるので、OKで追加し、閉じる
- 元の画面で[コンテキストに含める]に含まれるURLは、赤丸?のアイコンがつく
ローカルプロキシ設定
ZAPのproxy待ち受けポートを設定する
- [ツール][オプション]で[ローカル・プロキシ]を選択
- AddressやPortを設定する
- localhostや8080など
スパイダー
[ツール][オプション]の[スパイダー]を選択。クローリングの調整を必要に応じて実施する。
- クロールする最大の深さ
- デフォルト5階層まで辿る。
- 深くすると、パフォーマンスが落ちる場合がある。
- 延々と階層をたどれるようなシステムの場合、終わらない。
- サイトの作りに応じて調整をする。
- 並列スキャンスレッド数
- 同時リクエスト数にも関連する
- ZAPを起動しているPCの性能や、検査対象サーバの構成により、調整する
- 1でもいいのかもしれない。
対象のURLを右クリック[攻撃][スパイダー…]
- オプションチェックボタン
- 再帰的
- Spider Subtree Only
- 指定のディレクトリから下だけを見る
- http://xxx/dirs/ を開始位置にしていれば、dirs/ 以下のみ対象とする
- 指定のディレクトリから下だけを見る
- 詳細オプションを表示 は[詳細オプション]タブが増える
- 最大継続時間で、全体のクロール時間の制限を行う
- [xxを解析]は、.gitや.svnやHTMLのコメントなどを確認し、リンクがあればそれをたどる
- とりあえず全部入れといてもいいかも
Spider実行後のタブ
- Flag
- Seedは、そこからリンクをたどり始めたもの
- なしは、Seedから発見されたもの
- User Rulesは、例えばgif等の検査しないとしたもの
- out of contextは、診断対象としていないサイト
スキャン
Spiderで静的スキャンは行われている。
- Active scan
- XSS等を試す(動的スキャン)のため、自サイト以外へは利用しないこと
- Passive scan
- 静的スキャンであり、ZAPで確認できたものを検査する。passive scan自体は、サイトへのアクセスはしない。
動的スキャン
- [ポリシー][スキャンポリシー…]を選択
- ポリシー名を選択し[変更]で設定を変える
- 診断するカテゴリ(XSS、Injection等)を制限する
- [ヘルプ][アップデートのチェック]の[マーケットプレイス]で、追加のルールを導入可能
- [ツール][オプション…]の[動的スキャン]での調整
- 並列スキャンするホスト数
- 並列スキャンスレッド数
- スキャン中のミリ秒単位の遅延(サーバ側の負荷削減として)
スキャンするカテゴリを選択する
- [ポリシー][スキャンポリシー]で変更を押す
- [カテゴリ]で、規定をすべて [オフ]にする