暴力破解及验证码安全


 验证码客户端验证绕过

只在客户端用js做验证

  验证码由客户端js生成并且仅仅在客户端用js验证。

实验条件:需要安装配置pikachu漏洞练习平台,需要安装Burp suite 2.0工具

 pikachu例子:

 抓包后发送到重发器,输入错误验证码查看响应的提示,没有提示验证码错误,说明是js验证。

测试器中设置变量和有效载荷

进行爆破密码:

 验证码保存在响应html

 例如:索尼验证码实现缺陷:  http://wooyun.2xss.cc/bug_detail.php?wybug_id=wooyun-2012-06634

            将验证码放到写到html中,通过burp获取html中的验证码就可以进行爆破。

 验证码输出在cookie中

有些系统默认不显示验证码,而是在用户输入错误一定次数之后再出现。那是如何判断用户已经错误几次呢?

  1. 在cookie中写入一个标记,例如loginErr = 1,后续错误累加。
  2. 在session中写入一个标记,例如loginErr = 1,后续错误累加。

问题在于,要是攻击者不带cookie提交HTTP请求呢?或者攻击者不断更新Cookie中loginErr的值反复提交呢?这样程序因为无法获取cookie/sessionID,会认为攻击者是首次访问,

无论什么时候,验证码都不会出现。

例子:5173验证码可被绕过  http://wooyun.2xss.cc/bug_detail.php?wybug_id=wooyun-2012-05151

验证码服务端验证绕过

验证码不过期

验证码使用后,没有及时销毁会话导致验证码复用(php中默认有23分钟才能自动销毁验证码)。

pikach上面的例子:

源码解释:

实例:使用没有销毁的验证码,暴力破解密码

输入正确的用户名,错误密码,正确的验证码然后抓包,抓包成功后发到【重发器】-->点击【发送】响应中返回【用户名或密码错误,说明验证码输入正确。

 将重发器中代码发送到【测试器】进行暴力破解设置

有效载荷中设置

爆破成功

 没有进行非空判断

很多时候,遗留了验证过程中验证码为空的情况,例如去掉cookie中的某些值或者请求中验证码参数。

例子:输入cmseasy验证码绕过、ecshop验证码绕过、ecshop暴力破解几个关键字到乌云中查看具体例子。

token防爆破绕过

需求:输入正确(或错误)用户名,错误密码点击login,使用burp抓包爆破密码:

pikach中暴力破解--->token防爆破

已输入正确用户名,错误密码点击login,burp抓包发送到Intruder

Intruder中设置,清除全部选项--->变量只添加password和token,攻击方式选择音叉

 有效载荷--->password密码第一个参数设置选择1,然后复制粘贴保存在本地的常用密码:

有效载荷--->token选择2,有效载荷类型选择【递归搜索】

选项中--->Grep-Extract(从响应在提取有用选项)--->添加在提取的grep项中设置返回响应中的匹配模式,然后点击OK。

 

匹配

 需要将线程数设置为1

开始攻击如下图爆破成功:

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM