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 Server 和 Client 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 一篇搞定!