
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 # 或你的时区
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