验证码

验证码出现在很多地方,用来防止暴力破解以及进行身份验证,如果验证码设计存在漏洞,会让攻击者进行任意登录或者找回,危害很大。

一、验证码回显
1.验证码在数据包中显示出来:
用发送验证码时使用bp抓取数据包,从数据包中观察是否含有验证码,如果有,可以直接改包利用。
2.验证码不回显:
尝试抓包,在bp中右键数据包,选择do interscept ->Response to this request,对比输入正确的验证码和错误的验证码之后状态码的数字,比如正确为1,错误为3,尝试输入错误的验证码后,将状态码改成1,看看能否成功。不过这是因为验证基于前端或者本地浏览器,大概率不成功,如果别人验证用的是后端,那想必是不能成功的。

二、接口调用错误
1.短信轰炸:网络上有些发送验证码的服务不能防止重发的话,利用这些接口,反复给某个号码发送大量验证码的短信。

三、修改用户指向
1.当点击找回密码时,可能会给账号的邮箱发送修改密码的邮件,邮件之中有重置密码的链接,观察该链接是否包含可以由我们自行修改的变量,比如说用户名,尝试修改用户名看看是否能重置其他用户的密码。不过大概率是不行的,因为会有验证。但是如果是白盒测试,那么可以审计源码。

#知识点:

1、找回密码逻辑机制-回显&验证码&指向

2、验证码验证安全机制-爆破&复用&识别

3、找回密码-客户端回显&Response状态值&修改重定向

4、验证码技术-验证码爆破,验证码复用,验证码识别等

#详细点:

-找回密码流程安全:

1、用回显状态判断-res前端判断不安全

2、用用户名重定向-修改标示绕过验证

3、验证码回显显示-验证码泄漏验证虚设

4、验证码简单机制-验证码过于简单爆破

-验证码绕过安全:

1、验证码简单机制-验证码过于简单爆破

2、验证码重复使用-验证码验证机制绕过

3、验证码智能识别-验证码图形码被识别

4、验证码接口调用-验证码触发机制枚举

#安全修复方案:

-找回机制要进行每一步验证-防绕过重定向

-找回机制要进行服务端验证-防res数据修改

-找回机制要控制验证码安全-防验证码攻击

-验证码接口需验证后被调用-防接口被乱调用

-验证码引用智能化人工判断-防验证码被识别

-验证码采用时间段生效失效-防验证码被复用


#phpun-res值修改&验证码回显&爆破

res修改-绑定手机号时修改返回状态值判定通过

验证码回显-绑定手机号时验证码前端泄漏被获取

验证码爆破-知道验证码规矩进行无次数限制爆破

#某APP-res值修改&验证码接口调用&复用

res修改-找回密码修改返回状态值判定验证通过

验证码接口调用-抓当前发送验证码数据包后调用

验证码复用-抓第一次验证通过的验证码进行复用

#seacms-验证码识别&找回机制对应值修改

-找回机制对应值修改:

注册两个帐号,尝试找回密码,重置连接重定向绕过

代码审计后分析Poc:

member.php?mod=repsw3&repswcode=y&repswname=targetUser

-验证码识别:xp_CAPTCHA

https://github.com/c0ny1/captcha-killer

https://github.com/smxiazi/NEW_xp_CAPTCHA

使用环境:windows 10 python3.6.5

安装使用:具体看直播操作

1、burp安装jypython后导入py文件

2、安装所需库后python运行server.py

3、抓操作数据包后设置参数设置引用

参考案例:https://www.cnblogs.com/punished/p/14746970.html

应用:爆破密码时,接口调用时,测试其他时等

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注