暴力破解
- 概述
- 应用场景
- 实验
- 工具
- 实训准备
- 实训开始
- 四种模式
- 验证码绕过
- 前端验证码
- 验证码有存活周期
概述
暴力破解是Web漏洞里常见的一种渗透方式,攻击者会试图通过尝试各种可能的用户名和密码组合来猜测密码或密钥,直到猜对为止123。攻击者会经常使用自动化脚本组合出正确的用户名和密码。暴力破解的过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。有时候可能会带来意想不到的效果,今天我将用一个简单的实验来说明什么是暴力破解并介绍其应用场景和一些可能的验证码绕过。
应用场景
并不是所有的认证登录都可以进行暴力破解,一般存在于一下几个条件之外:
1、要求用户设置复杂的密码
2、每次认证都需要使用十分安全的验证码
3、尝试登录行为有判断和限制(连续错误五次,锁账号)
4、使用了双因素认证(除了密码以外的其他认证比如OTP)
如图存在暴力破解那么可分一下几个步骤:
1、确定登录接口的脆弱性
2、利用丰富的字典
3、使用自动化工具
实验
工具
1、pikachu靶场
2、火狐浏览器
3、Burp suite
实训准备
首先利用php_study开启服务器和数据库的环境,打开Burp suite,监听本地IP地址的8080端口,在浏览器上设置里将代理挂到Burp suite
进入Burp打开Proxy界面,开启流量拦截(Intercept is on),在pikachu页面随机点击看是否能够拦截到http流量,做好这些准备就可以开始了 (在这里地址栏里推荐IP地址写本机局域网地址,有可能本机地址Burp抓不到)
实训开始
首先尝试一些简单的弱口令尝试登录比如:admin、password、123456等等,然后进行抓包查看是否有验证码或者其他参数
进行抓包我们可以看到请求体内就只有这三个参数,并不存在验证码验证,所以是存在爆破条件的,这时候就可以利用burp自带的利用字典爆破,首先我们右键将流量放入Intruder界面
然后进入界面后可以看到右边有几个按钮,我们可以将需要爆破的参数进行添加(username、password)
我们可以看到上面有一个Attack type的下拉框,这里面分别代表了四种模式Sniper、Battering ram、Pitchfork、Cluster bomb,下面我简单介绍一下这几个模式
四种模式
1、Sniper
这个模式内会从字典内仅替换第一个参数比如这里的username,password则不会管适用于知道账号或者密码其中一个的场景。
2、Battering ram
这个模式会将账号和密码同时替换为字典内一样的参数比如字典有一个参数为"1"则账号密码都会被替换为"1"。
3、Pitchfork
在这个模式里面就可以制定两个参数了,但是并不会将所有可能性都匹配完,比如有两个字典分别为账号和密码的,就相当于账号和密码都是两个字典每个元素一 一对应的匹配。
4、Cluster bomb
相信看到这里你也能猜出这个字典功能是啥了,没错就是你想的那样,这个模式包含了字典的所有可能性,首先是密码字典第一个元素不变然后账号字典元素每一个都进行匹配当账号字典匹配完了过后密码字典元素才会往下跳一个,这个账号密码字典都能匹配完了。
这里我们使用的就是第四种也是最常用的一种
1、进入payloads界面对参数模式进行修改和字典的添加
2、这里参数代表那个参数这里1就代表第一个参数(username)可以切换到另一个参数
3、这里参数代表使用字典模式还是手动输入模式,这里我们选择字典模式(Runtime file)
4、这里就是手动模式进行手动添加账号密码
5、这里选择字典
第一个参数字典
第二个参数字典
同时还有一个模块比较重要就是这里的Grep-Match模块,这里是对是否匹配到正确的账号密码而设置的地方,在这个方框内有很多默认参数,但是每个破解情况都有不同默认参数也不适用(这里参数是指respone返回响应内的关键字,匹配到为1否则为空)
在此次实验中我们可以看到登录失败后会出现is not exists关键字的返回那么这就能成为我们的线索,所以在Grep-Match内就可以包含进入这一句话
然后这些准备工作做完了过后就可以点击右上角(Start attack)开始破解
我们可以看到如箭头所指这就是我们设置的关键线索,这里每个错误的账号密码都会返回这个线索所以返回1,但是可以看到这里的admin是为空的,这就代表返回的请求没有密码错误的响应,验证成功,我们就可以利用这里的账号密码去登录
登录成功!
验证码绕过
验证码想要绕过一般概率比较小,基于现在AI人工智能发展迅速图案识别也能够做到,但是也有很复杂的验证码也是基于后端进行验证并且刷新时间短,验证码存活周期也短刷新即销毁
前端验证码
在这里的验证码我们可以通过网页源码可以看到仅仅是基于前端生成的验证码,仅仅只是纸老虎,只是针对于网络小白,我们只需要输入一次正确的验证码然后进行抓包
抓包后验证码因为是前端生成后端并不会对验证码进行验证所以随意修改都能够通过,接下来的步骤就和上面的一样进行爆破即可
验证码有存活周期
在这种可能下,验证码看似需要通过后端进行验证但是一个验证码的生存周期很长,在这段时间内在HTTP包内可以用同一个验证码进行爆破
这里我们可以看到就算账号密码不一样,但是验证码同样还是相同,所以一个验证码可以重复使用任然可以进行爆破