WebGoat实战指南:如何 3 步搭出你的第一套 Web 漏洞靶场
2026/9/18 11:27:39 网站建设 项目流程

WebGoat实战指南:如何 3 步搭出你的第一套 Web 漏洞靶场

【免费下载链接】WebGoatWebGoat is a deliberately insecure application项目地址: https://gitcode.com/GitHub_Trending/we/WebGoat

学 Web 安全,最卡在"没地方练手"。真站点不敢碰,虚拟靶场又太假。WebGoat 是 OWASP 维护的一个故意写成不安全的应用,专门让你安全地练注入、XSS、会话这些漏洞。跑起来只要 3 步,练完就能独立复现真实攻击。

它解决了什么问题

  • 真打不了生产环境:你想练手,却怕误伤线上系统。WebGoat 只绑定 localhost,攻击全落在本地,断开外网就能放心练。
  • 看书练不动:漏洞原理看懂了,落到浏览器却不知道怎么发请求。它把每个漏洞做成可交互的关卡,你照着操作就能看到效果。
  • 练了没反馈:不知道自己做对了没。它内置自动判题,做对立刻给正反馈,做错会提示原因。

最小启动:3 步跑起来

环境要求:装好 Java 25 和 Git,任选一个支持 Git 的 IDE。

第一步,把仓库拉到本地:

git clone https://gitcode.com/GitHub_Trending/we/WebGoat

第二步,进入目录并编译(首次约几分钟):

cd WebGoat ./mvnw clean install

第三步,启动服务(Windows 把命令换成./mvnw.cmd):

./mvnw spring-boot:run

看到终端打印出http://localhost:8080/WebGoat的访问链接,就代表成功。用浏览器打开它,会先跳到登录页,注册个账号就能进主界面。

先做这一个实验

先别急着看清单,花 10 分钟拿到第一个正反馈。

目标:用 SQL 注入(在输入框里塞进一段能改变数据库查询语句的文本)拿到 Marketing 部门的数据。

操作:进入 SQL 注入课程的第二关,在查询框里输入SELECT * FROM users WHERE department = 'Marketing',提交。

预期结果:页面回显出该部门的全部用户表格,并给出"成功"提示。做通了,你就理解了"输入直接拼进查询语句"这个根因,后面所有注入题都是它的变体。

能力地图

按你要练的能力来分,而不是按目录分。完整源码都在 src/main/java/org/owasp/webgoat/lessons/ 下,可以对照着看每关是怎么写"漏洞"的。

注入类问题怎么练

从 SQL 注入一路练到盲注和绕过过滤,覆盖拼接型、布尔型等多种场景。适合刚入门的人打基础。练完你能独立判断一段代码是否可被注入,并写出对应防护。

跨站脚本怎么识别

分反射型、存储型、DOM 型三类做练习,配合自动判题确认你的 payload 是否生效。适合前端和全栈开发。练完你能在评审代码时指出输出未转义的位置。

认证与会话怎么破

围绕 JWT(一种把身份信息写进 token 的认证格式)和会话劫持做实验,从伪造 token 到刷新漏洞都有。适合做后端接口的同学。练完你能说清一个 token 缺了哪段校验就会被绕过。

访问控制怎么越权

通过功能越权和角色权限两类题,体验普通用户直接访问管理员接口的情形。适合要过安全面试的人。练完你能列出一套常见的鉴权缺失自查清单。

不安全配置怎么排查

包含默认口令、报错信息泄露、Actuator 端点暴露等场景,帮你建立"配置即攻击面"的意识。适合运维和部署岗。练完你能给一份服务写出不安全配置的检查项。

搭配玩法

单靠浏览器手点,请求发不快。装上 Burp Suite(一个能拦截并改写 HTTP 请求的抓包工具),把浏览器流量全部走它的代理,就能在 WebGoat 的代理课程里反复篡改和重放请求。收益很具体:同一关你能用 10 次尝试对比响应,而不是靠记忆。

如果你不想装 Burp,用自带的 OWASP ZAP(另一款免费的抓包工具)即可,课程里给了对应的代理过滤配置,照着设好就能拦截 WebWolf 的流量。

30 天成长路线

第一阶段(第 1 周):跑通环境,完成 WebGoat Introduction 和 SQL 注入前四关。里程碑:能独立用注入语句取出任意部门数据,不再依赖提示。

第二阶段(第 2-3 周):刷完 XSS、CSRF、JWT 和访问控制四个模块。里程碑:能独立写出反射型 XSS 的 payload,并解释一个 JWT 被伪造的具体原因。

第三阶段(第 4 周):挑战挑战模式和盲注题,把前面的能力串起来。里程碑:能不查资料独立完成一个盲注题,并说出它和显错注入的区别。

避坑速答

启动后打不开页面:现象是浏览器转圈。原因多是端口 8080 被占用或 Java 版本不对。解法:换个端口启动,确认java -version是 25。

编译很慢或报错:现象是首次构建卡住。原因是首次要下载大量依赖。解法:保持网络畅通再跑一次,第二次会快很多。

做关卡一直失败:现象是提交后总提示失败。原因是 payload 没命中判题条件。解法:点开关卡里的提示,逐条对照,而不是盲目乱输。

代理里抓不到包:现象是 Burp 或 ZAP 里看不到 WebGoat 的请求。原因是代理只放了 WebWolf 的流量。解法:按课程里的过滤规则,把 WebGoat 域名也加进捕获范围。

现在就开始

别再只收藏不动手了。今晚就完成 SQL 注入第二关,拿到第一个成功回显。跑通后,你自然会知道下一关该试什么。把环境留在本地,下次打开就能接着练,不用重头搭。

延伸阅读:docs/README.md 里有完整的安装与运行说明;src/main/java/org/owasp/webgoat/lessons/ 是全部关卡的源码,想知道某关的漏洞细节就去看对应目录。

【免费下载链接】WebGoatWebGoat is a deliberately insecure application项目地址: https://gitcode.com/GitHub_Trending/we/WebGoat

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询