脆弱性診断のためOWASP ZAPをインストールする


インターステラの阿形です。
最近MacBookにOWASP ZAPをインストールする機会があったので、インストール手順と初期設定について書いてみたいと思います。
ちなみにこちらで書いているものは、ほぼOWASP ZAPのGetting Started Guideに書いてある内容です。
なにか不明点があったら、Getting Started Guideを参照すると良いと思います。

OWASP ZAPとは?

ご存じの方は次の項まで飛ばしてください。

ZAPの説明の前に、まずOWASPとはなんぞやというところから。
OWASPはThe Open Web Application Security Projectの頭文字で、ざっくり言えば、ウェブアプリケーションのセキュリティ問題を解決するための国際的なコミュニティの名称です。
詳しくは公式ページの説明を読んでいただくのが良いと思います。

ZAPはこのOWASPから提供されているツールの名前です。
正式にはOWASP Zed Attack Proxyと呼ぶようです。

このツールでできることですが、ウェブアプリケーションの脆弱性診断を行ったり、HTTPリクエストを途中で止めて、解析したり改ざんしたりできます。
悪意を持って使えば、攻撃のためのツールとなり得るので、取り扱いには注意が必要です。
詳しい機能については以下のページにリストがあります。
https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project#tab=Functionality

ZAPはApache Licenseに基づき、フリーかつオープンソースソフトウェアとなっていますので、誰でも自由に使用することができます。

インストール前の確認

ZAPはJavaベースのアプリケーションです。
このため、Java7以上が必要となります。
ただし、macOSではインストーラーには必要なバージョンのJavaが含まれていますので、特に別途準備する必要はありません。
Windows、Linuxの方は別途Javaのインストールが必要です。
Dockerも用意されていますので、面倒な場合はそちらを利用されるのも良いかもしれません。

インストール

早速インストールに進みます。
まず、OWASP Zed Attack Proxy Projectのページにアクセスします。
Downloadのボタンを押すと、GitHubのダウンロードページに移動しますので、そちらでお使いの環境に合ったインストーラーをダウンロードします。
今回はMacBookにインストールするので、macOS用のインストーラーをダウンロードしました。

ダウンロードしたファイルを展開し、インストーラーを起動します。

インストーラーを起動すると、このような画面が表示されます。
ごく一般的なインストーラーですね。
次へをクリックするとライセンス承認の画面になります。
ここは承認をクリックして次に進みます。
インストール形式を選択します。
特に理由がない限り、標準インストールを選択して進みます。
インストール内容が表示されますので、確認したらインストールをクリックします。
インストールが開始されるので、しばらく待ちます。
そんなに時間はかからないので、そのまま待ちましょう。
インストール終了!

ZAP起動

macOSの場合、標準インストールするとDockにシェルスクリプトが設定されます。

でも、これをクリックしても残念ながらZAPは起動しません。
これなんのためにこうなっているのかイマイチよくわからなかったんですが、ZAP自体はアプリケーションフォルダにあるアイコンから普通に起動できます。(結果的にこのzap.shというシェルスクリプトが実行されています)

なので、普通にアプリケーションフォルダのアイコンをダブルクリックして起動するか、そのアイコン自体をDockにドラッグ・アンド・ドロップして追加してしまいましょう。

起動すると最初にこんなダイアログが表示されます。
通常は一番上のものを選んでおけばよいかと思います。
開始をクリックするとZAPの画面が表示されます。

Proxyの設定

ZAPを起動すると、その名の通りプロキシとして動作し始めます。
使用するブラウザのプロキシの設定を変更して、ZAP経由で通信を行うように設定します。
プロキシのホスト名は、ZAPを起動するマシン上でブラウザも動かす場合はlocalhost、それ以外の場合は待ち受けるIPアドレスを設定します。
ポートはデフォルトでは80を使用するようになっています。
これらの設定を使用するブラウザに応じて設定を行います。
今回はmacOSなので、macOSの場合設定を参考までに書いておきます。

macOSのSafari、Chromeの場合

システム環境設定を起動し、ネットワークの中の、「詳細…」をクリックします。
「プロキシ」タブをクリックすると以下のような設定画面となるので、Webプロキシ(HTTP)、保護されたWebプロキシ(HTTPS)を設定します。

SSL(HTTPS)の設定

HTTPだけならこのまま使用することも可能ですが、SSL(HTTPS)を使用する場合はもう一手間必要です。
SSLそのままでは、リクエストの内容を見ることはできないため、ZAPでは偽の証明書を自動生成してブラウザに返し、ZAPで暗号をとけるようにしており、実サーバーとの本物の証明書によるSSLのやり取りはZAP自身で行っています。
ZAPからからブラウザに返している偽の証明書は、都度ZAPが自動的に生成しているので、このままですとブラウザ上で不正な証明書としてエラーとなってしまいます。
このため、証明書が正しいものとして取り扱わせるため、ZAPのRoot CAを登録し、信頼している必要があります。
通常、ブラウザにはZAPのRoot CA証明書は当然ながら登録されていませんので、これの登録作業が必要となります。

Root CA証明書のエクスポート

まずZAPで自動生成されているRoot CA証明書を証明書ファイルにエクスポートします。
ZAPを起動したら、メニューの「ツール」から「オプション…」を選択します。
オプションウィンドウが開いたら、左側のリストから「ダイナミックSSL証明書」を選択します。
右側に表示されているのがZAPのRoot CA証明書です。
下部の「保存」ボタンを押して、証明書ファイルとして保存します。

Root CA証明書のインポート

書き出したRoot CA証明書を使用できるようにインポートします。
macOSの場合、先程保存した証明書をダブルクリックするとキーチェーンアクセスが起動し登録されます。

登録されただけですと、証明書が信頼されていないため、ブラウザでアクセスするとやはりエラーとなってしまいます。
ZAPの証明書を選択し、右クリックメニューで「情報を見る」を選択します。
証明書の情報画面が表示されたら、「この証明書を使用するとき」のプルダウンメニューから、「常に信頼」を選択します。
変更したらウィンドウを閉じると設定は完了です。

ここまでできたら、試しにブラウザでHTTPSのサイトにアクセスしてみます。
問題なくサイトが表示されれば設定は正しくされています。
なお、うまく表示された場合でも、ZAPの画面左側のサイトや、下部のリクエストのリストが増えていかない場合はプロキシの設定がうまく行っていない可能性があります。
その場合はプロキシの設定を見直してください。

おわりに

これでZAPの設定は完了です。
ちょっと証明書周りの設定はめんどうですが、あとはそれほど難しくないと思います。
あとはいろいろいじり倒して、HTTPリクエストを覗いてみたり、脆弱性テストをやってみたりと試してみてください。






このブログの人気の投稿

【AWS】IAMFullAccessを付与せずIAM Roleの作成とアタッチを行う方法

【AWS】EBSボリューム自動取得/削除 を Lambda で実行 (世代管理も)

【GCP】Compute EngineでVPNサーバーを立てるときの注意点