Brute Force(爆破)

密码破解是从计算机系统中存储或传输的数据中还原出密码的过程,一种常见的方法是反复尝试猜测密码,直到把正确的密码试出来。用户往往会设置弱密码,不安全选择的例子包括字典中的单字、姓氏、任何太短的密码(通常被认为少于6或7个字符)或可预测的模式(例如,交替的元音和辅音,称为 leetspeak,因此 “password” 变成了 p@55w0rd")。

创建一个面向目标的字典来重复测试,通常会获得最高的成功率,有一些公共工具可以根据公司网站、个人社交网络和其他常见信息(如生日或毕业年份)创建词典。最后的办法是尝试所有可能的密码,即暴力攻击。理论上如果不限制尝试次数,暴力攻击总是成功的,因为可接受密码的规则必须是公开的;但是随着密码长度的增加,可能的密码数量也会增加,使得攻击时间更长。

Brute Force Low级别

1、设置DVWA Security级别为Low
1

2、切换到爆破模块,使用管理员用户 admin 登录,密码随便输入,提示密码错误。
2

3、源码如下,代码将获取用户输入的用户名和密码并将其进行 md5 加密,然后使用 SQL SELECT 语句进行查询。由于进行了 md5 加密,因此直接阻止了 SQL 注入,因为经过 md5 这种摘要算法之后 SQL 语句就会被破坏(不过这里用 SQL 注入可以登陆成功)。注意到此时服务器只是使用了 isset() 函数验证了参数 Login 是否被设置,参数 username、password 没有做任何过滤,更重要的是没有任何的防爆破机制。
3

4、设置浏览器的代理。
4

5

6

5、打开BurpSuite抓包
7

6、输入username为管理员,密码随意
8

7、然后把包发送给测试器,选择 password 为有效负载,在狙击手模式下进行攻击
9
10
11

8、在Payloads载荷模块下调用密码字典
12
13

9、点击Start attack开始爆破
14

10、等上一会儿就能爆破出密码,使用爆破出的密码就能登录。
15
16

Burte Force Medium级别

1、设置DVWA Security级别为medium
Medium -1-

2、分析源码,Medium 级别的代码主要增加了 mysql_real_escape_string 函数,该函数会对字符串中的特殊符号进行转义,从而对用户输入的参数进行了简单的过滤。相比 low 级别的代码,当登录验证失败时界面将冻结 2 秒,从而影响了爆破操作的效率,不过如果是一个闲来无事并且很有耐心的白帽黑客,爆破出密码仍然是时间问题。
Medium -2-
Medium -3-

3、设置好代理后,和 low 级别一样,还是用 Brup 抓包后爆破即可,只是因为每次测试都要等上 2 秒,需要等稍长的时间而已。
Medium -4-
Medium -5-
Medium -6-
Medium -7-
Medium -8-
Medium -9-
Medium -10-
Medium -11-

Brute Force High级别

1、设置DVWA Security级别为medium
High -1-

2、源码审计
High -2-

3、开发者使用了 “CSRF” 的反伪造请求,有一个旧的说法表示这种保护可以阻止暴力攻击,但事实并非如此。这个级别也扩展了中等级别,在登录失败时等待,但这次是 2 到 4 秒之间的随机时间,这样做的目的是试图混淆任何时间预测。使用验证码表单可能会产生与 CSRF 令牌类似的效果。High 级别的代码使用了stripslashes 函数,进一步过滤输入的内容。同时使用了 Token 抵御 CSRF 攻击,在每次登录时网页会随机生成一个 user_token 参数,在用户提交用户名和密码时要对 token 进行检查再进行 sql 查询。
High -3-

4、由于 user_token 参数值是网页实时生成的,因此我们不能直接选择 password 的参数值进行爆破,而是应该先提取需要提交的 user_token 参数再来进行爆破。所以渗透的思路是,先把网页爬下来提取 user_token 的参数值,然后再每次爆破时夹带变化的 user_token 值进行测试。
High -4-

5、将登录请求进行拦截,发现增加了user_token参数,所以爆破要选择两个参数来进行,先将请求发送到intruder
High -5-

6、设置两个参数 password和user_token为变量,攻击类型选择pitchfork,意思是草叉模式(Pitchfork )——它可以使用多组Payload集合,在每一个不同的Payload标志位置上(最多20个),遍历所有的Payload。举例来说,如果有两个Payload标志位置,第一个Payload值为A和B,第二个Payload值为C和D,则发起攻击时,将共发起两次攻击,第一次使用的Payload分别为A和C,第二次使用的Payload分别为B和D。
High -6-
High -7-

7、设置参数,在option选项卡中将攻击线程thread设置为1,因为Recursive_Grep模式不支持多线程攻击,然后选择Grep-Extract,意思是用于提取响应消息中的有用信息,点击Add,如下图进行设置,最后将Redirections设置为Always
High -8-
High -9-
High -10-
High -11-
High -12-

8、然后设置payload,第一个参数设置密码字典,第二个参数选择Recursive grep,然后将options中的token作为第一次请求的初始值。
High -13-
High -14-
High -15-

9、点击start attack攻击爆破,结果成功爆破
High -16-
High -17-

Brute Foece Impossible级别

1、设置DVWA Security级别为Impossible
Impossible -1-

2、源码审计
Impossible -2-

3、增加了一个“锁定”功能,如果在过去 15 分钟内有5次错误登录,被锁定的用户将无法登录。如果被锁定的用户试图登录,即使使用了有效的密码,也会显示他们的用户名或密码不正确。这将使我们无法知道系统上是否有一个有效的帐户、密码以及该帐户是否被锁定。
Impossible -3-