Snorlax 靶场:爆破攻击

本文发表在博客园乌漆 WhiteMoon(https://www.cnblogs.com/linfangnan/),只要不是在博客园看到这篇文章的都是爬虫的哈。

爆破攻击

密码破解是从计算机系统中存储或传输的数据中还原出密码的过程,一种常见的方法是反复尝试猜测密码,直到把正确的密码试出来。用户往往会设置弱密码,不安全选择的例子包括字典中的单字、姓氏、任何太短的密码(通常被认为少于6或7个字符)或可预测的模式(例如,交替的元音和辅音,称为 leetspeak,因此 “password” 变成了 p@55w0rd")。
创建一个面向目标的字典来重复测试,通常会获得最高的成功率,有一些公共工具可以根据公司网站、个人社交网络和其他常见信息(如生日或毕业年份)创建词典。最后的办法是尝试所有可能的密码,即暴力攻击。理论上如果不限制尝试次数,暴力攻击总是成功的,因为可接受密码的规则必须是公开的。但是随着密码长度的增加,可能的密码数量也会增加,使得攻击时间更长。

Snorlax 靶场共有 5 个场景,这些场景都需要使用爆破的方式完成登录,分别是:

  1. 基于表单的暴力破解
  2. 验证码绕过 (On Client)
  3. 验证码绕过 (On Server 1)
  4. 验证码绕过 (On Server 2)
  5. Token 防爆破?

由于篇幅所限,本篇博客先讲解基于表单的暴力破解、验证码绕过 (On Client) 和验证码绕过 (On Server 1),其他两个情境另外写博客讲解。

基于表单的暴力破解

打开页面,输入用户名 admin,密码随便输一个,可以看到服务器回显密码错误。说明后台数据库中存在这个用户,且可以使用爆破攻击获取密码。

BurpSuite 支持对报文中的某些部分进行爆破,例如在已知用户名的情况下拿到一个登录页面,我们可以通过穷举法爆破密码来达到强行登录的效果。首先在浏览器中开启代理,对用户请求进行拦截。

拦截后,可以看到该页面是通过 POST 方法,传递 username、password 和 change 三个参数实现爆破,其中并没有使用验证码或 token 机制。

把包发送给测试器,选择 password 为有效负载,在狙击手模式下进行攻击。

有效载荷导入一个密码字典进行爆破,等上一会儿就能爆破出密码,使用爆破出的密码就能登录。

验证码绕过 (On Client)

打开页面,发现此时需要输入验证码才能登陆。

F12 开控制台查看网页源码,发现验证码绑定了点击事件,说明该验证码只在前端起作用,跟服务器没有一点关系。

所以此处虽然发包的时候夹带了验证码,但是这并没有什么用,之前按照实验 1 的方式进行爆破就可以了。


验证码绕过 (On Server 1)

打开页面,这个页面也要输入验证码才能进行登录。

F12 开控制台查看网页源码,发现验证码是通过 PHP 脚本进行生成的,通过结合日期信息来刷新不同的验证码。

但是不难发现,只要我们不去点击这个验证码,它就不会刷新,session 里面存的还是旧的验证码。

因此我们只需要抓一次包,填写还存在 session 里面的验证码即可进行爆破。


posted @ 2022-07-13 20:44  乌漆WhiteMoon  阅读(370)  评论(2编辑  收藏  举报