WebGoat代码审计-04-身份认证缺陷(下)
WebGoat代码审计-04-身份认证缺陷(下)
0x01 前言
- 接下来讲一下其他的两种身份验证
0x02 Password Reset 密码重置
- 密码重置这里主要也是以业务逻辑漏洞居多。
1. Password Reset PageLesson2 使用 WebWolf
源码部分
源码文件是 SimpleMailAssignment.Java
先看登录界面
- 这里的第 56 - 67 行,简单的身份认证,当 username 和 password 都正确,则登录。
第 58 - 60 行,基础的 Java 语法讲解
1 | public AttackResult login( { String email, String password) |
看了很久都感觉没有洞,后面查了才知道这题只是让我们感受一下 WebWolf,并不是直接挖洞哈哈哈哈哈
题目部分
- 发送一下忘记密码的邮件即可
再登录即可,只是让我们感受一下 WebGoat 而已,晕……
- 解出题目之后是不会变色的,不必在意
2. Password Reset PageLesson4 爆破密保
源码部分
- 获取输入的第 56,57 行拉出来单独讲解一下 getOrDefault
参数说明:
- key - 键
- defaultValue - 当指定的key并不存在映射关系中,则返回的该默认值
返回值
返回 key 相映射的的 value,如果给定的 key 在映射关系中找不到,则返回指定的默认值。
1 | String securityQuestion = (String) json.getOrDefault("securityQuestion", ""); // 获取当前参数的 "securityQuestion" 值,若没有 "securityQuestion",则返回 "" |
分析完毕,看到上面的 static 中有一些字符,直接尝试爆破
题目部分
抓包,并将颜色部分添加 dollar 符,进行爆破
再发包,成功。
- 这也给我们的渗透攻击提供了一些思路,在实际的渗透测试当中,对于回答密保问题来验证身份,也可使用爆破。
- 正确的防御手法应该是添加验证码。
3. Password Reset PageLesson5 关于密保的小 tips
这里让我们写密保时,不要写真实的答案,不然会被社工。
选 favorite color
4. Password Reset PageLesson6 修改重置密码的链接 Creating the password reset link
- 题意是让我们创建一个密码重置的链接,这种情景需要先行理解一下。
我们邮箱中收到重置密码的邮件时,通常都会发给我们另外一个 Web 地址,上面是去往密码重置的 Web 界面。
在此时,若我们修改了这个密码重置的 Web 链接。
举个例子,Tom 的邮箱对应的地址是 10.48.244.196:8011,那么 8011 这个端口就是专门为了 Tom 设置的。假设我的账户名叫 Jerry,邮箱的地址是 10.48.244.196:8022,那么我先请求一个 “forget password” ,名字是 Tom 的邮箱,再将去到的 Host 修改为我自己的 “10.48.244.196:8022”;若后台不加以任何的限制,我们就可以越权修改 Tom 的密码。
本道靶场就演示了这么一个情况。当我们输入要找回密码的邮箱时,会将链接发送道我们邮箱,点开链接才是修改密码的。
- 攻击思路已经比较清楚了,我们再看一看源码
源码部分
- 主要是看发送密码重置链接的源码
总体上比较好理解,为了帮助其他小伙伴理解,还是细讲一下吧
第 67 - 69 行,几个变量的定义及赋值
1 | String resetLink = UUID.randomUUID().toString(); // resetLink 变量的值是由 UUID 产生的,至于 UUID 是一串随机数序列 |
后面的判断语句,判断 host 当中是否存在 WebWlof 服务对应的端口与 Host;之后再产生一个 Response 包中的 Session。
- 很显然,就是这一句判断语句不够精确,所以才会导致漏洞,对应的攻击手段如下。
题目部分
先到忘记密码的界面,输入 tom@webgoat-cloud.org
,并抓包。
接着修改 Host 为 localhost:9090,也就是 WebWolf 的地址,这样子的话,原本是 Tom 忘记密码的操作就到了我们的邮箱上。
再到 WebWolf 下的一个 Incoming requests
下,查看请求。
再访问 http://124.222.21.138:9000/WebGoat/PasswordReset/reset/change-password 即可,因为 Tom 的请求的 Host 就为此,输入密码重置即可。
修复方式
固定我们的host就可以了,其实归根结底就是太相信用户的输入了,这也是很多安全问题存在的原因。
0x03 Secure Passwords
这里的和很多的业务逻辑漏洞是重复的,就简单过一遍靶场吧。
1.Secure Passwords PageLesson4 防爆破的密码
这里输入一传强密码即可,随意输入都可以 ~
我这里的答案是 1!22@Misliq!39
- 本文标题:WebGoat代码审计-04-身份认证缺陷(下)
- 创建时间:2022-04-07 16:16:14
- 本文链接:2022/04/07/WebGoat代码审计-04-身份认证缺陷(下)/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!