OWASP ZAPのコンテナを日本語対応させる

Webアプリケーションの脆弱性検査をするOWASP ZAPというツールを日本語環境で使用するためのメモです。

Docker Hubから入手できるOWASP ZAPのコンテナイメージは日本語フォントが含まれていないため、WebSwingのGUIで言語設定を日本語にすると文字化け(豆腐)してしまいます。

毎回コンテナに入って日本語フォントを追加するのが面倒になったので、Dockerfileでカスタムイメージを作りdocker composeで設定の永続化の指定を行うようにしてみました。

コンテナイメージ作成と起動

Notoフォントを追加インストールする例です。

パッケージマネージャに収録されている別のフォントや、自前でフォントを組み込むこともできます。

Dockerfile

FROM ghcr.io/zaproxy/zaproxy:stable
USER root
RUN  apt-get update && \
     apt-get -y install fonts-noto-cjk
USER zap

docker-compose.yml

version: "3.7"
services:
  zaproxy:
    image: zaproxy-ja
    build:
      context: .
    environment:
      TZ: Asia/Tokyo
    command: zap-webswing.sh
    ports:
      - 8080:8080
      - 8090:8090
    volumes:
      - ./wrk:/zap/wrk
      - ./home:/home/zap

同じディレクトリ内にDockerfiledocker-compose.ymlを置いて、下記コマンドでビルドするとzaproxy-jaというコンテナイメージが作られます。

docker compose build --pull

--pullオプションを付けておくことで、最新のイメージが存在する場合はpullしてからビルドが実行されます。

今回の例ではdocker-compose.ymlを置いたディレクトリ内でボリューム永続化をしているため、あらかじめコンテナ内のzapユーザー(UID=1000)が読み書きできる権限でディレクトリを作成しておきます。

mkdir wrk home
chown 1000:1000 wrk home

準備が完了したので、コンテナを起動します。

docker compose up

この方法で起動したときはCtrl+Cでコンテナを終了できます。

初回の設定

Webブラウザからhttp://localhost:8080/zapにアクセスすることでGUIが起動します。

初回は英語設定になっているので、言語の設定をします。

設定目的でセッションの保存は必要ないので、No. I do not want to persist this session at this moment in timeを選択してStartします。

起動直後

ToolsメニューからOptions...を開きます。

オプション画面を開く

Languageの項目を開き、Languageプルダウンから日本語を選択します。

言語設定

一旦OWASP ZAPを終了し、再度GUIを起動し直すと言語設定が反映されます。

日本語表示で起動

<<WSLでネットワーク不調時に試すこと