暴力攻击者在不知道目标系统的帐户密码的情况下尝试登录目标系统
尝试连续性词典=自动化
词典是一部有效的词典,可以大大提高暴力解读的效率
词典将在下一篇文章中共享
如果一个网站没有对登录界面实施暴力破解措施,或者采取了不合理的措施。
这个网站有暴力漏洞。
用户是否需要设置复杂的密码;
每次认证时是否使用安全的验证码;
是否判断并限制尝试登录的行为
必要时是否采用双因素认证;
.等等。
存在暴力破解漏洞的网站可能会受到暴力破解攻击,但该暴力破解攻击成功的可能性不是100%!
因此,一些网站存在暴力破解漏洞,但管理员可能会忽视这种危害。
词典优化技巧技巧一:
根据注册提示信息进行优化
在目标站点注册以明确帐户密码限制。 例如,目标站点的密码必须至少为6位。 单词
母数的组合可以这样优化词典。 例如,可以删除不符合要求的密码。技巧二:
在管理后台被炸毁的情况下,这种系统的管理员通常很可能是管理员/管理员/根,使用这三个帐户尝试使用任意密码登录,然后查看返回的结果以确定用户名
例如:
如果输入xxx/yyyf,则返回“用户名或密码错误”;
如果键入admin/yyy并返回“密码错误”,则几乎可以确定用户名为admin;
因此,只爆破密码就可以了,效率会提高。
暴力漏洞分析测试流程1、确认登录接口的脆弱性
确认目标有无暴力破解漏洞。 (确认用暴力解读的“可能性”) )
例如,尝试登录—-抓住包—-观察验证元素和响应信息,以确定是否可能被暴力破解。2、对字典进行优化
根据实际情况优化词典,提高爆破过程效率。3、工具自动化操作
配置自动化工具(例如线程、超时时间、重试次数等),进行自动化操作。
基于表单的暴力破解实验burp suite-intruder是http://www.Sina.com/http://www.Sina.com /
可以设定攻击目标,通过proxy发送;target选项卡
指定需要暴力破解的参数并设定为变量,选择攻击模式。
狙击手:狙击手
设置payload以在词典中测试第一个变量,然后在词典中测试第二个变量。
Battering ram :碰撞车
设置payload,替换所有变量-词典的内容,然后一起尝试;
Ptichfork:叉形
为每个变量设置一个payload,并使用相应的词典同时替换变量;
集束炸弹:焦炭束炸弹
必须为每个变量设置payload,并分别用词典的内容组合替换变量。
:
可以设置词典,对词典进行统一的战略处理; 可以设置词典,对词典进行统一的战略处理;Pasitions选项卡:
配置扫描线程、失败重试等
如果设置了与结果匹配的flag:则标识符将区分结果,并在结果栏中显示flag
不安全的验证码-onclientFAQ
使用前端js验证码(纸老虎);
cookie中验证码泄露,容易获得
验证码泄露到前端源代码,容易获得
验证码一定要在服务端认证服务端认证不严格也有相应的问题
不安全的验证码-服务器上的常见问题
(服务端认证不严格)
验证码不会在后台过期,可以长期使用
验证码检查不严,逻辑存在问题
验证码设计过于简单、规则、容易猜测
一、基于表格的暴力账号密码破解管理员123
发现帐户密码错误的帐户不会更改密码
查看提示是否会发生变化,确保树上有洞,然后发现帐户正确
> Bp抓包、发送到爆破模块、设置字典、重放攻击
抓包发送到爆破模块
设置变量
设置字典 这里我们使用数字(由于已知密码是123456 做一个简单的演示)
攻击得到结果 密码为123456
巧用grep-match grep-extract模块
将错误提示 或者 正确提示 复制 添加到match模块
攻击后得到结果会有一栏显示
在extract模块中 直接点击添加 弹窗 在回显报文中 选择需要会显得元素
那么在攻击后的结果中会有一栏 显示 此元素信息
攻击得到结果 发现我们添加的信息
二、验证码绕过(on server)(服务端)(验证码复用)(后端认证) 存在问题:
看源代码
使用过的验证码应该销毁 此关没有进行销毁
Session要设置过期时间 一般为一分钟 此关没有设置
重放模块+爆破模块
随机填写账号密码验证码 bp抓包 将抓到的包的验证码修改为正确的
提示账号密码错误
多发送几次发现验证码虚幻的手套有效 既可以爆破
发送到爆破模块
配置两个字典
配置两个正则,发起攻击
得到结果
三、验证码绕过(on client)(客户端)(前端认证) 重放模块+爆破模块
利用重放模块 右键发送
更改验证码 发现返回数据为账号或者密码错误
可知 这是前端验证
设置攻击模式 两个变量 两个字典
设置两个payloud
设置正则
发起攻击 得到结果
四、Token爆破
https://www.cnblogs.com/KbCat/p/9317545.html
关键 token 不变
抓取返回包 得到token 再把token放入请求包
token只要是用来防御csrf(跨站请求攻击),但无法防止暴力破解。因为当将随机产生的token参数加入到请求包中时。每次请求攻击者只能够盗取到被攻击这的cookice而不能伪造当次请求的token,这是因为token是由服务器随机生成的,只有匹配当次的token,服务器才会与客户端进行连接,否则拒绝连接。而token无法防止暴力破解的原因是因为token是随机生成的,攻击者只要能够想办法获取到前端的token值即可进行暴力破解。
进入靶场页面是一个登录页面、该关卡是一个token的暴力破解关卡,抓取登录请求包即可看出再包中添加了token字段,该token字段也是可以放在cookie中存储的。
1. token介绍
Token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位。如果这个 Token 在服务端持久化(比如存入数据库),那它就是一个永久的身份令牌。
Token 完全由应用管理,所以它可以避开同源策略
Token 可以避免 CSRF 攻击(http://dwz.cn/7joLzx)
Token 可以是无状态的,可以在多个服务间共享
2. 利用burp进行暴力破解
在网站上随便输入用户名和密码 用burp进行抓包
可以看到对应的参数,选取password和token进行爆破,因为我们是一次password对应上一次服务器返回的一个token,所以选择pichfork模式。(Pichfork(草叉模式):类似于Battering ram模式,但是使用的是多个字典,并且多个点的字典内容一一匹配进行爆破)
再进入intruder模块options中设置抓取返回数据包的token值,
将包发送至intruder ctrl+i 或者右键 破解类型选择pitchfork 设置password和token是变量
在options中的grep-extract中打勾点击add添加过滤条件 点击refetch response找到响应包中的token 选中复制token值点击确定
在Redirections重定向功能中,选择always始终跟随url重定向
点击response按钮,会发送一次请求,显示返回的数据包,我们在数据中查找token的值并选中,其实也可以在前面分析时记录token值的位置,直接添加正则表达式,便不需要发送这一次请求了。
这一串token值需要记录下来,等会有用,发送第一个数据包的token值就来之于此。
为了方便观察暴力破解我们可以提取提交登录请求后的返回值,显示到结果页面、更为直观的看出账号密码是否正确登录成功。账号密码错误会返回username or password is not exists~,搜索该串字符串,添加正则。
将最下方的redirections选择为always
设置payload set为1 type为runtime file 文件选择为密码字典
第一个payload选择一个密码字典
set为2 type为recursive grep时 复制刚才的token值到first request
第二payload选择grep模式,选择提取token值的正则表达式,将我们之前保存的token值粘贴到该空框中,作为第一个发送包的token值。
点击start attack进行破解时遇到了报错
需要在options中将线程设置为1
设置进程数,设置进程数为1,每连接只发出一个请求包,若同时发送几个请求,会返回多个token,暴力破解将会失败,bp也会报错
重新爆破 爆破完成后可以看到相应包长度不同的包中有一个登录成功
可以多设置一个字段 得到 一个回显
方便我们的得到结果
五、防范措施
●设计安全的验证码(安全的流程+复杂而又可用的图形) ;
●对认证错误的提交进行计数并给出限制,比如连续5次密码错误,锁定2小时;
●必要的情况下,使用双因素认证;
聊一聊token防爆破
一个简单的token实例
一般的做法:
1、将token以”type= ‘hidden’ ”的形式输出在表单中;
2、在提交的认证的时候一起提交,并在后台对其进行校验;
但,由于其token值输出在了前端源码中,容易被获取,因此也就失去了防暴力破解的意义。
一般Token在防止CSRF 上会有比较好的功效。