
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. 使用 Docker 搭配完整的 Linux 桌面环境运行
我们提供了一个基于在浏览器中运行桌面的完整 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
有关所有可用参数的完整概述,请查看 [WebGoat 属性文件](webgoat-container/src/main/resources/application-{webgoat, webwolf}.properties)。
4. 从源码运行
先决条件:
- Java 25
- 您喜欢的 IDE
- Git,或您 IDE 中的 Git 支持
打开命令 shell/窗口:
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