0x00 前言
书接上回~
0x01 Password Reset
Security questions
这题告诉了我们webgoat用户的安全问题,让我们找回别的用户tom或者admin
一开始还以为这里存在什么逻辑问题结果一看发现,其实这题就是爆破,爆破颜色就行了
Creating the password reset link
说实话这道题目还是蛮有意思的,这里由于要用到邮件系统,所以我还需要打开webwolf,这是webgoat自带的邮件系统
我们来看一下题目的意思,题目这里要求我们重置tom的密码,然后以tom的用户身份登录进去
参考链接:https://pvxs.medium.com/webgoat-password-reset-6-634ea940e0e9 (挂梯子)
我这里还是直接查看源码看一下可能存在的漏洞点在哪里
我们首先进行密码的重置看一下请求,然后后端直接进行一个搜索
定位到如下文件
我们看到我们红框的那行代码,可以发现后端获取了我们请求头中host的数值,然后在发送邮件的过程中引入了host
所以我们可以在这个host这里做文章
我们先正常来看一下,先重置一下我们自己账号的密码
在邮箱中我们收到了重置密码的邮件
点击链接 ,发现url中最后的uuid就是我们当前的用户身份凭证
所以说我们如果能劫持他人的uuid那么我们就可以重置他人的密码了
所以大致流程如下:
- 将host修改为我们自己可控的vps,这里我填了webwolf 也就是本地的邮件服务器,email还是tom@webgoat-cloud.org
- 这样邮件就发送到了 tom 的邮箱中了,同时找回密码的链接变成了
localhost:9090/WebGoat/PasswordReset/reset/reset-password/tom的uuid
- 然后到我们的邮件服务器中查看劫持到的uuid
然后通过替换uuid 实现密码重置
修复建议
修复起来其实很简单我们只需要固定我们的host就可以了,其实归根结底就是太相信用户的输入了,这也是很多安全问题存在的原因
0x02 总结
相对上部分这一部分设计代码审计的比较少,个人觉得这里重点还是在于思路的学习,特别是第二题让我又学到了新姿势。