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):

  1. 设置代理并开启拦截
  2. 修改三处:
    • 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关卡

  1. 观察返回的Set-Cookie头:
    hijack_cookie=3805806745390473234-1702722939700
    
  2. 发现由两部分组成,都是递增的
  3. 使用Burp Suite爆破:
    • 设置Payload
    • 观察返回长度不同的响应

4.2 Insecure Direct Object References

2-2关卡

  • 直接使用tom/cat登录

2-3关卡

  • 查看请求响应,发现隐藏的roleuserId属性

2-4关卡

  • 猜测profile URL:/WebGoat/IDOR/profile/2342384

2-5关卡

  1. 爆破获取其他用户信息(如id=2342388)
  2. 修改请求:
    • GET改为PUT
    • body中添加:color=redrole=低级别

4.3 Missing Function Level Access Control

3-2关卡

  • 查看HTML源码,发现隐藏菜单链接:UsersConfig

3-3关卡

  1. 访问隐藏链接users
  2. 修改Content-Type为application/json
  3. 获取用户信息(包括jerry的hash值)

3-4关卡

  1. 直接访问users-admin-fix返回403
  2. 使用POST修改当前用户权限:admin=true
  3. 再次使用GET获取用户列表

4.4 Spoofing an Authentication Cookie

4-2关卡

  1. 观察两个用户的cookie:
    • webgoat: NmU0ODU3NDU1ODVhNzg0MjY0NDI3NDYxNmY2NzYyNjU3Nw==
    • admin: NmU0ODU3NDU1ODVhNzg0MjY0NDI2ZTY5NmQ2NDYx
  2. Base64解码后得到16进制:
    • 6e485745585a7842644274616f67626577
    • 6e485745585a784264426e696d6461
  3. 再次解码得到:
    • nHWEXZxBdBtaogbew
    • nHWEXZxBdBnimda
  4. 发现规律:nHWEXZxBdB + 用户名反转
  5. 构造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)
  • 得到答案:secretpassword

1-6关卡(RSA密钥):

  1. 将私钥保存为test.key
  2. 生成公钥:
    openssl rsa -in test.key -pubout > test.pub
    
  3. 生成modulus:
    openssl rsa -in test.pub -pubin -modulus -noout
    
  4. 生成signature并Base64编码:
    echo -n "00AE89..." | openssl dgst -sign test.key -sha256 | base64
    

1-8关卡

  1. 运行Docker容器:
    docker run -d webgoat/assignments:findthesecret
    
  2. 以root身份进入容器:
    docker exec -it --user=root [容器ID] /bin/bash
    
  3. /root/下找到密钥文件

6. 关键技巧总结

  1. HTTP请求分析:始终检查请求和响应头、body、cookie等
  2. 代理工具使用:熟练使用Burp Suite等工具拦截和修改请求
  3. 编码转换:掌握Base64、十六进制等编码转换
  4. 源码审查:F12查看隐藏元素和JavaScript
  5. 规律发现:观察数据模式(如cookie生成规律)
  6. 权限提升:尝试修改权限相关参数
  7. 加密破解:了解常见加密方式及其破解方法
  8. 容器操作:熟悉Docker基本命令

通过系统性地练习这些关卡,可以全面了解Web应用安全漏洞的原理和利用方法。

WebGoat通关教学文档 1. WebGoat简介 WebGoat是OWASP组织开发的用于进行WEB漏洞实验的应用平台,用于演示WEB应用中存在的安全漏洞。基于Java开发,包含了OWASP Top10的漏洞训练课程。 2. 环境搭建 最新版本 :2023.8 安装方式 (推荐Docker): 访问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)输入: 3-6关卡 : 查看请求参数 3.4 CIA Triad 介绍数据三要素: 机密性(Confidentiality) 完整性(Integrity) 可用性(Availability) 4. (A1) Broken Access Control 4.1 Hijack a session 1-2关卡 : 观察返回的Set-Cookie头: 发现由两部分组成,都是递增的 使用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 Base64解码后得到16进制: 6e485745585a7842644274616f67626577 6e485745585a784264426e696d6461 再次解码得到: nHWEXZxBdBtaogbew nHWEXZxBdBnimda 发现规律: 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 生成公钥: 生成modulus: 生成signature并Base64编码: 1-8关卡 : 运行Docker容器: 以root身份进入容器: 在 /root/ 下找到密钥文件 6. 关键技巧总结 HTTP请求分析 :始终检查请求和响应头、body、cookie等 代理工具使用 :熟练使用Burp Suite等工具拦截和修改请求 编码转换 :掌握Base64、十六进制等编码转换 源码审查 :F12查看隐藏元素和JavaScript 规律发现 :观察数据模式(如cookie生成规律) 权限提升 :尝试修改权限相关参数 加密破解 :了解常见加密方式及其破解方法 容器操作 :熟悉Docker基本命令 通过系统性地练习这些关卡,可以全面了解Web应用安全漏洞的原理和利用方法。