脆弱性診断ツールZAPのWebSwing版を使ってみた
はじめに
データ事業本部の藤川です。皆さん、セキュリティーしてますか?
脆弱性診断はソフトウェア開発を行う上で必須の作業です。CI/CDプロセスに組み込み、デプロイ前に脆弱性を検出しているプロジェクトも多いでしょう。Web脆弱性診断ツールにはBurp Suiteなど非常に優れたUIを持つものも増えています。
ただし、Webアプリケーションにログインできるようにしたり、細かいコンフィグレーションが必要なため、開発フローに乗せる前に、手軽に試せる環境が欲しいものです。
こちらの記事でDocker版ZAPの使い方が紹介されています。今回は、Docker版ZAPをブラウザから操作するやり方をご紹介したいと思います。
ZAPについて
以前は、OWASP ZAPと呼んでいましたが、今は、単にZAPもしくはZAP by Checkmarxと呼ばれています。(ZAP自体がZed Attack Proxyの略語なので、Open Worldwide Application Security Project Zed Attack Proxyだった!?)
※参考:ZAP (software) - Wikipedia
ZAPのソースコードは https://github.com/zaproxy/zaproxy で提供されています。Docker版はこちらにある通り、Stableリリース以外にWeelkyリリースなどがあります。
The plan is to generate and upload the releases every Monday morning.
計画では、毎週月曜日の朝にリリースを生成してアップロードする予定です。
Weeklyリリースは、毎週月曜日の朝に更新されます。時差やスケジュールの遅れを見込んで、火曜日の早朝からスキャンするのが良いかもしれません。
準備
やられサイトとして、OWASP Juice Shopを起動しておきます。
- OWASP Juice Shopを起動します。
docker pull bkimminich/juice-shop docker run --rm -p 3000:3000 bkimminich/juice-shop
- OWASP Juice Shopにアクセスできることを確認します。
ZAPの起動方法
- ZAP(Weekly)の最新版を取得します。
docker pull ghcr.io/zaproxy/zaproxy:weekly
- ZAPを起動します。
docker run -v $(pwd):/zap/wrk/:rw -u zap -p 8080:8080 -p 8090:8090 -i ghcr.io/zaproxy/zaproxy:weekly zap-webswing.sh
- 次のURLにアクセスします。
Do you want to persist the ZAP Session?
と聞かれるので、適当な項目を選択し、Start
ボタンをクリックします。(コンテナ内に残したスキャン結果を次のセッション時に使うかどうかの話しなので、コンテナ内に残さないのが良いのではないでしょうか)
- WebSwing版ZAPのページが開きます。WebSwingを使っているので、ブラウザ内にデスクトップアプリのような画面が開きます。[ファイル]メニューを使って、ファイルを読み込み、書き込みしようとすると、ブラウザ経由でローカルPCのファイルをZAPにアップロード、ダウンロードできます。
ZAPの使い方
Automated Scan
ボタンをクリックします。
URL to attack
にテスト対象のURLを入力します。Attack
ボタンをクリックします。スキャンが開始します。
- 次のメッセージが表示されましたが、
OK
ボタンをクリックして進みます。
※参考:ZAP – How can I fix 'browser was not found'?
- 様々な脆弱性が見つかりました。
さいごに
今回は、Docker版ZAPでWebSwingの画面を開いてみました。テスト対象のWebアプリを開いて、スキャンするための設定を行い、コンテキストファイルをダウンロードしておくことで、CI/CDプロセスに取り込み、スムーズに脆弱性診断をソフトウェア開発フローに載せられるようになります。