PS:本文仅用于技术研究与讨论,严禁用于非法用途,违者后果自负
1、登录自己的DVWA环境
2、选择low级别,再选择Brute Force,且登录一下看看
“Welcome to the password protected area admin”代表你成功登录了。
3、先别慌着爆破,继续检查环境,代理是否都设置好,burp工具是否都没问题了
我这里用的是火狐浏览器,就不改本地的代理了,不影响其它浏览器正常上网
检查burp上的代理:proxy—options—proxy listeners—add
4、环境都检查好了,可以开工,先抓包试试
可以先把“拦截”功能关掉,让“Intercept is on”变成“Intercept is off”,这个图里面已经显示抓到包,所有的包,可以先都不拦截
5、找到DVWA的包,尤其是登录的包
6、接下来,忘记admin和123是正确的用户名和密码,试试别的用户名和密码
7、登录失败后,抓包分析,然后将这个包发给Intruder进行下一步处理
8、进入Intruder界面下,先选择positions,正式进行爆破工作了
可以看到之前抓的包确实到Intruder模块了,只是多了一些$符号和淡绿颜色标识字段
选择右边的“clear $”清除这些被标识的字段,选择要爆破的字段,然后加$进行标识
这里选的是用户名和密码的字段,意味着本次爆破需要同时将用户名和密码进行破解,那么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模式
接下来,打开payloads模块
两组字段需要爆破,那么就得两个payloads
关于payload的模式,还得需要都了解一下
1 Simple list–简单字典
简单字典,可从Payload Option>Add from list中加载或直接Add添加,burp 里面有些集成的攻击载荷。当然我们也可以自己添加,使用【load】
2 Runtime file
选择自己的字典文件
3 Custom iterator
自定义迭代器。这种负载类型,可以配置项目的多个列表,并使用生成的列表中项的所有排列有效载荷。它提供了一个强有力的方法根据给定的模板,以产生字符或其他项目的定制排列。
4 Character substitution
字符替换。此负载类型允许您配置一个字符串列表,并应用各种字符替换到每个项目。这可能是在密码猜测攻击非常有用,用来产生在字典中的单词常见的变化。
5 Case modification
此负载类型允许配置一个字符串列表,并应用各种情况下修改每个项目。这可能对密码猜测攻击非常有用,用来产生在字典中的单词的情况下的变化。
6 Recursivegrep
递归grep,要用这个必须在Intruder>options>Grep-extract下添加一个响应匹配,比如说我一个请求页需要前一个响应页中的内容,这里就可以这样使用了。
7 Numbers
数字,此有效载荷类型的给定的范围内,并在指定的格式产生数字有效载荷。
8 Dates
时间、日期
9 Null payloads
这种攻击载荷产生有效载荷,其值是一个空字符串。当某种攻击请求需要反复发送同样的请求,但这种请求相对于基本请求是没有任何修改,这种攻击载荷产生有效载荷,这可用于各种攻击,例如采集 cookies来进行测序分析;应用层的拒绝服务攻击,这些请求被重复发送,导致服务器上产生高工作负荷的任务,或保活会话令牌,以便这些令牌在其它的间歇试验中使用。使用此载荷类型,它甚至没有必要在请求模板中标志有效载荷位置。您可以配置Burp产生一定特定数目的空有效载荷,或无限期地持续下去。当然我们也可以使用数字、日期等其他方式产生大量的连接,导致服务器的负载过高。
先就说这么多吧,剩下的可以自行百度查查
这里选第一个模式,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); } ?>
这段源码,其实已经说明,对于网站登录,基本是零防护零过滤机制,所以爆破起来相当容易。
来源:freebuf.com 2020-09-21 12:34:18 by: fu福lin林
请登录后发表评论
注册