代码虽设置有验证码模块,但未对验证码进行校验,随机输入就可验证成功;
验证码可控某些系统获取验证码的方式为通过参数的方式去加载,比如http://www.123.com/yanzhengma.php?code=**** 等,攻击者就可以尝试将参数code的值改为undefined,即设为控制;也可以通过便便携脚本的方式获取验证码并传入验证流程。
验证码重复使用应用程序设置了验证码校验机制,但是验证码可重复使用,没有过期限制,相当于无验证机制。一般是在某一段时间内,无论登录失败多少次,只要不刷新页面或者不刷新验证码,就可以无限次的使用同一个验证码来对一个或多个用户帐号进行暴力猜解。换句话说,攻击者可以在同一个会话下,在获得第一个验证码后,后面不再主动触发验证码生成页面,并且一直使用第一个验证码就可循环进行后面的表单操作,从而绕过了验证码的校验作用,对登录进行暴力猜解。
验证码有规律验证码有生成规则而非随机验证码,比如某些系统会设置验证码为时间戳的后6位。
验证码包含于返回包中由于开发在写代码时不严谨导致通过抓包可在返回包中查看以明文或者简单加密的验证码,这种情况相当于验证码直接返回,攻击者可利用此漏洞进行任意账户注册、任意用户密码重置、修改绑定信息等。
验证码可识别若验证码过于简单,就可以使用工具对图案进行识别,比如验证码识别工具Pkav HTTP Fuzzer。
验证码输出至HTML页面应用程序登录功能、找回密码等处设置了短信/邮件验证码校验机制,但验证机制存在问题,发送的验证码直接输出到客户端HTML页面。
0x04 代码示例Pikachu漏洞练习平台验证码绕过(on server) 源码\vul\burteforce\bf_server.php文件中,在用户名、密码和验证码均不为空的情况下判断输入验证码是否与生成后保存在session中的验证码相同,但比较完后并没有删除该session,导致下一个数据包输入该验证码也会判断正确,出现验证码重复使用漏洞。