暴力破解(Burte Force)

以弱口令的探测与测试为例

  • 弱口令
  • 暴力破解
  • 暴力破解弱口令
    • 基于表单的暴力破解
      • 四种攻击类型
    • 验证码绕过(on server)
    • 验证码绕过(on client)

弱口令

弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。弱口令指的是仅包含简单数字和字母的口令,例如"123"、"abc"等,因为这样的口令很容易被别人破解,从而使用户的计算机面临风险,因此不推荐用户使用。

暴力破解

Burte Force(暴力破解)概述
“暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。
理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。 我们说一个web应用系统存在暴力破解漏洞,一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的“可能性”变的比较高。 这里的认证安全策略, 包括:

1.是否要求用户设置复杂的密码;
2.是否每次认证都使用安全的验证码(想想你买火车票时输的验证码~)或者手机otp;
3.是否对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等);
4.是否采用了双因素认证;
…等等。

千万不要小看暴力破解漏洞,往往这种简单粗暴的攻击方式带来的效果是超出预期的!

暴力破解弱口令

实验环境是pikachu靶场的暴力破解模块

基于表单的暴力破解

先随便输个用户名和密码试试
暴力破解(Burte Force)_第1张图片
提示用户名和密码不存在,直接采用暴力破解。
具体方法是:随便输个用户和密码,使用 burpsuite 抓包
暴力破解(Burte Force)_第2张图片
可以看到我们输入的用户名和密码。快捷键 ctrl+I 将包发送到 intruder 模块。进入 positions 模块更改攻击类型为 Cluster bomb,并选择要破解的变量 username 和 password (注意选择变量的先后顺序,这关乎到后面对应内容的破解)
暴力破解(Burte Force)_第3张图片

四种攻击类型

在上述,我们为什么要把攻击类型改为 Cluster bomb 呢?首先我们要了解 burpsuite 的四种攻击类型

1、狙击手模式(Sniper)

Attack No. Position A Position B
0 1 null
1 2 null
2 null 1
3 null 2

添加一个参数,且假设 payload 有两个,那么就会执行两次;
添加两个参数,就会挨个来,第一个参数开始爆破时,第二个不变,如此这样,就会执行四次

我个人理解来看,这是唯一一个多个参数不能同时爆破的攻击类型

2、攻城锤模式(Battering ram)

Attack No. Position A Position B
0 1 1
1 2 2

与sniper模式不同的地方在于,同样情况下,攻击次数减半,且每次两个位置用相同的密码

3、草叉模式(Pitchfork)

Attack No. Position A Position B
0 1 3
1 2 4

可以多组密码本payload,又与攻城锤模式相同的地方在于一一对应

4、集束炸弹模式(Cluster bomb)

Attack No. Position A Position B
0 1 3
1 2 4
2 1 4
3 2 4

跟草叉模式相似的是多个密码本对应多个位置,不同的是不再是一一对应,而是交叉组合(笛卡尔积),每一个密码本里的密码都对应与另一密码本所有密码

所以为什么选择 Cluster bomb 就显而易见了。我们此时并不知道 username 和 password 的情况,所以我们要让两个变量采用最多的组合方式来进行测试。

继续上述爆破操作,再进入 payload 模块,此时前面所说的顺序性就体现出来了,由于我们先选择的变量是username,所以我们先添加猜测的 username 。如图,此处因为我事先知道了存在的三个用户,所以就针对性的添加进去了,除此额外添加了几个其他不存在的用户名。(通常暴力破解需要借助字典,里面包含了各种猜测的用户名或密码等,但是由于我没有这个软件…所以…有字典的情况下,直接选择 load 加载就可以了)暴力破解(Burte Force)_第4张图片
之后添加猜测的 password,步骤跟上面一样
暴力破解(Burte Force)_第5张图片
之后可以进入 options 模块选择攻击的线程等(多线程有助于加快破解速度),此处由于我添加的猜测数据很少,可以直接攻击,点击 start attack,得到最终的结果。我们可以根据 status 和 length 两个模块来判断是否成功。此处发现请求1、10、18与别的不同,说明它们仨肯定不简单。
暴力破解(Burte Force)_第6张图片
尝试登陆成功
暴力破解(Burte Force)_第7张图片

验证码绕过(on server)

看这题登录要输入验证码了
暴力破解(Burte Force)_第8张图片
跟上面一样,我们随便输入一个用户名和密码后抓包,并把包发送到 repeater 模块,点击多次 go,发现并没有提示验证码错误的信息,说明验证码可以重复使用。暴力破解(Burte Force)_第9张图片
这一关的验证码是在后台服务端生成后放到前端客户端,如果后台服务端验证码刷新了,则上一次的验证码失效。抓包后,发现有验证码参数,经测试直接放入Intruder模块爆破即可,不要在 Proxy->Intercept 模块放包后刷新页面,因为刷新页面后后台服务端的验证码也会随之刷新,从而使上一次验证码失效,导致爆破不了。

后续操作就跟前一题一样了,改攻击类型和爆破点
暴力破解(Burte Force)_第10张图片
输入测试字典后攻击(这边我手贱多输了一个admin)
暴力破解(Burte Force)_第11张图片
成功获取用户名和密码

验证码绕过(on client)

跟前面一样,需要验证码
暴力破解(Burte Force)_第12张图片
跟前面一样也是尝试乱输多次提交抓到的包,发现跟前面不一样的是前端验证码使用的是前端 js 脚本生成的
暴力破解(Burte Force)_第13张图片
如何绕过呢?既然是前端的 js 生成的,那就把 js 禁用了,发现验证码也确实没了
暴力破解(Burte Force)_第14张图片
之后抓包,要注意的是,抓包显示的信息仍有显示验证码的信息,我们需要手动删除。这下验证码就彻底阻碍不了爆破了。
暴力破解(Burte Force)_第15张图片
操作都跟之前一样
暴力破解(Burte Force)_第16张图片
随便点击一个,察看response(之前的这步没截上图),发现 login success
暴力破解(Burte Force)_第17张图片

你可能感兴趣的:(网络安全,web)