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. logback在springBoot项目中的使用 springboot中使用日志进行持久化保存日志信息

    文章目录 1.xml文件的编写 2.实现的效果 2.1 日志保存到磁盘 2.2 控制台输出的效果 放置的位置 1.xml文件的编写 logback-spring.xml <?xml versio ...

  2. VScode将代码提交到远程服务器、同时解决每次提交都要输入密码的问题(这里以gitee为例子)

    文章目录 1.第一种情况.项目直接从gitee上拉取下来 2.第二种情况.将新建的项目提交到远程服务器 3.解决将代码提交到远程每次都要输入用户名和密码 4.个人遇到的奇葩问题 1.第一种情况.项目直 ...

  3. 知识图谱顶会论文(KDD-2022) kgTransformer:复杂逻辑查询的预训练知识图谱Transformer

    论文标题:Mask and Reason: Pre-Training Knowledge Graph Transformers for Complex Logical Queries 论文地址: ht ...

  4. python爬虫下载小说

    1. from urllib.request import urlopen from urllib import request from bs4 import BeautifulSoup from ...

  5. packet Capture 手机抓包工具

    packet Capture packet Capture 是一款免root的app, 运行在安卓平台上,用于捕获http/https网络流量嗅探的应用程序 特点: 捕获网络数据包,并记录太慢,使用中 ...

  6. 云原生之旅 - 7)部署Terrform基础设施代码的自动化利器 Atlantis

    前言 前面有几篇文章讲述了如何使用Terraform创建资源 (基础设施即代码 Terraform 快速入门, 使用 Terraform 创建 Kubernetes) 以及 Kubernetes时代的 ...

  7. 【Zulip】邮件系统配置

    通过docker-compose(docker-zulip)部署Zulip实例时需要配置邮件系统 SETTING_ZULIP_ADMINISTRATOR: '...@qq.com' SETTING_E ...

  8. centos7内核升级记录

    1. 挂载centos7.9最终版镜像,执行升级执行:yum update 2. 重启服务器系统:init 6 3. 查看当前内核版本:uname -r 4. 查看历史内核,并卸载没用的:rpm -q ...

  9. 图文并茂解释开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别

    世界上的开源许可证(Open Source License)大概有上百种,而我们常用的开源软件协议大致有GPL.BSD.MIT.Mozilla.Apache和LGPL. 从下图中可以看出几种开源软件协 ...

  10. go get 报错:dial tcp 142.251.43.17:443: i/o timeout

    自动下载 go env -w GO111MODULE=on 设置环境为国内代理 go env -w GOPROXY=https://goproxy.cn,direct 注:go 版本需要支持 mod