输入用户名、密码、验证码后,点击登陆按钮同时将数据包使用burpsuite进行拦截,并使用Repeater模块或Intruder模块进行数据重放,重新发送五次观察页面变化,是否会提示验证码输入错误等信息
示例:
此登录功能时存在图形验证码的,在输入了正确的图形验证码之后进行数据重放,发现图形验证码没有做到及时失效
风险分析:
图形验证码一般是防止使用程序恶意注册、暴力破解用户名密码或者批量发帖而设置的。在页面初始化时服务器向页面发送一个随机字符串,同时在Session里也保存一份,当用户提交时将随机数一起post到后台,通过与Session中保存的值对比,如果不相同,则有可能是恶意攻击。
修复方案:
1、系统在开发时注意验证识别后销毁session中的验证码。
2、限制用户提交的验证码不能为空
3、判断提交的验证码与服务器上存储的是否一致
4、禁止将验证码明文信息发送至客户端
短信验证码绕过漏洞描述:
一些网站使用手机短信登录,短信验证码可被绕过,执行其他操作。
测试方法:
1.请求发送短信,填写任意验证码,然后提交其他操作请求,将验证码参数置空或删除,测试是否可绕过检测;
2.尝试特权验证码,如000000、111111等;
3.同一个短信验证码是否能使用多次;
示例:
正确的逻辑应当是,短信验证码获取后,服务器校验短信验证码的来源以及有效性,使用一次后应该立即失效。但是我遇到的这个就是使用验证码登录后,注销用户登录后再一次使用验证码发现依然登陆成功,也就是短信验证码没有被删除
风险分析:
修改/重置密码、交易操作等功能通常需要短信验证码,若验证码可绕过,攻击者可利用该漏洞进行重置他人密码或转账等危险操作。
修复方案:
1.若存在特权验证码,建议将其删除;
2.应用服务端应严格校验验证码参数是否为空,格式是否正确;
3.关键操作每提交一次请求,应发送新的短信验证码,并且不可继续使用旧的验证码。
短信验证码可暴力破解漏洞描述:
短信验证码位数太短或有效期太长导致可暴力破解
测试方法:
点击发送短信验证码,输入任意验证码,提交请求,使用burpsuite拦截请求,在intruder模块设置验证码参数为枚举变量,这是payload类型为numbers,对验证码进行暴力破解。
示例:
这里的短信验证码可被暴力破解,是因为并没有设置短信验证码使用错误几次后失效,故可被暴力破解
风险分析:
修改/重置密码、交易操作等功能通常需要短信验证码,若验证码可暴力破解,攻击者可利用该漏洞进行重置他人密码或转账等危险操作。
修复方案:
1.短信验证码不少于6位;
2.有效期不超过1分钟;
3.验证码错误次数超过上限应采取账户锁定策略。
短信攻击漏洞描述:
短信攻击时常见的一种攻击,攻击者通过网站页面中所提供的发送短信验证码的功能处,通过对其发送数据包的获取后,进行重放,如果服务器短信平台未做校验的情况时,系统会一直去发送短信,这样就造成了短信轰炸的漏洞。
测试方法:
1、手工找到有关网站注册页面,认证页面,是否具有短信发送页面,如果有,则进行下一步。
2、通过利用burp或者其它抓包截断工具,抓取发送验证码的数据包,并且进行重放攻击,查看手机是否在短时间内连续收到10条以上短信,如果收到大量短信,则说明存在该漏洞。
示例:
点击获取验证码同时拦截数据包
使用burpsuite进行数据重放