DVWA的部署和教程

  • 概述
  • 本地部署DVWA
    • 部署DVWA的基本环境
    • 下载DVWA
    • 配置MySql数据库
    • 配置DVWA
  • DVWA教程
  • 总结

概述

  DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助web开发者更好的理解web应用安全防范的过程。

本地部署DVWA

部署DVWA的基本环境

  dvwa本质也是一个web应用服务,所以可以使用下面的web应用服务组合来进行环境部署 – Apache + php + MySql。我在这篇博客中比较详细的讲解了该web环境的部署,参见 – CTF之web学习记录 – 工具篇。这篇博客中主要是在linux环境下分别安装三个工具,其实可以用集成环境直接一把搞定 – XAMPP,XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包。
  接下来是按照单独安装Apache+php+MySql的方式进行部署DVWA,和使用XAMPP略有区别,其实也就是一些目录的不同而已,基本思路是一样的。

下载DVWA

  DVWA
  上面是dvwa的链接,将下载好的文件解压出来,重新命名为dvwa,然后复制到/var/www/html目录下。

配置MySql数据库

  dvwa的使用需要结合MySql数据库,这里我们先在MySql数据库中创建一个用户供dvwa使用。用户名为dvwa,密码也是dvwa,授予该用户对dvwa数据库中所有表的所有权限。

$ sudo mysql
$ create database dvwa;
$ create user "dvwa"@"localhost" identified by "dvwa";
$ grant all on dvwa.* to "dvwa"@"localhost";

配置DVWA

  接下来是对DVWA的配置,下载DVWA,解压并重名为dvwa后,发现dvwa/config文件下没有config.inc.php文件,但有config.inc.php.dist文件。接下来按照下面命令行操作:

$ cp config.inc.php.dist config.inc.php
$ vim config.inc.php
# 对应行数的内容修改如下
# 对比官方文件也只是修改了db_password
......
......
 18 $_DVWA[ 'db_server' ]   = '127.0.0.1';
 19 $_DVWA[ 'db_database' ] = 'dvwa';
 20 $_DVWA[ 'db_user' ]     = 'dvwa';
 21 $_DVWA[ 'db_password' ] = 'dvwa';
 22 $_DVWA[ 'db_port'] = '3306';
 23
 24 # ReCAPTCHA settings
 25 #   Used for the 'Insecure CAPTCHA' module
 26 #   You'll need to generate your own keys at: https://www.google/recaptcha/admin
 27 $_DVWA[ 'recaptcha_public_key' ]  = '6LdK7xITAAzzAAJQTfL7fu6I-0aPl8KHHieAT_yJg';
 28 $_DVWA[ 'recaptcha_private_key' ] = '6LdK7xITAzzAAL_uw9YXVUOPoIHPZLfw2K1n5NVQ';
 ......
 ......

  上面文件中,23行之前对应数据库的配置,23行后对应
reCAPTCHA API key的配置,如果不配置对应的公私匙会在Insecure CAPTCHA章节出现如下的报错信息。

  之后我们访问http://your_local_ip/dvwa/setup.php,会出现Database Setup界面,如果你运气好,出现该界面时Setup Check中的状态应该是这样的,如下图所示。

  但最开始我安装的时候,php module gd/mysql/pdo_mysql状态都为红,后面两个module的缺失导致我无法点击运行最下面的Create / Reset Database。这里我们可以通过下面的命令进行安装,安装完后记得重启一下apache服务。

sudo apt install php-mysql
sudo apt install php-gd

  安装完上面的包后,Setup Check中还有一行状态为红色,allow_url_include,该状态会影响文件包含一节的操作,所以这里提前修改一下。首先在apache网页根目录下即/var/www/html目录下创建index.phpindex.php中的内容如下,然后访问http://your_local_ip/index.php,就可以看到php的配置信息,如下图所示。

<?php
	phpinfo();
?>


  上图中显示了我的php版本为7.2,且php.ini配置文件在/etc/php/7.2/目录下,我们需要修改该配置文件中的allow_url_include = On,如下截图所示,之后再重启下apache服务即可。

  最后我们修改一下一些目录和文件的可写权限,也就是下面截图中展示的两个目录和一个文件。如果本身就显示为Yes,表明权限正确,不需要进行修改。

$ cd /var/www/html/
$ sudo chmod 777 dvwa/hackable/uploads/
$ sudo chmod 777 dvwa/external/phpids/0.6/lib/IDS/tmp/phpids_log.txt
$ sudo chmod 777 dvwa/config/


  最后我们再点击上面的Create / Reset Database,如果config.inc.php文件中数据库配置正确,那么就会返回到DVWA的登录界面。如下图所示,此时用户名输入admin,密码为password,我们就可以开始进行我们的web漏洞学习了。

DVWA教程

  本来想自己再写一篇全系列的DVWA教程,但发现网上这种教程颇多,我也就不再做简单的搬运工了。大家可以参考一下这个系列的博文 — 新手指南:DVWA-1.9全级别教程,内容很详尽,虽细节之处略有偏失,但那些内容也正是需要我们自己动手才能掌握的。

总结

  在本次dvwa的环境搭建过程中,我遇到一些小问题,主要原因是我没有使用集成的web服务环境,而是自己选择了apache+php+mysql这种一步一步的方式来搭建这个环境。当然采取这种方式给自己造成了一些动手上的麻烦,但同时也帮助自己学习了更多的知识,以及在面临这些问题时该如何思考并尝试自己去解决,相信每克服一个问题,都将使自己变得更强大。

不忘初心,砥砺前行!

更多推荐

DVWA的部署和教程