
WebGoat v2026.5
Webアプリケーションセキュリティとペネトレーションテスト技術を学ぶためのインタラクティブなレッスンとチャレンジを備えた、意図的に脆弱性を持たせたWebアプリケーションです。
WebGoat: 意図的に安全でない Web アプリケーション
はじめに
WebGoat は、OWASP によって保守されている、意図的に安全でない Web アプリケーションであり、Web アプリケーションセキュリティの教訓を教えるために設計されています。
このプログラムは、一般的なサーバーサイドアプリケーションの脆弱性を実演するものです。演習は、アプリケーションセキュリティとペネトレーションテストの技術について学ぶために使用されることを意図しています。
警告 1: このプログラムを実行している間、あなたのマシンは攻撃に対して極めて脆弱になります。このプログラムを使用している間はインターネットから切断してください。 WebGoat のデフォルト設定は、露出を最小限に抑えるために localhost にバインドされます。
警告 2: このプログラムは教育目的のみを目的としています。許可なくこれらの技術を試みた場合、あなたは非常に高い確率で捕まるでしょう。無許可のハッキング行為で捕まった場合、ほとんどの企業はあなたを解雇します。セキュリティ研究を行っていたと主張しても通用しません。それはすべてのハッカーが最初に主張することだからです。

インストール手順:
詳細については コントリビューションガイド を確認してください
1. Docker を使用して実行する
すでにブラウザと ZAP および/または Burp がマシンにインストールされている場合、Docker を使用して WebGoat イメージを直接実行できます。
すべてのリリースは DockerHub でも公開されています。
docker run -it -p 127.0.0.1:8080:8080 -p 127.0.0.1:9090:9090 webgoat/webgoat
一部のレッスンでは、コンテナを同じタイムゾーンで実行する必要があります。そのためには TZ 環境変数を設定できます。 例:
docker run -it -p 127.0.0.1:8080:8080 -p 127.0.0.1:9090:9090 -e TZ=America/Boise webgoat/webgoat
OWASP ZAP や別のプロキシを使用したい場合、127.0.0.1 や localhost は使用できなくなりますが、カスタムホストエントリを使用できます。例えば:
127.0.0.1 www.webgoat.local www.webwolf.local
その後、次のようにコンテナを実行できます:
docker run -it -p 127.0.0.1:8080:8080 -p 127.0.0.1:9090:9090 -e WEBGOAT_HOST=www.webgoat.local -e WEBWOLF_HOST=www.webwolf.local -e TZ=America/Boise webgoat/webgoat
その後、http://www.webgoat.local:8080/WebGoat/ と http://www.webwolf.local:9090/WebWolf/ にアクセスしてください
2. 完全な Linux デスクトップを備えた Docker を使用して実行する
ツールをローカルにインストールする代わりに、ブラウザ内でデスクトップを実行することをベースにした完全な Docker イメージがあります。この方法では、Docker イメージを実行するだけで済み、最高のユーザーエクスペリエンスが得られます。
docker run -p 127.0.0.1:3000:3000 webgoat/webgoat-desktop
3. スタンドアロン
https://github.com/WebGoat/WebGoat/releases から最新の WebGoat リリースをダウンロードしてください
export TZ=Europe/Amsterdam # or your timezone
java -Dfile.encoding=UTF-8 -jar webgoat-2023.8.jar
ログ内のリンクをクリックして WebGoat を起動してください。
3.1 別のポートで実行する
何らかの理由で WebGoat を別のポートで実行したい場合は、次のパラメータを追加することで実行できます:
java -jar webgoat-2023.8.jar --webgoat.port=8001 --webwolf.port=8002
統合 JAR では、--server.port は --webgoat.port のエイリアスです。WebWolf のポートを個別に設定するには --webwolf.port を使用してください。
利用可能な設定については、WebGoat プロパティ と WebWolf プロパティ を参照してください。
4. ソースから実行する
前提条件:
- Java 25
- お気に入りの IDE
- Git、または IDE での Git サポート
コマンドシェル/ウィンドウを開きます:
git clone [email protected]:WebGoat/WebGoat.git
では、プロジェクトをコンパイルすることから始めましょう。
cd WebGoat
git checkout <<branch_name>>
# On Linux/Mac:
./mvnw clean install
# On Windows:
./mvnw.cmd clean install
If you have ran WebGoat before, you should first run mvn clean -Pcleanall to clean up files from your temp and home directories which could fail the tests due to changes in lessons!
# Using docker or podman, you can than build the container locally
docker build -f Dockerfile . -t webgoat/webgoat
これでプロジェクトを実行する準備が整いました。WebGoat は Spring Boot を使用しています。
# On Linux/Mac:
./mvnw spring-boot:run
# On Windows:
./mvnw.cmd spring-boot:run
... すぐに http://localhost:8080/WebGoat で WebGoat が実行されているはずです。
注: 上記のリンクは、ログインしていない場合、ログインページにリダイレクトされます。続行するにはログイン/アカウント作成を行ってください。
IP アドレスを変更するには、WebGoat/webgoat-container/src/main/resources/application.properties ファイルに次の変数を追加します:
server.address=x.x.x.x
4. カスタムメニューで実行する
専門家のみを対象としています。WebGoat をパーソナライズされたメニューでセットアップする方法があります。特定の環境変数を設定することで、一部のメニューカテゴリや個々のレッスンを省略できます。
例えば、Linux/macOS で jar として実行する場合は次のようになります:
export TZ=Europe/Amsterdam # or your timezone
export EXCLUDE_CATEGORIES="CLIENT_SIDE,GENERAL,CHALLENGE"
export EXCLUDE_LESSONS="SqlInjectionAdvanced,SqlInjectionMitigations"
java -jar target/webgoat-2023.8-SNAPSHOT.jar
または docker run では (このバージョンが docker hub にプッシュされた後) 次のようになります:
docker run -d -p 127.0.0.1:8080:8080 -p 127.0.0.1:9090:9090 -e EXCLUDE_CATEGORIES="CLIENT_SIDE,GENERAL,CHALLENGE" -e EXCLUDE_LESSONS="SqlInjectionAdvanced,SqlInjectionMitigations" webgoat/webgoat