OWASP ZAPとは #
OWASP ZAPは、Webアプリケーションのセキュリティ診断を行う多機能なツールとなります。
プロジェクトはオープンソース(OSS)として公開されておりJava
言語で開発されています。
また、クロスプラットフォームに対応しておりGUIやCLIでも利用できることから幅広い層に支持されています。
以下は公式リポジトリとなっております。
The ZAP by Checkmarx Core project
検出可能な脆弱性 #
以下はZAPで検出できる主な脆弱性の一覧となっております。
脆弱性の種類 | 説明 |
---|---|
XSS(クロスサイトスクリプティング) | 悪意あるスクリプトがブラウザ上で実行されるリスク |
SQLインジェクション | 入力値を通じて不正なSQLが実行される可能性 |
セッション管理の不備 | セッションIDの漏洩や不適切な保持設定など |
セキュリティヘッダー欠如 | 保護用HTTPヘッダーが設定されていない状態 |
CSRF対策不足 | 悪意あるリクエストが第三者から実行される恐れがある |
古いライブラリの使用 | 既知の脆弱性があるJavaScriptやフレームワークの検出 |
OWASP ZAPのインストール #
1.依存関係のインストール #
現時点でのZAPのインストール要件としてはJava 11
以降が必要となっております。
はじめに、dnfコマンドを使用しJava11のインストールを行います。
dnf install java-11-openjdk
インストールが完了したら以下のコマンドにてバージョン確認を行います。
java -version
上記を実行すると下記のようにバージョン情報が表示され、問題なくインストールが完了している事が確認できます。
openjdk version "11.0.25" 2024-10-15 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.25.0.9-1) (build 11.0.25+9-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.25.0.9-1) (build 11.0.25+9-LTS, mixed mode, sharing)
2.実行ユーザーの作成 #
次に実行ユーザーの作成を行います。
ZAPはroot
(管理者)アカウントでも実行可能となっております。
しかし、Linuxの運用においてセキュリティ上の理由からrootアカウントの使用は避けるべきとなっておりますので、今回は専用アカウントを作成し進めます。
adduser zap
3.パッケージのダウンロード #
次にZAPパッケージのダウンロードを行います。
ZAPはWindows版、macOS版、Linux版など多くのプラットフォームで利用可能です。
Linux環境でCLIを利用したい場合は、LinuxPackage版をダウンロードしてください。
直接パッケージの入手を行う場合は下記の公式サイトよりダウンロード可能となっております。
ZAP公式サイト今回はwgetコマンドで2.15.0
バージョンのパッケージを入手しインストールを行います。
cd /home/zap
wget https://github.com/zaproxy/zaproxy/releases/download/v2.15.0/ZAP_2.15.0_Linux.tar.gz
4.パッケージの解凍 #
次に先ほど入手した「tar.gz
」形式のパッケージの解凍を行います。
以下コマンドにて解凍可能です。
tar -zxvf ZAP_2.15.0_Linux.tar.gz
以上で準備完了となります。
セキュリティテスト #
LinuxのCLIよりzapを実行する場合は「daemon
」や「cmd
」オプションを使用し実行する必要がございます。
また、「ホスト
」と「ポート番号
」についても指定が必要となります。
ホスト名、ポート番号はZAPのAPIが利用する値となります。
以上を踏まえ以下コマンドにてセキュリティテストを実施する事ができます。
daemonを使用する場合 #
./zap.sh -daemon -port [ポート番号] -host [ホスト名] -quickurl [チェック対象サイト] -quickout [レポート出力先]
cmdを使用する場合 #
./zap.sh -cmd -port [ポート番号] -host [ホスト名] -quickurl [チェック対象サイト] -quickout [レポート出力先]
レポート結果を確認する #
上記にてセキュリティを診断を実施した場合、結果としてHTML形式の解析レポートが出力されます。
注意点として、日本語出力は非対応となっており英語形式での出力となります。
必要に応じて翻訳を実施し内容の確認を行なってください。
脆弱性のリスクレベルは4段階に分類され表示されます。
以下はリスク別の説明となっております。
レベル | 説明 | 優先度の目安 |
---|---|---|
High |
深刻な脆弱性。 | 最優先で対応 |
Medium |
悪用されると被害が生じる可能性がある。 | 早期対応を推奨 |
Low |
影響は軽微だが、セキュリティ的には改善が望ましい項目。 | 余裕があれば対応 |
Informational |
実害はないが、セキュリティ上の参考情報や設定ミスの可能性を示唆。 | 任意で確認 |
危険度の高い脆弱性を優先し対策される事をお勧めいたします。