漏洞描述
暴力破解漏洞是指系统在登录、验证码、支付密码或 API 认证等环节缺乏有效的失败次数限制、验证码、账户锁定、多因素认证和异常检测,导致攻击者可利用自动化工具反复尝试用户名、密码、短信验证码或密钥组合,从而猜出有效凭证并实现账户接管、数据泄露或权限提升的安全缺陷;防御上通常需要采用强密码策略、多因素认证、速率限制、验证码、账户锁定、登录日志审计和异常行为监控等措施。
1.1基于表单的暴力破解
我们使用burpsuite来完成。
首先随便输入一组账号密码,使用burpsuite抓包,如下图。然后把内容发送到攻击器。
可以发现没有什么限制条件,我们就可以尝试暴力破解密码,即使用常见账号密码多次输入,直到找到正确的。可以利用ai搜索常见账号密码,保存为users.txt和password.txt,方便后续用。
Burp Suite 的 Intruder 模块主要有四种攻击方式:
Sniper(狙击手):只用一组 Payload,依次对每个标记位置单独替换,其他位置保持原值。适合单参数爆破或逐个参数测试,是最常用的模式。
Battering ram(攻城锤):只用一组 Payload,但把所有标记位置同时替换成同一个值。适合多个位置需要相同输入的场景,例如用户名和密码都试同一个值。
Pitchfork(音叉/叉子):使用多组 Payload,每个标记位置对应一组,按顺序同步取值,取到最短列表结束。适合用户名和密码一一对应的场景。
Cluster bomb(集束炸弹):使用多组 Payload,每个标记位置对应一组,并遍历所有组合(笛卡尔积)。适合未知对应关系、需要穷举“用户名 × 密码”等组合的场景,但请求量最大、最耗时。
简单记:Sniper 一次测一个位置,Battering ram 所有位置用同一个值,Pitchfork 多组同步对应,Cluster bomb 多组全组合穷举。仅限授权测试使用。
使用第四个,给账号和密码都加上参数,然后选择指定文件,即保存的txt,然后点击开始攻击。
点击Length进行长度排序,该长度是Response响应报文的长度,登录成功和登录失败肯定返回的响应不同,根据这个原理进行判断,直接找返回长度不同的即可。
1.2验证码绕过(on server)
还是使用bp抓包
我们可以发现,比第一题多了一个参数,可以试一下这个参数能不能一直使用,把数据包发到重发器试一下,多试几次就会发现,账号密码正确时可以登录成功,说明验证码一直有效,接下来按第一题的方法就可以破解成功。
1.3验证码绕过(on client)
通过输入错误的验证码可以发现,验证码的验证是在前端,并不影响后端的数据处理。
在重发器中尝试一下,我们可以看到
验证码不对也可以完成登录,所以可以直接进行暴力破解。如图所示。
1.4 token防爆破
先bp抓包,发到重发器,我们可以发现即使账号密码正确,我们也不能成功登录进去,因为存在一个新的参数token,它会实时更新,用来防止暴力破解。
我们在这里就需要让token更新,打开设置,找到检索—提取,点击添加。然后点击获取响应。
在下方的搜索栏输入token,找到如图所示的这一行,选中数值并复制。
把数据包发到攻击器,选择pitchfork(鱼叉)攻击,把password和token都添加参数,密码就和之前一样。
把token的payload类型选为递归提取,在下面首次请求初始payload中输入刚才复制的值。
开始攻击
可以看到token的值实时变化了,根据长度发现破解成功。
pikachu的暴力破解板块就到此结束了。