如何用WebGoat入门Web安全实战:一份免费的完整教程
【免费下载链接】WebGoatWebGoat is a deliberately insecure application项目地址: https://gitcode.com/GitHub_Trending/we/WebGoat
想练SQL注入、XSS,又不敢碰真实的生产环境?WebGoat 就是为此而生的:它是 OWASP 维护的、故意留满漏洞的 Web 应用,你在本地自由演练 Web 安全实战——SQL 注入、XSS、JWT 伪造都能动手做,做坏了也没关系。🐐
WebGoat到底是什么
一句话定位:WebGoat 是 OWASP 官方出品的"故意不安全"教学站点,漏洞是真的,攻击是合法的,学的是防御。适合想入门 Web 安全但找不到练手环境的人。
- 免费开源:代码全部开放,装在自己机器上跑
- 真实环境:每个练习是可复现的攻击场景,配提示和答案
- 源码可查:每个实验的实现代码就在仓库里,能看到"为什么能被攻破"
- 进度可见:完成的练习会记录在你的成绩单里
第一次跑起来
环境要求一句话:装好Java 25和 Git(Maven 由仓库自带的 mvnw 处理)。然后两条命令:
git clone https://gitcode.com/GitHub_Trending/we/WebGoat cd WebGoat && ./mvnw spring-boot:run等几分钟,浏览器打开 http://localhost:8080/WebGoat,注册一个账号就进来了。默认只监听本机,外网看不到。
它能帮你实际解决什么
跑起来之后,下面这些场景你都可以直接上手练。
不碰生产环境练SQL注入
登录框里多一个单引号就让数据库报错,这就是注入。WebGoat 里你从基础注入一路做到盲注,每次提交立刻知道成没成;做完攻击还能切到防御章节,用参数化查询把同样的注入挡回去。难度:入门级,无前置要求。
分清反射型、存储型与DOM型XSS
有人在评论区粘贴一段代码,打开页面的其他用户浏览器里它直接执行了。WebGoat 让你三类 XSS 挨个做一遍,每个实验都有校验端点,payload 进了页面才算通过;想弄清回显点在哪,源码就在 src/main/,照着实验名找包就行。难度:会看基本 HTML 结构即可。
从一个token看懂JWT伪造
应用靠一个小令牌认人,但验证太松就能被替换。你先解码看 token 里存了什么,再动手用错误的密钥签名试试。
难度:需要先理解 HTTP 请求的基本结构。
检验你理解的权限设计
把 URL 里的 id 改成别人的,就能看到别人的资料——这是越权访问。WebGoat 的访问控制章节按"看自己→看别人→改别人"三步设计,让你直观感受后端不校验权限时攻击面有多大。难度:中等,需要知道角色与权限的基本概念。
避坑指南
- Java版本太旧:mvnw 报错或编译不过,多半是本地 JDK 低于项目要求的 25,升级 Java 25 即可。
- 端口被占用:8080 打不开时查一下是不是别的服务占着,用
--webgoat.port=8001换个端口启动。 - ⚠️ 联网挂着跑:它故意有漏洞,官方 README 明确要求使用时断开外网;默认只监听本机,别自己把端口暴露出去。
你应该走哪条路线
- 纯新手:按顺序清掉 Introduction 和 HTTP Basics 两章;卡住就先读提示再动手;每章做完翻一次对应源码,核对校验逻辑。
- 在职进阶:主攻访问控制和 SQL 注入防御两章;每完成一个练习,给自己的工作项目写一条对应防线;用 Docker 方式整体跑一遍,熟悉部署链路。
- 备考或比赛向:把 SqlInjectionAdvanced 的盲注从头做到尾;做完后回看练习的判定逻辑,理解出题人如何验证你的 payload。
WebGoat 把"Web 安全很难"变成"先动手试试"——免费、本地运行、攻击零风险。今晚就打开它完成第一个练习,更多细节看 docs/README.md。
【免费下载链接】WebGoatWebGoat is a deliberately insecure application项目地址: https://gitcode.com/GitHub_Trending/we/WebGoat
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考