返回更新列表
新发布Oct 12, 2026

WebGoat v2026.5

刻意设计存在漏洞的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. 使用带有完整 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 # 或你的时区
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.port 单独设置 WebWolf 的端口。

有关可用设置,请参阅 WebGoat 属性和 WebWolf 属性。

4. 从源代码运行

先决条件:

  • Java 25
  • 你最喜欢的 IDE
  • Git,或你的 IDE 中的 Git 支持

打开命令 shell/窗口:

git clone [email protected]:WebGoat/WebGoat.git

现在让我们开始编译项目。

cd WebGoat
git checkout <<branch_name>>
# 在 Linux/Mac 上:
./mvnw clean install

# 在 Windows 上:
./mvnw.cmd clean install

如果你之前运行过 WebGoat,你应该先运行 mvn clean -Pcleanall 来清理临时目录和主目录中的文件,这些文件可能会因课程更改而导致测试失败!

# 使用 docker 或 podman,你可以在本地构建容器
docker build -f Dockerfile . -t webgoat/webgoat

现在我们准备运行项目。WebGoat 使用 Spring Boot。

# 在 Linux/Mac 上:
./mvnw spring-boot:run
# 在 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 # 或你的时区
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

分类