DVWA系列1:搭建 DVWA 环境

DVWA 是一个合法的漏洞测试、学习环境,先引用一段官方的介绍:

Damn Vulnerable Web Application (DVWA) is a PHP/MySQL web application that is damn vulnerable. Its main goal is to be an aid for security professionals to test their skills and tools in a legal environment, help web developers better understand the processes of securing web applications and to aid both students & teachers to learn about web application security in a controlled class room environment.

一直从事 Web 端的应用开发,对于一些漏洞有所耳闻。终究是纸上得来终觉浅,缺乏实际操作总感觉理解不深刻,因此想利用 DVWA 好好学习实践一下,也记录下自己的理解和学习过程。本次就先从安装环境开始吧XD。

DVWA 运行在 LAMP 环境,也就是需要安装下 Linux,Apache,MySQL,PHP。这里需要注意的是,此时的安装不是我们搞开发时环境的安装,不是版本比较新的就是好的。即使版本老一些,能用就可以了。毕竟我们的目的是使用 DVWA 来学习,不是开发 DVWA 。之前一直想配置 MySQL 5.7 和 PHP7,结果踩了不少坑也没有配好。因此本文环境的搭建主要目标是快速和方便,尽量采用 yum 安装的方式

各个组件的版本号为 CentOS 7.9,Apahce 2.4.6,MySQL 5.5.62,PHP 5.4。

Damn Vulnerable Web Application is damn vulnerable! Do not upload it to your hosting provider's public html folder or any Internet facing servers, as they will be compromised. It is recommended using a virtual machine (such as VirtualBox or VMware), which is set to NAT networking mode.

!!!应尽量在虚拟机中进行,不要放在 公网服务器上 或 对外暴露,以免造成不必要的风险。!!!

0. 前置准备

虚拟机安装 CentOS 和 更换软件源有较多文章,就不在此展开了。

新装的 CentOS 7.9 中,防火墙 和 SELinux 默认是开启的,这个会造成后续操作的不便,如 阻止从外部连接 Apache 和 MySQL,阻止 PHP 连接数据库,因此需要先关闭这两个:

// 关闭防火墙
> systemctl stop firewalld.service
// 禁用防火墙自启动
> systemctl disable firewalld.service // 临时关闭 SELinux
> setenforce 0
// 永久关闭
> vi /etc/selinux/config
SELINUX=enforcing 改为 SELINUX=disabled

1. 安装 Apache

这个比较简单,直接使用如下命令即可:

// 安装
> yum install -y httpd // 启动
> systemctl start httpd

2. 安装 MySQL 5.5

A. 安装下载工具 wget

> yum install -y wget

B. 删除原有的 MariaDB 相关内容

> yum -y remove maria*

C. 开始安装

先找到安装包的链接,打开 MySQL 的网站。由于我们下载的是早已过时的版本,因此点击右下角的 Download Archives,点击 MySQL Community Server

选择版本和操作系统后会自动筛选,我们下载 MySQL ServerClient Utilities 即可,命令为:

// 下载
> wget https://downloads.mysql.com/archives/get/p/23/file/MySQL-server-5.5.62-1.el7.x86_64.rpm
> wget https://downloads.mysql.com/archives/get/p/23/file/MySQL-client-5.5.62-1.el7.x86_64.rpm // 安装
> yum install -y MySQL-server-5.5.62-1.el7.x86_64.rpm
> yum install -y MySQL-client-5.5.62-1.el7.x86_64.rpm

D. 启动与配置

// 启动 MySQL
> systemctl start mysql
// 开机自启动 MySQL
> systemctl enable mysql

之后输入命令 mysql -u root 并回车,进入 mysql shell 设置密码:

# mysql shell 中

// 设置密码为 123456
> set password=password('123456'); // 设置可以从任意 ip 以 root 身份访问(注意密码要与之前的一致)
> grant all privileges on *.* to 'root'@'%' identified by '123456';
// 刷新权限
> flush privileges;

使用 exit 退出 mysql shell,并重启 mysql 服务:

> systemctl restart mysql

此时尝试一下,就可以在外部访问了。

!!!只针对 MySQL 5.5,更高的版本操作步骤不完全相同!!!

One More Thing

如果某一天这个包不想要了,想要卸载。可以先执行命令查找要卸载的包:

> rpm -qa | grep -i mysql

// 命令结果:
// MySQL-server-5.5.62-1.el7.x86_64
// MySQL-client-5.5.62-1.el7.x86_64

