0x00:前言
上周做渗透,有一个 sql 注入,负责安全审核的人给开发说你们的程序既然还有 sql 注入,我一年也看不见几个。这句话让我又再次深刻的认识到,渗透测试常规的一些注入跨站漏洞不如以前那么盛了,有点经验的开发写东西都会去考虑到了,再加上修复方法也在逐渐的完善,逻辑类的东西也应该并重的去测。
0x01:分类
我把逻辑类的问题大概总结了一下,大概可以分为十个模块,分别是登录认证模块测试、业务办理模块测试、业务授权访问模块测试、输入 / 输出模块测试、回退模块测试、验证码机制测试、业务数据安全测试、业务流程乱序测试、密码找回模块测试、业务接口调用模块测试。
这次记录的是第九个模块密码找回模块测试。
0x02:密码找回模块测试
1,验证码客户端回显测试
测试方法:在很多的修改密码功能中,第一步都会要求用户输入手机号或者邮箱来验证用户的身份,那么验证码就可能会出现在响应包中,有些程序会将验证码放在响应包中。拦截发送验证码的的请求,查看其 response 的信息,是否包含其验证码,包含验证成功,则存在此问题。
修复方法:避免将验证码回显在响应包中,验证的比对应放在服务端进行。
2,验证码暴力破解测试
测试方法:一般情况下,只有用户自己通过手机或邮箱来收取验证码,但当服务器没有对错误的次数做限制时,则可导致暴力破解。首先应该知道验证码的规律,例如是 4 位数字,或 6 位数字,然后手机发送验证码后,任意输入一个符合规则的验证码,拦截包发送到 intruder,对验证码添加标记进行枚举测试,跑出结果后根据 length 长度来找出正确验证码。
经验之谈:有时候可能会碰到这样的情况,就是枚举时,如果选择的 number,则配置 1111 到 9999 时,以 0 开头的验证码会匹配不到。选择 brute forcer 时,出现问题不能用时。可以导入外部的字典文件,建议存一个四位数验证码字典和六位数字段,测试会经常