Snorlax 靶场:爆破攻击
本文发表在博客园乌漆 WhiteMoon(https://www.cnblogs.com/linfangnan/),只要不是在博客园看到这篇文章的都是爬虫的哈。
爆破攻击
密码破解是从计算机系统中存储或传输的数据中还原出密码的过程,一种常见的方法是反复尝试猜测密码,直到把正确的密码试出来。用户往往会设置弱密码,不安全选择的例子包括字典中的单字、姓氏、任何太短的密码(通常被认为少于6或7个字符)或可预测的模式(例如,交替的元音和辅音,称为 leetspeak,因此 “password” 变成了 p@55w0rd")。
创建一个面向目标的字典来重复测试,通常会获得最高的成功率,有一些公共工具可以根据公司网站、个人社交网络和其他常见信息(如生日或毕业年份)创建词典。最后的办法是尝试所有可能的密码,即暴力攻击。理论上如果不限制尝试次数,暴力攻击总是成功的,因为可接受密码的规则必须是公开的。但是随着密码长度的增加,可能的密码数量也会增加,使得攻击时间更长。
Snorlax 靶场共有 5 个场景,这些场景都需要使用爆破的方式完成登录,分别是:
- 基于表单的暴力破解
- 验证码绕过 (On Client)
- 验证码绕过 (On Server 1)
- 验证码绕过 (On Server 2)
- 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 里面的验证码即可进行爆破。