Brute Force(爆破)
密码破解是从计算机系统中存储或传输的数据中还原出密码的过程,一种常见的方法是反复尝试猜测密码,直到把正确的密码试出来。用户往往会设置弱密码,不安全选择的例子包括字典中的单字、姓氏、任何太短的密码(通常被认为少于6或7个字符)或可预测的模式(例如,交替的元音和辅音,称为 leetspeak,因此 “password” 变成了 p@55w0rd")。
创建一个面向目标的字典来重复测试,通常会获得最高的成功率,有一些公共工具可以根据公司网站、个人社交网络和其他常见信息(如生日或毕业年份)创建词典。最后的办法是尝试所有可能的密码,即暴力攻击。理论上如果不限制尝试次数,暴力攻击总是成功的,因为可接受密码的规则必须是公开的;但是随着密码长度的增加,可能的密码数量也会增加,使得攻击时间更长。
Brute Force Low级别
1、设置DVWA Security级别为Low
2、切换到爆破模块,使用管理员用户 admin 登录,密码随便输入,提示密码错误。
3、源码如下,代码将获取用户输入的用户名和密码并将其进行 md5 加密,然后使用 SQL SELECT 语句进行查询。由于进行了 md5 加密,因此直接阻止了 SQL 注入,因为经过 md5 这种摘要算法之后 SQL 语句就会被破坏(不过这里用 SQL 注入可以登陆成功)。注意到此时服务器只是使用了 isset() 函数验证了参数 Login 是否被设置,参数 username、password 没有做任何过滤,更重要的是没有任何的防爆破机制。
4、设置浏览器的代理。
5、打开BurpSuite抓包
6、输入username为管理员,密码随意
7、然后把包发送给测试器,选择 password 为有效负载,在狙击手模式下进行攻击
8、在Payloads载荷模块下调用密码字典
9、点击Start attack开始爆破
10、等上一会儿就能爆破出密码,使用爆破出的密码就能登录。
Burte Force Medium级别
1、设置DVWA Security级别为medium
2、分析源码,Medium 级别的代码主要增加了 mysql_real_escape_string 函数,该函数会对字符串中的特殊符号进行转义,从而对用户输入的参数进行了简单的过滤。相比 low 级别的代码,当登录验证失败时界面将冻结 2 秒,从而影响了爆破操作的效率,不过如果是一个闲来无事并且很有耐心的白帽黑客,爆破出密码仍然是时间问题。
3、设置好代理后,和 low 级别一样,还是用 Brup 抓包后爆破即可,只是因为每次测试都要等上 2 秒,需要等稍长的时间而已。
Brute Force High级别
1、设置DVWA Security级别为medium
2、源码审计
3、开发者使用了 “CSRF” 的反伪造请求,有一个旧的说法表示这种保护可以阻止暴力攻击,但事实并非如此。这个级别也扩展了中等级别,在登录失败时等待,但这次是 2 到 4 秒之间的随机时间,这样做的目的是试图混淆任何时间预测。使用验证码表单可能会产生与 CSRF 令牌类似的效果。High 级别的代码使用了stripslashes 函数,进一步过滤输入的内容。同时使用了 Token 抵御 CSRF 攻击,在每次登录时网页会随机生成一个 user_token 参数,在用户提交用户名和密码时要对 token 进行检查再进行 sql 查询。
4、由于 user_token 参数值是网页实时生成的,因此我们不能直接选择 password 的参数值进行爆破,而是应该先提取需要提交的 user_token 参数再来进行爆破。所以渗透的思路是,先把网页爬下来提取 user_token 的参数值,然后再每次爆破时夹带变化的 user_token 值进行测试。
5、将登录请求进行拦截,发现增加了user_token参数,所以爆破要选择两个参数来进行,先将请求发送到intruder
6、设置两个参数 password和user_token为变量,攻击类型选择pitchfork,意思是草叉模式(Pitchfork )——它可以使用多组Payload集合,在每一个不同的Payload标志位置上(最多20个),遍历所有的Payload。举例来说,如果有两个Payload标志位置,第一个Payload值为A和B,第二个Payload值为C和D,则发起攻击时,将共发起两次攻击,第一次使用的Payload分别为A和C,第二次使用的Payload分别为B和D。
7、设置参数,在option选项卡中将攻击线程thread设置为1,因为Recursive_Grep模式不支持多线程攻击,然后选择Grep-Extract,意思是用于提取响应消息中的有用信息,点击Add,如下图进行设置,最后将Redirections设置为Always
8、然后设置payload,第一个参数设置密码字典,第二个参数选择Recursive grep,然后将options中的token作为第一次请求的初始值。
9、点击start attack攻击爆破,结果成功爆破
Brute Foece Impossible级别
1、设置DVWA Security级别为Impossible
2、源码审计
3、增加了一个“锁定”功能,如果在过去 15 分钟内有5次错误登录,被锁定的用户将无法登录。如果被锁定的用户试图登录,即使使用了有效的密码,也会显示他们的用户名或密码不正确。这将使我们无法知道系统上是否有一个有效的帐户、密码以及该帐户是否被锁定。