下午1点28分50秒,教育SRC某大佬爆出某校的统一身份认证系统存在越权漏洞,可以修改任意用户密码。这可是新鲜的0day啊,虽然看不到详情,但是在内部人员透露了一点方向后还是独立复现出来了,看不到原作者怎么搞得,可能不一样但都能用……

认证流程

首先我们看看这个流程,先是问一下账号和验证码
2020-02-04_17-35-34.png
接着检查一下电话号码是否匹配,匹配就发验证码
2020-02-04_17-36-26.png
然后检查验证码
2020-02-04_17-38-57.png
最后就是重置密码啦
2020-02-04_17-39-47.png
整个流程还算正常,然而根据内部人员提示的方向就是密码重置那么就要好好观察一下这个。

BUG触发

首先尝试了几波伪造请求没什么好玩的,那么估计就是和重放相关的,试了下重放最后一步,在验证成功的情况下可以无限制重置,既然前端请求中没有包含账号相关的信息,那么状态必然是通过JSession保存在服务端,那么可以大胆猜测服务端保存了第一次的用户名+是否验证通过的信息。于是乎就有一个问题,如果开发时疏忽在第一步后没有重置验证通过的标记,那么在验证通过的前提下重放第一次的请求,即可伪造任意用户实现重置密码,试了下果然,室友手机接到了重置成功的短信了:)

后续…

然而后续问了问网络中心,结果他们竟然只保存了用户名,所有验证都是在前端做的……所以不需要登陆重放第一步和最后一步即可重置任意密码emmmmm……
发现这种越权在教育系统还是很多的难道是传统艺能?某次HW时也挖到了好几个……

时间节点

  • 2020-02-04:漏洞发现并上报
  • 2020-04-07:复测发现漏洞已经修复
  • 2020-06-23:漏洞公开