学号越界,edu 密码秒破:零成本漏洞

学号越界,EDU密码秒破:零成本漏洞实验回顾。曾经有个周末,闲来无事便想练练手。刚把统一身份认证平台拉入靶场,看着那些毫无新意的界面,唯一的亮点就是“忘记密码”那一栏,干净得像块刚擦好的黑板,等着谁上去写新答案。 第一次操作还是挺正规的,按提示填入姓名、学工号还有手机号,系统马上回复“验证码已发送”。不过很快我就发现了猫腻,姓名和手机号都不用填,只要输入学号就能触发重置。更重要的是,系统根本不核对验证码里的姓名和手机号是否匹配。 这就意味着只要拿到目标的学号,完全可以跳过“主人”直接改密。我连续试了十几个账号,发现有个同学的学号特别显眼——6021。我试着在重置页面只输入6021,系统马上发来了验证码。把验证码填进去后,新密码就生效了。 登录后台后弹出提示让改密码,我顺手改成了“123456”。这时候我才反应过来,这漏洞不光是一个人能利用,是批量可复制的。回头看之前抓的表单就明白了:服务器端压根没对姓名和手机号做交叉验证,只要学号格式对了就能提交。 这样一来攻击者只要遍历学号后四位,就能快速找出没绑定手机的账号。再随便填个能收到短信的号码就能完成无差别重置。我随便写了个脚本去扫描后四位:比如2179查不到;352已绑定手机;而6021就可以随意改。 只花了三分钟就从一千个样本里找出了三个裸奔账号。照这样算下去全校三万多人理论上只扫最后两位就行,效率跟传统字典攻击差不多。所有发现的漏洞我都通过Edusrc平台上报了,没有做恶意操作。平台那边很快下线了重置接口并加固了验证。 复盘一下这次实验:运气和对原理的理解各占一半比例。剩下的0%全是留给下次“例行”踩点的。