暴力破解
基于表单的暴力破解
随便输入一个用户名和密码,然后bp抓包 抓包送入intruder模块 选中第四个模式 为账号和密码分别导入自己的字典,就可以start attack开始爆破了 根据相应的长度判断是否登陆成功 爆破出一个简单的账号密码:admin/123456
验证码
验证码的生成:
前台点击图片时,后台生成验证码以及对应图片,并将图片响应给客户端
验证码的生成算法中一般包含随机函数,所以每次刷新都会改变
验证码的作用:
在每次登录时判断收到验证码与后台的验证码是否匹配
1、防止恶意爆破账号密码(例如上一个流程)
2、防止脚本的批量操作
验证码的认证流程:
1:客户端请求登录页面,后台生成验证码
2:客户端将认证信息和验证码一同提交,后台对提交的验证码与保存的验证码进行比较
3:客户端重新刷新页面,再次生成新的验证码
验证码绕过(on server)
随便输入账号密码以及正确的验证码后登录。 bp抓包,并转到repeater模块。 在该模块多次修改账号密码并发包时可以发现回显没有提示我们验证码错误,就说明此处的验证码在我们再次刷新之前应该都是有效的,或者说该验证码的存活时间比较长,而不是说每一次发包(登录)都会换一个验证码。 那这里就很简单了,输入一个正确的验证码,前台不刷新,intruder模块爆破即可。
验证码绕过(on client)
在客户端的验证码就更简单了, 抓包发现验证码对登录结果完全没有影响 你甚至可以直接删除输入框 删除源码 禁用js 等等都可以直接绕过客户端的验证码
token防爆破?
在这一步会生成一个隐藏的token 正常的登录是完全没有问题的,但是我们是来爆破的 每一次访问都会更改的token小小的加大了我们爆破的难度 不过这一点bp还是可以做到的 尝试了一下,同时爆破用户名、密码、token的方法行不通 pitchfork两个字段各自遍历各的,达不到爆破用户的要求
cluster bomb会吧token也算入笛卡尔积,那就完全废了 所以这里我们半自动自己改用户名
开始正题 老样子加上§§
在option界面,看到responses也能大致猜到这块内容是从页面回显拿东西 下面选中always(也就是让我们每爆破一次就要获取和发送一次token值) 设置为单线程,多线程的访问会相互影响token值 为了方便查看也可以直接将成功结果写入正则 账号密码分别导入字典后,token位选中grep,并写入初值
开始攻击,可以发现token成功的更换,我们也能成功的爆出账号密码
暴力破解小结
防爆破的一些手段
让验证机制不止局限在验证码,图形验证,滑动验证等都可以参考
对认证错误给出次数限制,超出次数就锁定账户一段时间
使用多因素认证
|