(一)基于表单的暴力破解

1.打开 kali 中的 burpsuite 软件。点击 proxy 界面,在 burpsuite 中 open brower (个人习惯直接使用 bp 中自带的 浏览器,如果要使用 kali 中的浏览器,需要安装 FoxyProxy 的插件,具体步骤可自行搜索查找),同时打开 intercept 拦截开关。

image-20260214212214575

2.在 browser 中输入靶场的网址。这里的账号密码就是需要破解的地方。首先我们先随便输入一下账号和密码,然后点击 login。
image-20260214212531375

3.此时,在 burpsuite 中就拦截到了这个登录的数据包。选中该数据包,将此数据包 send to intruder。

image-20260214212823042

4.点击 intruder,根据实际需求,选择相关方式,分别为:

这四种攻击模式是 Burp Suite Intruder 模块的核心功能,用于自动化测试 Web 应用的安全性,它们在处理 payload 位置和组合方式上有着本质区别,适用于不同的测试场景:

image-20260214213622929

  • Sniper attack(狙击手攻击)
    这是最基础的攻击模式,它会将一个 payload 集合中的每个 payload 依次插入到每一个定义好的 payload 位置中,每次只替换一个位置,其他位置保持不变。
    它适用于对单个参数进行暴力破解或模糊测试,比如测试登录框的用户名或密码字段,或者测试某个 URL 参数是否存在 SQL 注入。

  • Battering ram attack(攻城锤攻击)
    这种模式会将同一个 payload 同时插入到所有定义好的 payload 位置中。也就是说,它会遍历 payload 集合,每次取出一个 payload,然后把这个 payload 同时填入所有位置。
    它适用于测试多个参数需要同时满足相同条件的场景,比如测试多个输入框是否都对某个特殊字符敏感,或者测试多个参数是否都存在相同的注入点。

  • Pitchfork attack(叉子攻击)
    这种模式需要多个 payload 集合,每个 payload 位置对应一个 payload 集合。它会并行地从每个集合中取出一个 payload,然后将它们分别填入对应的 payload 位置。
    它适用于测试多个参数之间存在关联的场景,比如测试用户名和密码的组合,或者测试多个相关联的参数是否能触发特定的逻辑错误。

  • Cluster bomb attack(集束炸弹攻击)
    这种模式也需要多个 payload 集合,每个 payload 位置对应一个 payload 集合。与 Pitchfork 不同的是,它会遍历所有可能的组合,即第一个集合的每个 payload 会与第二个集合的每个 payload 组合,依此类推。
    它适用于测试多个参数之间所有可能的组合,比如测试用户名和密码的所有可能组合,或者测试多个参数的所有可能输入是否能触发漏洞。这种模式生成的请求量最大,测试最全面,但耗时也最长。

PS:这里我们做一个前提假设,假如我们已经知道该登录接口的用户名为 admin,这里仅需要破解该用户的密码,所以我们此时选择 sniper attack 模式。

在密码的数据上添加标签,然后倒入密码文本,点击 start attack。进行破解。在 kali 的 /usr/share/wordlist 文件中,自带了许多密码本,可用于简单的测试。

image-20260214215058395

5.查看具体情况,可以根据 status code 和 length 的情况进行初步的查看,code 为 200,长度明显与其他不一致的可以重点查看,最后通过查看 response 的 render 具体查看返回的情况。

image-20260214230404412

通过上图,可以看出 该网站的登录接口,用户名为 admin,密码为 12346

(二)验证码绕过(on server)

这种服务端提供的验证数据的情况,其实在第一次拦截的时候,人工填写正确即可。后续的操作,与基于表单的暴力破解一致。

image-20260215190141869

具体的步骤如下,如有省略,可参考上一小节的步骤。

image-20260215190654926

可以发现,爆破成功,其实这里打开其他数据包,可以发现再次返回的验证码是一致的,因此,可以理解为,在多次进行密码尝试的过程中,对于服务器来讲,仅认为客户端发动了一次登录请求。

(三)验证码绕过(on client)

此类型的验证码,主要是在前端页面进行了验证码的生成和验证,主要的思路一种是将页面另存为本地的html,将里面的验证码验证的部分进行处理(删除、设为固定值、或者直接将验证的直接返回 true)。

验证码生成函数:

image-20260215202308034

验证码验证函数:

image-20260215202347483

第二种方式,其实和上面的步骤一致,因为,在 on server 的验证码绕过的期间,可以发现,在 burpsuite 中,只要不放行拦截的数据包,这个验证码是不会变动的。因此。也可以直接爆破。前提是拦截的数据包需要手动输入正确的验证码。此处不再赘述。

(四)token防爆破?

在登录的过程中,携带了 token 值,此种类型需要分析该 token 值是如何获取的。通过查看页面代码,可以发现在页面中,会携带一个 token 数据,

image-20260215221439740

同理,抓包,然后将 passowrd 和 token 都打标记。攻击模式选择 pitchfork attack 。对于多个标记,可以在右侧中进行选择。对于密码的设置与之前一致。

image-20260215224756118

对于token的设置,在 payload type 中更改为 Recursive grep ,同时需要切换到 setting 界面,然后点击查看 refetch reponse 信息,从中提取 token 的value 值进行设置,设置完毕后,向下拖动,找到 Redirections,选择 always。

image-20260215230728902

image-20260215224442826

将进程设置为1,这里不支持多线程爆破。

image-20260215231515640

设置完毕后进行 attack 。需要注意的是:在自身测试的时候,发现如果第一个密码为真实密码,他不会返回登录成功的信息,具体原因不知。建议在整个测试密码前随机添加一个字符串。