脆弱性診断ツール「OWASP ZAP」は、脆弱性だらけのWebアプリケーション「EasyBuggy」の脆弱性をどの程度検出できるでしょうか?
今回は次の基本的な機能で検証してみました。
- 簡易スキャン:WebアプリケーションのルートのURLを入力すると、OWASP ZAPがその配下をクロールして脆弱性があるか診断する。
- 静的スキャン:ブラウザ上でWebアプリケーションの基本的な機能を一通り手作業で動かすと、OWASP ZAPがレスポンスの内容などを検査する。
- 動的スキャン:静的スキャンで行った操作を、OWASP ZAPがリクエストパラメータを変えるなどして再実行し、診断する。
なお、検証で行った作業内容もこのページ載せていますので、OWASP ZAPを試してみたい方は参考にしてみて下さい。
はじめに
OWASP ZAPとは
その前にOWASP ZAPについて簡単に説明しておきます。「OWASP ZAP (OWASP Zed Attack Proxy)」は、オープンソースのWebアプリケーション脆弱性診断ツールで、Webアプリケーションのセキュリティに関するガイドやツールを公開している「OWASP (The Open Web Application Security Project)」が開発しています。
EasyBuggyとは
脆弱性やリソースリークなどを含む、バグだらけのWebアプリケーションです。現時点では、20種類の脆弱性を実装しています。詳しくはこのページを参照下さい。
OWASP ZAPのインストールと初期設定
OWASP ZAPのインストール
このページからインストーラをダウンロードします。インストールは、デフォルトのまま「次へ」をクリックしていけば完了します。インストールに関しては、Java 7が必要ということを除けば、特筆すべき点は無いので省略します。インストールが完了したら、起動します。Windowsの場合、ファイアウォールの警告が出るので、「アクセスを許可する」をクリックして下さい。
初回起動時は次のようなダイアログが表示されます。
どれを選んでも構いませんが、ここでは「継続的に保存せず、必要に応じてセッションを保存」を選択しました。その後、以下のようなメイン画面が表示されます。
OWASP ZAPのプロキシ設定
次に、OWASP ZAP経由でEasyBuggyへリクエストが送信されるように、ローカルプロキシを設定します。
ツール > オプション > ローカル・プロキシ をクリックして、 ポートを8080以外(EasyBuggyと重複ないポート)に変更します。
ブラウザのプロキシ設定
EasyBuggyにアクセスするブラウザのプロキシ設定を変更します。Firefoxを使用している場合は、「設定」 > 「ネットワーク」 > 「接続設定」 で以下のようにプロキシ設定を変更します。
EasyBuggyの起動
脆弱性だらけのWebアプリケーションはこのページからダウンロードして、次のコマンドで起動します。
java -Deasybuggy.mode=only-vulnerabilities -jar easybuggy.jar
※EasyBuggyを起動するにはJavaが必要です。`-Deasybuggy.mode=only-vulnerabilities`を付加することで、脆弱性以外の問題を発生させるページへのリンクが表示されなくなります。EasyBuggyはOutOfMemoryErrorやJVMクラッシュを引き起こすようなリンクが多数あり、これらにOWASP ZAPのクローラーがアクセスすると、EasyBuggyが停止してしまいます。 |
脆弱性 | 簡易スキャン | 静的スキャン | 動的スキャン |
---|---|---|---|
XSS (クロスサイトスクリプティング) | ○ | ○ | ○ |
SQLインジェクション | × | × | ○ |
LDAPインジェクション | × | × | × |
コードインジェクション | × | × | × |
OSコマンドインジェクション | × | × | × |
メールヘッダーインジェクション | × | × | × |
Nullバイトインジェクション | × | × | × |
サイズ制限の無いファイルアップロード | × | × | × |
拡張子制限の無いファイルアップロード | × | × | × |
オープンリダイレクト可能なログイン画面 | × | × | × |
ブルートフォース攻撃可能なログイン画面 | × | × | × |
セッション固定攻撃可能なログイン画面 | × | × | × |
親切過ぎる認証エラーメッセージ | × | × | × |
危険なファイルインクルード | ○ | × | ○ |
パストラバーサル | ○ | × | ○ |
意図しないファイル公開 | × | × | × |
CSRF (クロスサイトリクエストフォージェリ) | × | × | × |
クリックジャッキング | × | ○ | ○ |
XEE (XMLエンティティ拡張) | × | × | × |
XXE (XML外部エンティティ) | × | × | × |
脆弱性20件のうち、検出できたのは5件でした。今回は、OWASP ZAPの基本的な機能を使用した検証を行いましたが、OWASP ZAPの機能はこれだけではなく、使い方を学習すれば、さらに多くの脆弱性を検出することができます。脆弱性やOWASP ZAPの学習のために、是非EasyBuggyも使ってみて下さい。
ちなみにEasyBuggyのSpring Bootクローンもあります。warファイルをダウンロードして、次のコマンドで起動できます。
java -Deasybuggy.mode=only-vulnerabilities -jar ROOT.war