⚠️
徳丸本の脆弱性検証環境をDockerで再現し、OWASP ZAPをGUI付きで動かす
Webアプリケーションのセキュリティを学ぶ上で定番の書籍として、徳丸本があると思います。
環境構築をやってみて、手動で設定したりするものが多い点が個人的に少し面倒に感じ、
サポートページに書いてあったものよりもサクッと環境構築できるよう、OWASP ZAPもまとめてdockerコマンドで起動できるような構成にしてみました。
手順
-
サポートページで言及されている
wasbook-docker.zipを解凍する。 -
docker-compose.ymlを後程提示する内容に書き換える -
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 ProxyのPortが8090になるはずです。 - ブラウザのプロキシ設定を
127.0.0.1:8090に設定した状態であれば、http://example.jp/にアクセスすると、目次というタイトルのページが表示されるはずです。
Discussion