webgoat通关过程系列(一)
字数 2126 2025-08-10 08:28:24
WebGoat通关教学文档
1. WebGoat简介
WebGoat是OWASP组织开发的用于进行WEB漏洞实验的应用平台,用于演示WEB应用中存在的安全漏洞。基于Java开发,包含了OWASP Top10的漏洞训练课程。
2. 环境搭建
最新版本:2023.8
安装方式(推荐Docker):
docker run -p 8080:8080 -p 9090:9090 webgoat/webgoat
访问8080端口即可,首次使用需要注册账号。
3. General基础关卡
3.1 HTTP Basic
1-2关卡:
- 发送HTTP请求,填入用户名,返回反转后的用户名
1-3关卡:
- 请求方式:POST
- magic_num在请求body中可以找到
3.2 HTTP Proxies
2-5关卡(使用Burp Suite):
- 设置代理并开启拦截
- 修改三处:
- GET改为POST
- 添加header:
x-request-intercepted:true - 请求参数改为
Requests are tampered easily并拼接到URL
3.3 Developer Tools
3-4关卡:
- 在浏览器控制台(F12)输入:
webgoat.customjs.phoneHome()
3-6关卡:
- 查看请求参数
3.4 CIA Triad
介绍数据三要素:
- 机密性(Confidentiality)
- 完整性(Integrity)
- 可用性(Availability)
4. (A1) Broken Access Control
4.1 Hijack a session
1-2关卡:
- 观察返回的Set-Cookie头:
hijack_cookie=3805806745390473234-1702722939700 - 发现由两部分组成,都是递增的
- 使用Burp Suite爆破:
- 设置Payload
- 观察返回长度不同的响应
4.2 Insecure Direct Object References
2-2关卡:
- 直接使用
tom/cat登录
2-3关卡:
- 查看请求响应,发现隐藏的
role和userId属性
2-4关卡:
- 猜测profile URL:
/WebGoat/IDOR/profile/2342384
2-5关卡:
- 爆破获取其他用户信息(如id=2342388)
- 修改请求:
- GET改为PUT
- body中添加:
color=red和role=低级别
4.3 Missing Function Level Access Control
3-2关卡:
- 查看HTML源码,发现隐藏菜单链接:
Users和Config
3-3关卡:
- 访问隐藏链接
users - 修改Content-Type为
application/json - 获取用户信息(包括jerry的hash值)
3-4关卡:
- 直接访问
users-admin-fix返回403 - 使用POST修改当前用户权限:
admin=true - 再次使用GET获取用户列表
4.4 Spoofing an Authentication Cookie
4-2关卡:
- 观察两个用户的cookie:
- webgoat:
NmU0ODU3NDU1ODVhNzg0MjY0NDI3NDYxNmY2NzYyNjU3Nw== - admin:
NmU0ODU3NDU1ODVhNzg0MjY0NDI2ZTY5NmQ2NDYx
- webgoat:
- Base64解码后得到16进制:
6e485745585a7842644274616f676265776e485745585a784264426e696d6461
- 再次解码得到:
nHWEXZxBdBtaogbewnHWEXZxBdBnimda
- 发现规律:
nHWEXZxBdB+ 用户名反转 - 构造Tom的cookie:
nHWEXZxBdBmoT- 转16进制:
6e485745585a784264426d6f54 - 转Base64:
NmU0ODU3NDU1ODVhNzg0MjY0NDI2ZDZmNTQ=
5. (A2) Cryptographic Failures
5.1 Crypto Basics
1-2关卡:
- 直接Base64解码获取用户名和密码
1-3关卡:
- XOR运算,密钥为
_ - 计算得到:
databasepassword
1-4关卡:
- 使用在线哈希破解网站(如cmd5.org)
- 得到答案:
secret和password
1-6关卡(RSA密钥):
- 将私钥保存为
test.key - 生成公钥:
openssl rsa -in test.key -pubout > test.pub - 生成modulus:
openssl rsa -in test.pub -pubin -modulus -noout - 生成signature并Base64编码:
echo -n "00AE89..." | openssl dgst -sign test.key -sha256 | base64
1-8关卡:
- 运行Docker容器:
docker run -d webgoat/assignments:findthesecret - 以root身份进入容器:
docker exec -it --user=root [容器ID] /bin/bash - 在
/root/下找到密钥文件
6. 关键技巧总结
- HTTP请求分析:始终检查请求和响应头、body、cookie等
- 代理工具使用:熟练使用Burp Suite等工具拦截和修改请求
- 编码转换:掌握Base64、十六进制等编码转换
- 源码审查:F12查看隐藏元素和JavaScript
- 规律发现:观察数据模式(如cookie生成规律)
- 权限提升:尝试修改权限相关参数
- 加密破解:了解常见加密方式及其破解方法
- 容器操作:熟悉Docker基本命令
通过系统性地练习这些关卡,可以全面了解Web应用安全漏洞的原理和利用方法。