自動脆弱性診断を実行するまでの手順まとめ
業務で自動脆弱性診断を試す機会があったので、その際の手順をまとめてみました。
今回は OWASP ZAPを使って自動スキャンを実行する流れ を紹介します。
GUI を開かなくても、コマンド1本で診断できるので、自動化や定期実行にとても便利です。
OWASP ZAP とは?
OWASP が提供する無料の Web 脆弱性診断ツールで、
以下のような一般的なセキュリティ診断を自動で行えます。
- クロール(Spider)
- パッシブスキャン(ヘッダーや設定のチェック)
- アクティブスキャン(疑似攻撃による脆弱性検査)
実行方法は、ブラウザ経由で行えるGUI 版と、CLI 版があります。
今回は、CLI版の手順になります。
事前準備
CLI スキャンは Docker を使うと環境構築が圧倒的に簡単です。
まずは ZAP の Docker イメージを取得します。
docker pull owasp/zap2docker-stable
続いて、レポートを保存するためのローカルディレクトリも作成します。
mkdir reports
ZAPのフルスキャンを実行する
CLI では主に次の 2 つを使います。
| スクリプト | 内容 |
|---|---|
| zap-baseline.py | 攻撃なし(パッシブ)+簡易スパイダー |
| zap-full-scan.py | 攻撃あり(アクティブ)+スパイダー |
今回はzap-full-scan.pyを使ってサイト全体をスキャンします。
docker run --rm \
-v $(pwd)/reports:/zap/reports \
-e JAVA_OPTS="-Xmx4G" \
owasp/zap2docker-stable \
zap-full-scan.py \
-t 【スキャンしたいサイトのURL】 \
-r /zap/reports/fullscan.html
スキャンが完了すると、reportsフォルダにレポートが作成されます。
ブラウザで開くだけで、以下の情報が一覧で確認できます。
- 脆弱性の重大度(High / Medium / Low / Info)
- 問題のある URL と詳細
- 診断に使われたリクエスト / レスポンス
- 改善推奨事項
後は診断結果を確認して、各自で判断の上修正を行っていきます。
注意点として、サイトの規模によってはメモリ不足に陥りCLIがエラー終了してしまう可能性があるため、
実行の際にはリソースにゆとりを持たせた方が良いです。
例えば1000ページ程だと、最低でも4コア16GBメモリほどのスペックがあると良いそうです。