某个无聊的夜晚,本菜鸡打开补天专属厂商列表,准备挖一波漏洞补贴家用。打开某专属厂商,看了下收集的域名范围,使用OneForAll进行了一波子域名收集,打开了某个子域名进行了一波漏洞挖掘。
打开域名发现是一个登录页面,登录口无验证码,于是拿出字典进行了一波爆破,可惜没有爆出任何有用的账号密码,只获得几个用户名,如test、lc等。再次浏览页面,发现了此处的忘记密码功能,从此打开了一波新天地。
漏洞一 任意密码重置
此处没存图,大概表述一下,忘记密码功能处需要填入手机号,然后发送验证码,输入正确验证码后进入下一步进行密码重置操作。首先,我们没有此系统用户的手机号,尝试输入上述爆破获得的用户名发送验证码,无法发送;尝试输入自己的手机号,无法发送。
我们需要此系统用户的手机号,我当时想到了三个办法:1)通过github等搜集用户泄露的手机号;2)强行爆破;3)猜测系统中有测试用的手机号,如13333333333、13888888888等等。幸运的是,此处通过手机号13333333333成功发送短信验证码,说明系统中存在此手机号。查看我们发送短信验证码的数据包,其中有个参数length引起了我的注意,length的值为6,猜测是短信验证码的长度,将length改为1,再次发送。
根据上一步推测,短信验证码长度是由length参数控制的,接下来我们可以通过依次尝试输入0-9来猜测短信验证码,当我们输入0的时候成功进入重置密码页面,输入新密码成功修改。
漏洞二 越权
输入上一步重置后的账号密码成功进入用户后台页面,找到客户列表功能,发现此账号没有任何的客户信息
查看数据包,发现owner参数的值指的是当前用户的id值,尝试将id值改为上述获得的test、lc等等,依然没获取任何数据;接下来尝试将owner参数置空,成功获取到了20w条客户数据