Kali渗透测试之DVWA系列2——Brute Force(暴力破解)

目录

一、暴力破解原理

二、实验环境

三、实验步骤

安全等级:LOW

安全等级:Medium

       暴力破解的四种方式

安全等级:High

安全等级:Impossible

 防止暴力破解的有效手段


一、暴力破解原理

        暴力破解的原理就是使用攻击者自己的用户名和密码字典,一个一个去枚举,尝试是否能够登录。因为理论上来说,只要字典足够庞大,枚举总是能够成功的!

        但实际发送的数据并不像想象中的那样简单——“ 每次只向服务器发送用户名和密码字段即可!”,实际情况是每次发送的数据都必须要封装成完整的 HTTP 数据包才能被服务器接收。但是你不可能一个一个去手动构造数据包,所以在实施暴力破解之前,我们只需要先去获取构造HTTP包所需要的参数,然后扔给暴力破解软件构造工具数据包,然后实施攻击就可以了。

       Web暴力破解通常用在已知部分信息,尝试爆破网站后台,为下一步的渗透测试做准备。

二、实验环境

1、DVWA服务器:Windows Server 2003(192.168.247.129),启动phpStudy

2、测试机:物理机Windows 10,远程登录DVWA;安装BurpSuite

三、实验步骤

安全等级:LOW

查看源码

源码分析

源码分析

针对用户输入的用户名和密码,服务器没有进行过滤操作;

没有任何的防爆破机制,存在明显的sql注入漏洞,可利用SQL注入漏洞登录(使用空密码登录)

万能密码:

  • admin' or '1'='1
  • admin' #

安全等级:Medium

查看源码

源码分析:

  • mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符;如果不进行转义,意味着任何用户无需输入合法的密码即可登陆。使用该函数来预防数据库攻击,基本防止了SQL注入;
  • 同时,$pass做了MD5校验,杜绝了通过参数password进行sql注入的可能性;
  • 但依然没有加入有效的防爆破机制,只是不能采用SQL注入的方式登录;

1、使用任意账号密码尝试进行登录,并使用BurpSuite进行拦截。

2、将该数据包导入intruder

3、清空参数 

在Positions选项中设置需要破解的变量。Burpsuite会自动设置许多变量,单击 ' Clear ' 按钮,把默认变量全部清除。

4、添加所选参数

选中用户名admin和密码123,单击 ' Add ' 按钮将之设为需要破解的变量。使用Sniper攻击类型。

5、添加字典

  • Add:手动输入字典
  • Load:加载外部字典,需选择加载路径
  • Add from list:Burp Suite自带的字典

6、爆破。请求长度不同的可能为正确密码(用户名或者密码输入错误的情况下)

7、用破解的密码尝试登录

 暴力破解的四种方式

  • 1、一个字典,两个参数,先匹配第一项,再匹配第二项【sniper】
  • 2、一个字典,两个参数,同用户名同密码【battering ram】
  • 3、两个字典,两个参数,同行匹配,短的截止【pitch fork】
  • 4、两个字典,两个参数,交叉匹配,所有可能【cluster bomb】

使用Cluster bomb爆破类型进行破解

1、抓包

2、导入intruder

3、清空参数

4、添加所选参数,使用Cluster bomb攻击方式(两个字典,两个参数,交叉匹配,所有可能)

5、添加字典

6、爆破

7、用破解的密码尝试登录

安全等级:High

查看源码

源码分析:

  • mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符;
  • stripslashes() 函数删除由 addslashes() 函数添加的反斜杠,可用于清理从数据库中或者从 HTML 表单中取回的数据。

  • 通过抓包可以看到,登录验证时提交了四个参数:username、password、Login以及user_token,增加了爆破的难度。
  • 这就要求我们发送的每个请求包中都包含随机生成的token值,因此无法简单地使用Burpsuite进行暴力破解。可以尝试使用python脚本,使用爬虫将服务器每次返回的user_token抓取到。

无法破解密码。

安全等级:Impossible

查看源码

源码分析:

  • Impossible级别的代码加入了可靠的防爆破机制,当检测到频繁的错误登录后,系统会将账户锁定,爆破也就无法继续;
  • 同时采用了更为安全的PDO(PHP Data Object)机制防御sql注入,这是因为不能使用PDO扩展本身执行任何数据库操作,而sql注入的关键就是通过破坏sql语句结构执行恶意的sql命令;
     

 防止暴力破解的有效手段

1、限制尝试次数

2、验证码(验证码存在被技术的破解风险,仅用于增加每次尝试的成本)

3、PDO技术

猜你喜欢

转载自blog.csdn.net/weixin_43625577/article/details/89703187