一个登录点两个逻辑漏洞-edusrc

最近呢, 也是基础漏洞学的差不多了, 就在edusrc上面实战, 刚开始搞一些信息泄漏啥的, 提交了十几个, 结果就他娘的通过了一个. 咱也就不碰信息泄漏了, 没得意思.

 

关于这个学校测试时也是有坑的, 刚开始找到的统一平台地址登录过之后是废弃的, 我当时就以为这后台是不是不用了, 然后过了一两个小时, 我在做资产搜集的时候, 又发现了一个一样的登录点, 但是目录不一样了, 才发现这狗日的数据是通用的, 但是修改后跳转的登录页面确实假的. 

 

第一个漏洞: 修改密码判断不严谨.

这个就是常说的逻辑漏洞, 修改用户密码. 功能点是在首页的忘记密码处,

这个漏洞利用还是有条件的, 需要学号+绑定的邮箱. 因为我是有个朋友在这个学校上学, 我就通过: site: xxx.edu.cn “我朋友的名字”找他了他的学号. 在通过他的QQ确定了邮箱. 当然了, 这个过程我是没有联系他的啊.

 

利用方式也很简单, 选择验证方式-> 确认账户, 确认账户的时候就把学号+绑定的邮箱输入进去就行了, 进入到认证的时候, 发送验证码的时候抓包吧收件邮箱改成自己的就可以了.

 

 

 

在输入完验证码点击下一步的时候又进行了一次邮箱的修改, 这个时候后台判断的应该是发送得邮箱+验证码, 所以还是要把自己的邮箱写上去.

 

 

 后面就不需要在修改了, 正常输入新密码就可以了, 修改完成以后就是之前说的, 跳转到了废弃的那个登录页, 他妈的. 以后长记性了

 

第二个漏洞: 前端给的权限太大. 修改返回包. 这个就是任意密码修改了, 想改谁就改谁.

算是第一个漏洞的延伸吧, 我在之前的基础上又测了一下, 测试了一下登录成功的返回包和失败的返回包, 看一下吧

登录成功的返回包

 

 

 

 

 

 

 

登录失败的返回包

 

 

 

我是想做直接越权登录的, 但是这个里有一个loginId无法绕过去, 因此无法正常显示登录成功的内容. 但是这里发现了一个叫isFirstLogin的值, 在他的登录页又看到了第一次登录会强制修改密码,   这里返回的false, 也就是说不是第一次, 那要是改成true呢?

{

  "isBindPhoneFlag":true,

  "loginId":"0d288066c83211eb9f2c55dbec8ac3d2",

  "isFirstLogin":false,
  "phone":"************",  手动打码   "success":true,   "username":"21914101016" }

 

 

 

这里我是借鉴登录成功的那个包, 内容都是乱写的, 主要是在isfirstlogin, 成功跳转到首页密码修改.

 

 

 

 

 

这里就算是结束了, 前面说的这玩意给的权限太大了, 你说你把修改密码这个大的权限放在前端干嘛, 其实这里完全还可以再次扩大, 很明显, 修改密码是有一个接口的, 而这个接口没有做任何判断, 因此, 在修改密码提交的时候, 还可以抓个包

 

 

 这里尝试一下随便修改学号, 也是可以修改成功的,    这种接口没有丝毫的判断, 不知道该怎么去形容了.

 

 

 

总结一点: 细心细心, 还是他妈的细心. 什么点都测一下, 返回包的内容都看一下, 可控的参数, 返回包感觉有问题的参数. 都改改试试看, 总会有意想不到的收获.

 

Tags: