⚠️

徳丸本の脆弱性検証環境をDockerで再現し、OWASP ZAPをGUI付きで動かす

に公開

Webアプリケーションのセキュリティを学ぶ上で定番の書籍として、徳丸本があると思います。

環境構築をやってみて、手動で設定したりするものが多い点が個人的に少し面倒に感じ、
サポートページに書いてあったものよりもサクッと環境構築できるよう、OWASP ZAPもまとめてdockerコマンドで起動できるような構成にしてみました。

手順

  1. サポートページで言及されているwasbook-docker.zipを解凍する。
  2. docker-compose.ymlを後程提示する内容に書き換える
  3. docker compose up -dでコンテナを起動

docker-compose.ymlの内容

docker-compose.yml
services:
  db:
    build: db
    environment:
      - MYSQL_ROOT_PASSWORD=wasbook
      - MYSQL_USER=wasbook
      - MYSQL_PASSWORD=wasbook
      - TZ=Asia/Tokyo
    networks:
      internal:

  apache:
    build: apache
    environment:
      - MYSQL_HOST=db
      - TZ=Asia/Tokyo
    ports:
      # Forward Proxy用ポート
      - ${APACHE_IP:-127.0.0.1}:${APACHE_PROXY_PORT:-13128}:3128
    networks:
      internal:

  nginx:
    build: nginx
    depends_on:
      apache:
        condition: service_started
      mail:
        condition: service_started
      tomcat:
        condition: service_started
    networks:
      internal:
        aliases:
          - example.jp
          - api.example.net
          - trap.example.com
          - internal.example.jp

  tomcat:
    build: tomcat
    networks:
      internal:

  mail:
    build: mail
    environment:
      - HTTPPATH=/mail
    networks:
      internal:

  zap:
    image: ghcr.io/zaproxy/zaproxy:stable
    container_name: zap-web
    command: zap-webswing.sh
    ports:
      - "${ZAP_UI_IP:-127.0.0.1}:8080:8080"   # GUI (http://127.0.0.1:8080/zap)
      - "${ZAP_PROXY_IP:-127.0.0.1}:8090:8090" # Proxy (HTTP/HTTPS proxy)
    volumes:
      - ./zap-wrk:/zap/wrk:rw
    networks:
      internal:
    restart: unless-stopped

networks:
  internal:

動作確認方法

  • http://localhost:8080/zap/で、OWASP ZAPをGUIで操作できるはずです。
  • OWASP ZAPのtools>options>Network>Local Servers/Proxiesで、Main ProxyPortが8090になるはずです。
  • ブラウザのプロキシ設定を127.0.0.1:8090に設定した状態であれば、http://example.jp/にアクセスすると、目次というタイトルのページが表示されるはずです。

Discussion