返回更新列表
新发布Sep 14, 2026

WebGoat v2026.3

刻意设计存在漏洞的Web应用程序,提供互动课程与挑战,用于学习Web应用程序安全与渗透测试技术。

分享

WebGoat:一个故意设计为不安全的 Web 应用程序

Build java-jdk OWASP Labs GitHub release Gitter Discussions Conventional Commits

简介

WebGoat 是由 OWASP 维护的一个故意设计为不安全的 Web 应用程序,旨在教授 Web 应用程序安全课程。

该程序展示了常见的服务端应用程序缺陷。这些练习旨在供人们学习应用程序安全和渗透测试技术。

警告 1: 在运行此程序时,您的机器将极易受到攻击。使用此程序时,您应断开与互联网的连接。 WebGoat 的默认配置绑定到 localhost,以最大限度地减少暴露。

警告 2: 此程序仅供教育目的使用。如果您未经授权尝试这些技术,您很可能会被抓获。如果您被发现从事未经授权的黑客活动,大多数公司会解雇您。声称您在进行安全研究是行不通的,因为这是所有黑客都会首先宣称的。

WebGoat

安装说明:

更多详情请查看贡献指南

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

分类