DVWA系列(一)——使用Burpsuite进行Brute Force(暴力破解)

1. Brute Force(暴力破解)简介

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

但实际发送的数据并不像想象中的那样简单——“ 每次只向服务器发送用户名和密码字段即可!”,实际情况是每次发送的数据都必须要封装成完整的 HTTP 数据包才能被服务器接收。但是你不可能一个一个去手动构造数据包;

所以在实施暴力破解之前,我们需要先去获取构造HTTP包所需要的参数,然后扔给暴力破解软件构造工具数据包,然后实施攻击就可以了。

下面我们利用Burpsuite的Intruder模块来对密码进行暴力破解。

2. Brute Force(暴力破解)

实验环境

(1)Windows服务器:Windows  Server 2003,IP地址:192.168.37.128;

(2) 测试机:Windows7物理机(开启代理,代理服务器为burpsuite)

实验过程

安全级别:Low

(1)设置安全级别

(2)查看源码

(3)源码分析

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

没有任何的防爆破机制,存在明显的sql注入漏洞;

(4)实验操作

4.1> 首先输入用户名admin,输入随意密码,比如123,然后对数据包进行拦截;

4.2> 将获取到的数据包导入intruder;

4.3> 清空参数;

4.4> 添加所选参数(即需要爆破的参数);

四种暴力破解方式的区别:

   一个字典,两个参数,先匹配第一项,再匹配第二项【sniper】

   一个字典,两个参数,同用户名同密码【battering ram】

   两个字典,两个参数,同行匹配,短的截止【pitch fork】

   两个字典,两个参数,交叉匹配,所有可能【cluster bomb】

4.5> 第一种(sniper)方式攻击

添加字典,开始字典爆破;

尝试用爆破的用户名和密码登陆,成功登录;

4.6> 再选择第四种爆破(cluster bomb)的方式;

添加字典,开始字典爆破;

尝试用爆破成功的用户名和密码登陆,成功登录;

4.7> 也可以尝试SQL注入的方式登录;

安全级别:Medium

(1)设置安全级别;

(2)查看源码;

(3)源码分析

mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符;

使用本函数来预防数据库攻击;基本防止了SQL注入;

同时,$pass做了MD5校验,杜绝了通过参数password进行sql注入的可能性;

但依然没有加入有效的防爆破机制;

不能采用Sql注入的方式登录;

不能采用SQL注入的方式登录;

(4)实验过程

Medium级别防止了SQL注入,但爆破步骤和Low级别基本一致;

安全级别:High

(1)设置安全级别

(2)查看源码

(3)源码分析

mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符;

stripslashes() 函数删除由 addslashes() 函数添加的反斜杠,可用于清理从数据库中或者从 HTML 表单中取回的数据;

(4) 实验过程

通过抓包,可以看到,登录验证时提交了四个参数:username、password、Login以及user_token;增加了爆破的难度;

这样就要求我们发送的每个请求包中包含随机生成的token值。我们无法简单的使用Burpsuite完成;

可以尝试使用python脚本,使用爬虫将服务器每次返回的user_token抓取到,后续有可能会更新成自己写的代码;

安全级别:Impossible

(1)设置安全级别

(2)查看源码

(3)源码分析

Impossible级别的代码加入了可靠的防爆破机制,当检测到频繁的错误登录后,系统会将账户锁定,爆破也就无法继续;

同时采用了更为安全的PDO(PHP Data Object)机制防御sql注入,这是因为不能使用PDO扩展本身执行任何数据库操作,而sql注入的关键就是通过破坏sql语句结构执行恶意的sql命令;

防止暴力破解的有效手段:

1、限制尝试次数;

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

3、PDO技术;

猜你喜欢

转载自blog.csdn.net/qq_38684504/article/details/89508404