DVWA 暴力破解-Low
登录DVWA
选择级别
选择Low级别,点击Brute Force然后登陆一下看看。
当出现Welcome to the password protected area admin
代表你成功登录了。
检查环境
登陆成功以后不要急着去抓包暴力破解,继续检查环境,看看代理是否设置好了吗burpsuite工具配置成功了吗。我用的是火狐浏览器,可以在设置里面修改代理也可以使用FoxyProxy插件
来设置代理,我这里使用的是浏览器设置里面的手动代理这样和本地代理相比不会影响其他浏览器正常访问互联网。
检查burp上的代理:proxy--->options--->proxy listeners--->add
这里说明一下端口号可以自己设置但是要保证bp上面和浏览器代理上面的端口号相同
抓包
如果以上环境没有问题了,我们就可以开工了,先抓个包看一下。把bp的的拦截关掉让Intercept is on
变成Intercept is off
下面这个图里面是已经抓到的包可以先都不拦截。
找到DVWA的登陆包
下一步就是忘记原来正确的用户名和密码试试其他的用户名和密码
DVWA会提示我们登陆错误,抓包分析然后将这个包发送给intrude进行下一步操作
发送给intrude可以鼠标右键选择send to intrude发送,也可以用按Ctrl+I快捷键发送。
爆破
进入到爆破模块选择positions,正式进入爆破工作,我们在inroad模块中可以看到之前抓到的包了,只是多了一些$
符和淡绿色标志
我们选择右边的clear $
清除这些被标识的字段选择我们要进行爆破的字段进行标记,然后加上$
符进行标识。
这里选的是用户名和密码的字段,意味着本次爆破需要同时将用户名和密码进行破解,那么Attack type还得改。
那很多人就要问 Attack type是什么 Attack type 爆破的模式,他一共有四种模式:
- Sniper 这个是我们最常用的,Sniper是狙击手的意思。这个模式会使用单一的payload【就是导入字典的payload】组。它会针对每个position中$$位置设置payload。这种攻击类型适合对常见漏洞中的请求参数单独地进行测试。攻击中的请求总数应该是position数量和payload数量的乘积。
- Battering ram 这一模式是使用单一的payload组。它会重复payload并且一次把所有相同的payload放入指定的位置中。这种攻击适合那种需要在请求中把相同的输入放到多个位置的情况。请求的总数是payload组中payload的总数。简单说就是一个playload字典同时应用到多个position中。
- Pitchfork 这一模式是使用多个payload组。对于定义的位置可以使用不同的payload组。攻击会同步迭代所有的payload组,把payload放入每个定义的位置中。比如:position中A处有a字典,B处有b字典,则a【1】将会对应b【1】进行attack处理,这种攻击类型非常适合那种不同位置中需要插入不同但相关的输入的情况。请求的数量应该是最小的payload组中的payload数量。
- Cluster bomb 这种模式会使用多个payload组。每个定义的位置中有不同的payload组。攻击会迭代每个payload组,每种payload组合都会被测试一遍。比如:position中A处有a字典,B处有b字典,则两个字典将会循环搭配组合进行attack处理这种攻击适用于那种位置中需要不同且不相关或者未知的输入的攻击。攻击请求的总数是各payload组中payload数量的乘积。
我们这里有两组字段要爆破所以选择 Cluster bomb 模式
接下来打开 payload 模块
因为有两组字段要爆破,那么就自然而然的需要两个 payloads.
关于 payload的模式还需要说一下这里说九种其他的自行百度吧
- Simple list
简单字典可从Payload Option>Add from list
中加载或直接Add添加,burp 里面有些集成的攻击载荷。当然我们也可以自己添加,使用load
- Runtime file
选择自己的字典文件 - Custom iterator
自定义迭代器。这种负载类型,可以配置项目的多个列表,并使用生成的列表中项的所有排列有效载荷。它提供了一个强有力的方法根据给定的模板,以产生字符或其他项目的定制排列。 - Character substitution
字符替换。此负载类型允许您配置一个字符串列表,并应用各种字符替换到每个项目。这可能是在密码猜测攻击非常有用,用来产生在字典中的单词常见的变化。 - Case modification
此负载类型允许配置一个字符串列表,并应用各种情况下修改每个项目。这可能对密码猜测攻击非常有用,用来产生在字典中的单词的情况下的变化。 - Recursivegrep
递归grep,要用这个必须在Intruder>options>Grep-extract
下添加一个响应匹配,比如说我一个请求页需要前一个响应页中的内容,这里就可以这样使用了。 - Numbers
数字,此有效载荷类型的给定的范围内,并在指定的格式产生数字有效载荷。 - Dates
时间、日期 - Null payloads
这种攻击载荷产生有效载荷,其值是一个空字符串。当某种攻击请求需要反复发送同样的请求,但这种请求相对于基本请求是没有任何修改,这种攻击载荷产生有效载荷,这可用于各种攻击,例如采集 cookies来进行测序分析;应用层的拒绝服务攻击,这些请求被重复发送,导致服务器上产生高工作负荷的任务,或保活会话令牌,以便这些令牌在其它的间歇试验中使用。使用此载荷类型,它甚至没有必要在请求模板中标志有效载荷位置。您可以配置Burp产生一定特定数目的空有效载荷,或无限期地持续下去。当然我们也可以使用数字、日期等其他方式产生大量的连接,导致服务器的负载过高。
因为我们DVWA选择的是Low模式所以爆破的payload就可以选择 Simple list模式
Payload 1对应的是第一个字段,也就是代表用户名的,直接点击add,添加几个常见的用户名
Payload 2对应的是第二个字段,也就是代表密码的,也是直接添加几个常见的密码
点击“start attack”,开始爆破
找异数,进行分析
又是“Welcome to the password protected area admin”,成功登录,同时也可以看看4725长度的包,比较一下
通过比较,进一步证实admin和123就是正确的登录方式
以上便是整个低难度的Brute Force的过程,你以为就这样完了吗?
No,学习是一个持续思考和不断动手尝试的过程,而不是一次尝试就定论了
我们再来看看它的源代码
<?php
if( isset( $_GET[ 'Login' ] ) ) {
// Get username
$user = $_GET[ 'username' ];
// Get password
$pass = $_GET[ 'password' ];
$pass = md5( $pass );
// Check the database
$query = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';";
$result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );
if( $result && mysqli_num_rows( $result ) == 1 ) {
// Get users details
$row = mysqli_fetch_assoc( $result );
$avatar = $row["avatar"];
// Login successful
echo "<p>Welcome to the password protected area {$user}</p>";
echo "<img src=\"{$avatar}\" />";
}
else {
// Login failed
echo "<pre><br />Username and/or password incorrect.</pre>";
}
((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
}
?>
从源代码中不难看出Low模式中对网站登陆根本没有进行任何过滤和防护所以说爆破过程简单速度快,所以说相对而言比较简单。