手把手教你攻克 DVWA 靶场实战教程,零基础快速上手 DVWA 靶场,网络安全渗透测试实战全攻略!
介绍Damn Vulnerable WebApplication(DVWA)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用旨在安全专业人员测试自己的专业技能和工具提供合法的环境帮助Web开发者更好的理解Web应用安全防范的过程。DVWA共有十个模块分别是Brute Force、CommandInjection、CSRF、File Inclusion、File Upload、Insecure CAPTCHE、SQL Injection、SQL InjectionBlind、XSSReflected。DVWA分为low、medium、high和impossible四个等级。环境搭建2.1 安装XAMPPXAMPP是一个集成的易于安装的WEB环境部署包其中包括了ApacheMySQLPHPPerl等。这样可以方便部署不用单个去安装需要的服务。下载xampp-win32-7.1.11-0-VC14-installer.exe进行安装即可。安装完成后开启Apache和MySQL服务以供DVWA部署使用。2.2 部署DVWA将下载好的DVWA-master.zip解压到DVWA文件夹中将php文件所在文件夹放入Apache服务的默认网站目录D:\xampp\htdocs中即可。之后利用浏览器打开http://127.0.0.1/dvwa/setup.php进行安装。出现如下提示按要求进行后再次进行安装得到如下页面。数据库在这里可以创建或者重置在dvwa目录下的config\config.inc.php中可以查看数据库的初始设置这里点击Create/Reset Database。点击后显示不能连接到mysql其实是要dvwa的数据写入到MySQL服务中去但是MySQL的默认用户名和密码与dvwa下的登录MySQL密码不多要想使用MySQL就需要修改config.inc.php中的用户和登录密码为XAMPP中MySQL的默认用户名和密码。XAMPP中MySQL用户名和密码在\xampp\phpMyAdmin下的config.inc.php中phpMyAdmin是使用PHP语言编写可以通过互联网控制和操作MySQL的进入发现默认用户名为root密码为空要想修改密码需要先进入phpMyAdmin页面点击账户然后选择root账户修改权限选择修改密码这里可以生成复杂密码设置为root/5211而后将config.inc.php中的密码设置为5211设置如图另外设置dvwa登录MySQL的配置文件config.inc.php将其设置为root/5211后再次点击Create/ResetDatabase即可。设置和效果如图2.3 登录登录http://127.0.0.1/dvwa/login.php即可完成登录DVWA的默认账号在如下路径中可以找到结果如图利用admin/password登录成功结果如图Brute Force暴力破解是指利用密码字典使用穷举法猜出密码口令是现在最广泛的的攻击手段之一一般都是将数据库全部拷贝下来完成脱库然后洗库最后撞库时候用暴力破解完成。3.1 Low等级3.1.1 漏洞分析设置为Low状态代码如下发现只是验证了Login是否被设置没有任何防爆破机制且对username和password没有任何过滤机制只是对password执行了md5处理有明显的SQL注入。3.1.2 利用Burp进行爆破在用户名密码处随意输入截取登录请求如下将其复制到Intruder中设置username和password参数为payload设置爆破方式为ClusterBomb如图之后点击Payloads选项卡载入字典这里选择的是交叉模式会将所有的组合进行尝试如图点击Start attack进行爆破这里选择的是Burp自带的字典本身就有很多内容同时要执行交叉模式种类就会更多所以该方法除非是去进行撞库或者知道某用户用户名去进行才比较合适。这里自己导入一些用户名和密码进行测试即可。因为登录失败都会返回Username and/or password incorrect.所以可以在Options选项卡的Grep-Extract添加此筛选条件对没有该返回项的请求进行分析发现为正确用户名和密码。当然我们也可以根据返回包的长度发现错误请求的返回包长度都一致而正确请求的会出现差别。结果如下3.1.3 利用SQL注入进行登录在知道用户名的情况下可以利用sql注入实现登录Username填写admin’ #Password填写空则登录成功效果如下当然可以设置Username为admin’ or ‘1’ ‘1Password填写空因为TRUE or Trueand False和True or False and False都为True所以’1’ 2或者12都可以只要最后满足sql语句即可登录成功效果如下3.2 Medium等级3.2.1 漏洞分析设置为Medium等级查看源码如下根据源码发现在Low等级的基础上利用mysqli_real_escape_string是将sql语句中的一些特殊字符进行转义‘、 这样就可以达到防止sql注入的目的具体的原理如下不转义输入admin’ #后会执行如下的sql语句SELECT * FROM users WHERE user ‘admin’ #’ AND password ‘KaTeX parse error: Undefined control sequence: \* at position 38: …成如下sql语句SELECT \̲*̲ FROM \users\…pass’;从而无法完成注入。但是这种办法可以利用编码的漏洞来实现注入如果将编码方式改为默认以外的方式服务器就无法进行识别从而不能进行转义仍然变成第一个语句的情况实现绕过好像高版本以及修复该问题而且如果是mysqli应该没有相关漏洞。之后源码里使用了sleep(2)的策略但是仍然无法避免爆破。3.2.2 利用Burp进行爆破使用Low中的配置进行爆破当然由于还是采用休眠两秒爆破的时间会有点慢如果在不知道一定信息的话这种方式很不可取爆破仍然按Low等级那样处理结果如图3.3 High等级3.3.1 漏洞分析设置为High等级查看源码如下可以发现这里在发送请求时候加入了Token验证每次请求的token都是上次返回页面中得到的所以这里想要爆破的话首先要获得上次页面中返回的token才可以。用户名做了stripslashes过滤反斜杠和mysqli_real_escape_string操作可以防止sql注入。3.3.2 Beautiful Soup获取响应token进行爆破这里需要获取上一次请求返回的token这里我们刷新登录界面截取请求如下然后查看返回页面中token的位置再截取登录请求了解登录请求数据这里利用Python的BeautifulSoup库创建抓取网页中token的函数先从刷新的登录页面中抓取token而后发送登录请求得到响应的状态码长度和token然后用获得的token进行下次请求完成爆破这里可以在Python中打印结果也可以从Burp中获取每次请求长度来判断结果。3.4 Impossible等级设置为Impossible查看源码发现设置了错误次数当检测到3次错误以后账户被锁定15分可以有效的防止爆破。另外在sql查询时候采用了PDO机制该机制将查询的变量参数化首先发送sql模板然后把传入的参数只做查询处理不做语意解释传递的任何参数都会被当做字符串进行处理这样每次查询的sql语句就会固定不会发生注入现象。如何系统学习网络安全/黑客网络安全不是「速成黑客」而是守护数字世界的骑士修行。当你第一次用自己写的脚本检测出漏洞时那种创造的快乐远胜于电影里的炫技。装上虚拟机从配置第一个Linux环境开始脚踏实地从基础命令学起相信你一定能成为一名合格的黑客。如果你还不知道从何开始我自己整理的282G的网络安全教程可以分享我也是一路自学走过来的很清楚小白前期学习的痛楚你要是没有方向还没有好的资源根本学不到东西下面是我整理的网安资源希望能帮到你。需要的话可以V扫描下方二维码联系领取~如果二维码失效可以点击下方链接去拿一样的哦【CSDN大礼包】最新网络安全/网安技术资料包~282G无偿分享1.从0到进阶主流攻防技术视频教程包含红蓝对抗、CTF、HW等技术点2.入门必看攻防技术书籍pdf书面上的技术书籍确实太多了这些是我精选出来的还有很多不在图里3.安装包/源码主要攻防会涉及到的工具安装包和项目源码防止你看到这连基础的工具都还没有4.面试试题/经验网络安全岗位面试经验总结谁学技术不是为了赚$呢找个好的岗位很重要需要的话可以V扫描下方二维码联系领取~因篇幅有限资料较为敏感仅展示部分资料添加上方即可获取如果二维码失效可以点击下方链接去拿一样的哦【CSDN大礼包】最新网络安全/网安技术资料包~282G无偿分享