前言
来源是最近做的一次渗透测试。
一个管理系统,需要登录才能进入后台。测试 API 接口后,权限比较死,没什么 API 未授权的问题。
密码爆破
页面上登录为多因素认证,需要同时输入账号、密码、短信验证码才可以。
其中,传输的密码是被加密的,不过这个没什么难度,比较简单的对称加密,大模型跑一下就出来了。
经过简单的测试,输入账号密码,短信验证码置空的时候,是不校验短信验证码的(开发写的逻辑很神奇),但是最多尝试五次,输入次数多了就会导致账号被锁定。
没招了,点击发送短信,看看有没有短信轰炸什么的,有的话就写报告交差。
然后,发送短信的功能,是根据传入的用户名后端自己匹配的,也看不到手机号。
发送短信的 API
POST /api/login/sendSMS HTTP 1.1 HTTP/1.1
username=admin&password=一串加密字符是的,这个发送验证码的接口不单是校验了 username,还校验了 password。
如果密码正确,就返回发送成功,如果密码错误,就返回短信发送失败。这个接口,开发并没有做爆破次数校验。
然后,我就在这个接口跑弱口令字典,最后成功发送短信。
于是,用上面验证码置空不校验的缺陷,成功进入后台,后面就没什么可说的了。
总结
测的网站多了,总能遇到一些奇奇怪怪的问题,奇奇怪怪的代码。
也许在后面大模型大规模接管开发之后,就很难看到了。

声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途给予盈利等目的,否则后果自行承担!
如有侵权烦请告知,我会立即删除并致歉。谢谢!
文章有疑问的,可以公众号发消息问我,或者留言。我每天都会看的。
