三、暴力破解(Brute Force)-Low-Medium
三、暴力破解(Brute Force)-Low-Medium
一、漏洞原理
通过暴力破解Low级别的源码可知,后台对前端传送的用户名和密码没有做任何检测和处理,最简单的利用方式是通过SQL注入绕过认证,因为SQL注入的内容在后面才会讲到,这里不做演示。同时,Low级别和Medium级别的后台代码没有对用户名、密码输入次数做限制,可以使用暴力破解的方式爆破出用户名和密码,此处以Low级别为例进行演示,漏洞利用过程同时适用于Low级别和Medium级别。
二、漏洞利用过程
1.通过Burpsuite打开浏览器
打开Burpsuite后,选择proxy(代理)功能模块,关闭数据包拦截功能(即Intercept is off),点击Open browser,等待几秒后浏览器自动打开。此时浏览器默认配置了代理功能,数据包将由Burpsuite代理发送,不需要手动配置代理。
2.设置DVWA安全级别为Low
DVWA默认的安全模式是Impossible,即“不可能备攻破”的安全级别,完全修复了漏洞,使攻击者无法通过漏洞进行攻击。初学者往往会忽略修改安全级别这步操作,从而导致漏洞利用失败。
3.Burpsuite抓包
(1)打开Burpsuite拦截功能(Intercept is on)
(2)输入任意用户名密码后登录
(3)将登录数据包发送到Intruder(攻击)模块
当看到包含用户名和密码的登录信息被抓取到之后,在当前页面鼠标右键,选中 Send to Intruder。
4.暴力破解
(1)标记要爆破的变量内容
在Intruder模块选择Attack Type(攻击类型)为Cluster bomb(集束炸弹)。点击clear $ 按钮取消当前所选变量的标记,鼠标分别选中用户名(user)和密码(123456),点击Add $ ,对user和123456进行标记,因为这两个变量所在的位置代表的是用户输入的用户名和密码,将这两部分标记出来是为了让Burpsuite知道要爆破的位置。
(2)设置Payload(有效载荷)进行攻击
Payload代表的是进行攻击所使用的内容,可以是一句话木马也可以是SQL注入攻击语句等等,此处代表的是用户名和密码的字典。
在Intruder模块选中Payloads选项卡,Payload set(Payload集合)选中1,代表对第一个位置爆破时使用的集合,即爆破用户名的字典。同理,当Payload set选中2时代表爆破密码的字典。
在Payload settings(Payload设置)部分通过Load(加载)的方式首先导入用户名的攻击字典。加载完成后将Payload set 选中2,再次加载密码的攻击字典。加载完成后点击Start attack(开始攻击)。
(3)执行爆破
爆破执行结果的Length(长度)为服务器返回数据包的长度,错误的账号密码登录时服务器返回的内容相同,即Length相同,正确的账号密码访问服务器的时候返回的内容与前者不同,Length也就不同,所以通过Length的返回值可以判断admin/password这个账号密码组合是正确的。
三、防御方式
虽然在Low级别中存在SQL注入漏洞,但在这一部分我们只讨论暴力破解的防御方式,SQL注入漏洞的防御放在SQL注入部分讨论。
1.设置账号密码认证错误次数,达到错误次数上限进行登录锁定。
2.增加二次验证机制,除了账号密码之外同时提供其他验证方式。
3.增加图片验证码,提高自动化暴力破解难度。
4.在规定时间内限制登录次数,防止自动化暴力破解程序短时间内尝试大量账号密码。
以上防御方式可以单独使用,也可以组合使用。