此时如果傻傻地输入 yum erase MySQL-server-5.5.62-1.el7.x86_64 可就大错特多了。因为后面是版本号,真正的包名是 MySQL-server,因此要使用命令卸载

> yum erase MySQL-server
> yum erase MySQL-client

3. 安装 PHP 5.4

使用命令安装即可:

> yum install -y php php-pdo php-mysqlnd php-cli php-gd

4. 设置 DVWA 项目

使用自己喜欢的方式,下载 DVWA 项目 并拷贝到 Apache 的目录 /var/www/html 下,类似与拷贝网页到 WEB 服务器。之后拷贝一份配置模板:

// 拷贝配置模板
> cp /var/www/html/config/config.inc.php.dist /var/www/html/config/config.inc.php

使用 vim 修改对应的数据库配置:

此时访问下 DVWA 首页,可以看到网站已经基本可以运行了。

点击左侧的 Setup/Reset DB,进行数据库的初始化操作。发现还有很多标注为红色的警告需要对应处理下:

可以看到问题有:

a. 禁用了 PHP 的 allow_url_include 函数

b. reCAPTCHA key 未配置(谷歌的验证码服务,暂时不配置)

c. 目录 /var/www/html/hackable/uploads 和 /var/www/html/config 没有写入权限,文件 /var/www/html/external/phpids/0.6/lib/IDS/tmp/phpids_log.txt 没有写入权限

A. 再配置 PHP

使用 vim 修改 /etc/php.ini,查找 allow_url_include 并修改为 On

B. 再配置文件系统

// 添加写入权限
> chmod a+w /var/www/html/hackable/uploads
> chmod a+w /var/www/html/config
> chmod a+w /var/www/html/external/phpids/0.6/lib/IDS/tmp/phpids_log.txt // 配置完成后需要重启 httpd
> systemctl restart httpd

刷新页面,可以看到(除了二维码)配置都已经没有问题了。

点击下方 Create / Reset Database 按钮,可以看到提示成功了。

左侧有很多典型的漏洞项目,可以使用页面上方提示的 用户名:admin,密码 password 愉快de玩耍了XD。如果要调整难度,可以通过左侧的 DVWA Security 操作。

5. 后记

开始的时候安装 PHP 和 Apache 遇到了很多坑,在这里简单描(tu)述(cao)一下吧。一开始是使用 yum 安装的 httpd,之后安装 PHP7 时,也是添加软件源后使用 yum 安装的,但是好像只安装了 Apache httpd 的一个模块。php -v 命令无法运行,而且无法连接数据库。之后查到的都是使用源码编译安装,而且编译时 php 的配置也各不相同,似乎还需要以源码编译的方式安装 Apache httpd。感觉过于复杂,后来看到一篇文章,里面使用 PHP5 也可以运行 DVWA,因此转变思路,使用低版本软件。

参考:

DVWA GitHub

关闭 SELinux

CentOS7防火墙关闭

CentOS7安装mysql5.5

mysql 远程 error 2002,远程服务器的phpmyadmin 2002错误

1 Way To Install DVWA On CentOS 7

DVWA靶场搭建

Centos7源码安装mysql55+apache+php7(php-fpm)

Linux下PHP7安装与Apache配置

linux yum查看已安装包,查看yum已安装的包

Web安全—LAMP搭建PHP网站(持续完善)

yum httpd php7_Centos 7利用yum安装apache+mysql 8+php7 一篇搞定!

