《11招玩转网络安全》之第三招:Web暴力破解-Low级别
Docker中启动LocalDVWA容器,准备DVWA环境。在浏览器地址栏输入http://127.0.0.1,中打开DVWA靶机。自动跳转到了http://127.0.0.1/login.php登录页面。输入默认的用户名密码admin:password登录。单击页面左侧的DVWA Security,进行安全级别设置,如图3-18所示。
图3-18 DVWA安全级别
DVWA的安全级别有4种,分别为Low、Medium、High和Impossible。先选择最低的安全级别,单击Submit按钮确认选择。
单击页面左侧的BruteForce按钮,进入暴力破解测试页面,单击View Source按钮,如图3-19所示。
图3-19 Low Brute Force源代码
获取的代码如下:
<?php if( isset( $_GET[ 'Login' ] ) ) { // Getusername $user =$_GET[ 'username' ]; // Getpassword $pass =$_GET[ 'password' ]; $pass =md5( $pass ); // Checkthe 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 passwordincorrect.</pre>"; } ((is_null($___mysqli_res =mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res); }
?>
从代码中可以看出,服务器没有对输入的用户名和密码做任何的检查,直接就进行了SQL查询。这种情况用SQL注入也非常的方便,但这里测试的是暴力破解。
浏览器启用SwitchyOmega的Burp Suite模式,启动Burp Suite监听本地的8080端口。在页面中任意输入一个用户名和密码,如图3-20所示。
图3-20 DVWA发送数据到Burp Suite
关闭浏览器其他的标签页,避免干扰。启动Burp Suite,打开Proxy标签页的Intercept项,将项目按钮调整成Intercept is on,如图3-21所示。
图3-21 Burp Suite拦截
回到DVWA页面中,单击Login按钮。浏览器向服务器127.0.0.1发送数据,通过127.0.0.1:8080端口,被Burp Suite拦截。Burp Suite显示拦截下来的数据,如图3-22所示。
图3-22 拦截的数据
在Raw的文本框中单击鼠标邮件,在弹出的菜单中选择Send toIntruder选项,Burp Suite将拦截得到的数据发送给了Intruder,进行选择、分析,如图3-23所示。
图2-23 Send Data to Intruder
单击Burp Suite的Intruder标签,选择Positions项目。这里是暴力破解的主战场,可以看到Intruder已经将页面发送数据中所有可爆破的参数都标示出来了,如图2-24所示。
图2-24 Intruder项目
这里所有标示出来的参数都是可以用于暴力破解的。实际上只需要暴力破解username和password这两个参数就可以。单击Clear$按钮。清除所有备选目标,然后选择需要暴力破解的两个参数username和passowrd,单击Add$按钮,将这两个攻击目标的参数标示起来,如图2-25所示。
图3-25 选择暴力破解目标
再来看看Intruder项目的攻击模式Attack type。Intruder的攻击模式有4种。分别为Sniper、Battering ram、pitchfork、Cluster Bomb模式。
Sniper是狙击模式,这种模式适合单一的目标参数破解。以本次破解为例,如果已知了用户名username,那就只需要暴力破解密码password就可以了。这就是单一的目标参数破解。只需要给一个字典,Intruder就用这个字典中的所有密码测试一遍。假设已给出密码字典为[a, b, c, d],破解方式为:
Password ------------- a b c d
Battering ram是撞击模式,这种模式不管有多少个目标参数破解,都只用一个密码字典。以本次破解为例,有两个目标参数需要破解,Intruder将密码字典中的密码同时给这两个目标,假设已给出密码字典为[a, b, c, d],破解方式为:
username | password a | a b | b c | c d | d
Pitchfork是交叉模式,这种模式中有多少个目标参数,就需要给多少个密码字典。以本次破解为例,有两个目标参数需要破解。假设给出的2个字典分别包含的是[1, 2]和[a, b, c, d]。Intruder将破解2次,破解方式为:
username | password 1 | a 2 | b
Cluster bomb是集束炸弹模式,这种模式的中有多少目标参数,就需要多少个密码字典。以本次破解为例,有两个目标参数需要破解。假设给出的2个字典分别包含的是[1, 2]和[a, b, c, d]。破解方式为:
username | password 1 | a 1 | b 1 | c 1 | d 2 | a 2 | b 2 | c 2 | d
本次破解有2个目标参数username和password,需要2个字典。选择Cluster bomb模式,如图3-26所示。
图3-26 Attack Type
单击Payloads标签,为目标设置字典。第一个目标参数是username,用户名一般就是[root, admin, administrator],将这几个用户名输入到第一个目标参数的密码字典中去,如图3-27所示。
图3-27 输入用户名到字典
第2个目标参数是password,将创建的weak_top25.txt文件作为密码字典就可以了,如图3-28所示。
图3-28 载入文件作密码字典
所有设置完毕后,单击Startattack按钮开始破解。最后得到的结果如图3-29所示。
图3-29 Low安全级别的破解
Length是从服务器返回数据的长度。只有一个长度与众不同,那这个用户名和密码必定是正确的。测试一下,回到DVWA的Brute Force项目,输入用户名和密码admin:password,单击Login按钮,返回的结果如图3-30所示。
图3-30 测试结果
验证用户名密码可用。暴力破解成功。
有兴趣的欢迎一起读这本书《11招玩转网络安全——用Python,更安全》
《11招玩转网络安全》之第三招:Web暴力破解-Low级别的更多相关文章
- 《11招玩转网络安全》之第一招:Docker For Docker
玩转黑客那些工具,缺少了虚拟机怎么行,除了用虚拟机虚拟整个系统,Docker也不能缺少,读者只需要知道,Docker只虚拟Linux系统中的某个程序就可以了.本节就来介绍Linux下安装设置Docke ...
- 《11招玩转网络安全》之第五招:DVWA命令注入
首先还是将DVWA的安全级别设置为Low,然后单击DVWA页面左侧的Command Injection按钮. 图5-1 Low级别的命令注入 这个就是最典型的命令注入接口.在文本框中输入一个IP ...
- 《11招玩转网络安全》之第四招:low级别的DVWA SQL注入
以DVWA为例,进行手工注入,帮助读者了解注入原理和过程. 1.启动docker,并在终端中执行命令: docker ps -a docker start LocalDVWA docker ps 执行 ...
- 11招玩转黑客攻防——用Python,更安全
Python真是无所不能,学习Python,一个暑假就够了 !! 入门Python,从黑客入手最好玩.最简单 !! 今天就推荐一本书<11招玩转网络安全——用Python,更安全> 内网攻 ...
- 8天玩转并行开发——第三天 plinq的使用
原文 8天玩转并行开发——第三天 plinq的使用 相信在.net平台下,我们都玩过linq,是的,linq让我们的程序简洁优美,简直玩的是爱不释手,但是传统的linq只是串行代码,在并行的 年代如果 ...
- 从20s优化到500ms,我用了这三招
前言 接口性能问题,对于从事后端开发的同学来说,是一个绕不开的话题.想要优化一个接口的性能,需要从多个方面着手. 其实,我之前也写过一篇接口性能优化相关的文章<聊聊接口性能优化的11个小技巧&g ...
- 云计算之路-阿里云上:消灭“黑色n秒”第三招——禁用网卡的TCP/IP Offload
程咬金有三板斧,我们有三招.在这篇博文中我们要出第三招,同时也意味着昨天在“希望的田野”上的第二招失败了. 前两招打头(CPU)不凑效,这一招要换一个部位,但依然要坚持攻击敌人最弱(最忙最累)部位的原 ...
- 【原创】IE11惊现无厘头Crash BUG(三招搞死你的IE11,并提供可重现代码)!
前言 很多人都知道我们在做FineUI控件库,而且我们也做了超过 9 年的时间,在和浏览器无数次的交往中,也发现了多个浏览器自身的BUG,并公开出来方便大家查阅: 分享IE7一个神奇的BUG(不是封闭 ...
- 【原创】三招搞死你的IE11,可重现代码下载(IE Crash keyframes iframe)!
前言 很多人都知道我们在做FineUI控件库,而且我们也做了超过 9 年的时间,在和浏览器无数次的交往中,也发现了多个浏览器自身的BUG,并公开出来方便大家查阅: 分享IE7一个神奇的BUG(不是封闭 ...
随机推荐
- SQLServer删除登录帐户
删除登陆账户注意事项 不能删除正在登录的登录名. 也不能删除拥有任何安全对象.服务器级对象或 SQL Server 代理作业的登录名. 可以删除数据库用户映射到的登录名,但是这会创建孤立用户. 有关详 ...
- 「汇编」加深理解段地址*10H(*16)必须是16的倍数
王爽的汇编语言,有这样一道题: 检测点2.2 (2) 有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元.则SA应满足的条件是:最小为 , 最大为 ...
- eclipse导入maven项目,但无法编译的问题
同事今天从git 导入项目到eclipse 后,发现项目所依赖的包找不到依赖,初步判定是maven的依赖没有导入项目中. 最终发现,在项目中的.classpath 文件加入以下代码即可解决问题. &l ...
- 一脸懵逼学习Storm---(一个开源的分布式实时计算系统)
Storm的官方网址:http://storm.apache.org/index.html 1:什么是Storm? Storm是一个开源的分布式实时计算系统,可以简单.可靠的处理大量的数据流.被称作“ ...
- Couchbase入门——环境搭建以及HelloWorld
一.引言 NoSQL(Not Only SQL),火了很久了,一直没空研究.最近手上一个项目对Cache有一定的要求,借此机会对NoSQL入门一下.支持NoSQL的数据库系统有很多, 比如Redis ...
- Educational Codeforces Round 61 (Rated for Div. 2)-C. Painting the Fence 前缀和优化
题意就是给出多个区间,要求去掉两个区间,使得剩下的区间覆盖范围最大. 当然比赛的时候还是没能做出来,不得不佩服大佬的各种姿势. 当时我想的是用线段树维护区间和,然后用单点判0,维护区间间断个数.然后打 ...
- 解决android studio引用远程仓库下载慢(JCenter下载慢)
使用开源中国的maven库 阿里云的(速度飞快):http://maven.aliyun.com/nexus/content/groups/public/ 替换项目根目录下build.gradle中的 ...
- Nginx 在线新增模块
系统:Centos7.5 Nginx版本:1.12.2 今天给项目添加ssl证书时,发现nginx 竟然不支持ssl,经过查看,询问相关人员发现nginx编译的时候没有任何模块(历史原因).哎.... ...
- Map的clear与new Map的区别
对于clear与new Map的区别.我们首先来看一个例子,本例子是我在实际开发中遇到的,需求就是讲map放入到list中,说白了就是list转map,有两种实现方式,分别是: // 方案一 Map& ...
- 《转载》最新鲜最详细的Android SDK下载安装及配置教程
Android开发环境搭建可以分: 第一步.安装JDK: 第二步.安装Eclipse: 第三步.下载并安装AndroidSDK: 下面详细介绍. 第一步.安装JDK Android开发工具要求必须 ...