
WebGoat v2026.3
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. スタンドアロン
最新のWebGoatリリースをhttps://github.com/WebGoat/WebGoat/releasesからダウンロードしてください。
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
使用できるすべてのパラメータの完全な概要については、[WebGoatプロパティファイル](webgoat-container/src/main/resources/application-{webgoat, webwolf}.properties)を確認してください。
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で実行する場合は、(このバージョンが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