DVWA系列1:搭建 DVWA 环境的更多相关文章

  1. Android开发系列之搭建开发环境

    接触Android好久了,记得09年刚在中国大陆有点苗头的时候,我就知道了google有个Android,它是智能机操作系统.后来在Android出1.5版本之后,我第一时间下载了eclipse开发工 ...

  2. python cookie登录DVWA,phpstudy搭建DVWA参考https://www.jianshu.com/p/97d874548300

    import requestsheader={"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleW ...

  3. 如何在本地搭建DVWA环境

    如何在本地搭建DVWA环境 1.工具下载:  (1)phpStudy:   http://phpstudy.php.cn/download.html (2)DVWA:http://www.dvwa.c ...

  4. kali 2.0下搭建DVWA环境

    DVWA (Dam Vulnerable Web Application)DVWA是用PHP+Mysql编写的一套用于常规WEB漏洞教学和检测的WEB脆弱性测试程序.包含了SQL注入.XSS.盲注等常 ...

  5. kali linux 2.0下搭建DVWA渗透测试演练平台

    DVWA (Dam Vulnerable Web Application)DVWA是用PHP+MySQL编写的一套用于常规WEB漏洞教学和检测的WEB脆弱性测试程序.包含了SQL注入.XSS.盲注等常 ...

  6. DVWA系列精品教程:2、命令注入

    文章更新于:2020-04-11 注:如何搭建环境参见:搭建DVWA Web渗透测试靶场 DVWA之命令注入漏洞 一.介绍 1.1.官方说明 1.2.总结 二.命令注入实践 2.1.安全级别:LOW ...

  7. 搭建DVWA Web渗透测试靶场

    文章更新于:2020-04-13 按照惯例,需要的文件附上链接放在文首. 文件名:DVWA-1.9-2020.zip 文件大小:1.3 M 文件说明:这个是新版 v1.9 (其实是 v1.10开发版) ...

  8. 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机)

    引言 在大数据学习系列之一 ----- Hadoop环境搭建(单机) 成功的搭建了Hadoop的环境,在大数据学习系列之二 ----- HBase环境搭建(单机)成功搭建了HBase的环境以及相关使用 ...

  9. SpringCloud系列二:Restful 基础架构(搭建项目环境、创建 Dept 微服务、客户端调用微服务)

    1.概念:Restful 基础架构 2.具体内容 对于 Rest 基础架构实现处理是 SpringCloud 核心所在,其基本操作形式在 SpringBoot 之中已经有了明确的讲解,那么本次为 了清 ...

  10. [.net 面向对象程序设计进阶] (25) 团队开发利器(四)分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境

    [.net 面向对象程序设计进阶] (25) 团队开发利器(四)分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境 本篇导读: 前面介绍了两款代码管理工具 ...

随机推荐

  1. 如何在.NET程序崩溃时自动创建Dump?

    今天在浏览张队转载文章的留言时,遇到一个读者问了这样的问题,如下图所示: 首先能明确的一点是"程序崩溃退出了是不能用常规的方式dump的",因为整个进程树都已经退出.现场已经无法使 ...

  2. springboot项目整合-注册功能模块开发

    工程简介 准备工作:项目所用到的html界面以及sql文件链接如下:链接: https://pan.baidu.com/s/18loHJiKRC6FI6XkoANMSJg?pwd=nkz2 提取码: ...

  3. javax.script.ScriptException: Cannot find engine named: 'nashorn', ensure you set language field in JSR223 Test Element: JSR223 预处理程序

    jmeter运行脚本报错,跟java版本有关,做个记录. 1. 问题记录: 执行登录接口测试,登录失败.点击jmeter右上角[黄色!],查看错误日志.显示如下: 2022-09-23 10:29:5 ...

  4. Oracle用户创建及删除

    偶尔会用到,记录.分享. 1. Oracle用户创建 #创建用户表空间create tablespace $username datafile '/u01/app/oracle/oradata/ufg ...

  5. 【题解】CF1722F L-shapes

    题面传送门 其实这题根本不用搜索,有耐心即可. 可以发现,在 \(n\times m\) 范围内扫,可能合法的只有以下四种情况,其中蓝色代表示是 *,红色表示不能是 *,其中黄色五角星表示当前 \(i ...

  6. 嵌入式-C语言基础:数组作为参数传递需要注意的问题

    #include <stdio.h> void printData(int data) { printf("%d\n",data); } //形参中不存在数组的概念,即 ...

  7. Bugku login1

    打开是个普普通通的登录界面,盲猜是注入题,先看看源码吧,没找到什么有用的信息,那就先注册试试 注册admin就已经存在,可能待会就爆破admin的密码也可能,因为没有验证嘛 试试注册其他的 登录发现他 ...

  8. java中的自动拆装箱

    一:是什么 java的自动拆装箱,是从jdk1.5之后被引入的,java中的类型分为基本类型和引用类型,而自动拆装箱,可以让基本类型和对应的包装类,无缝转换.先拿最基本的来看. public clas ...

  9. 架构解析:Dubbo3 应用级服务发现如何应对双11百万集群实例

    继业务全面上云后,今年双11,阿里微服务技术栈全面迁移到以 Dubbo3 为代表的云上开源标准中间件体系.在业务上,基于 Dubbo3 首次实现了关键业务不停推.不降级的全面用户体验提升,从技术上,大 ...

  10. Linux 基础-新手必备命令

    Linux 基础-新手必备命令 概述 常见执行 Linux 命令的格式是这样的: 命令名称 [命令参数] [命令对象] 注意,命令名称.命令参数.命令对象之间请用空格键分隔. 命令对象一般是指要处理的 ...