网络安全Docker部署DVWA靶机环境

Posted 白面安全猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络安全Docker部署DVWA靶机环境相关的知识,希望对你有一定的参考价值。

目录


前言

Docker很好用,DVWA更是网络安全学习当中必不可少的靶机,但是DVWA的部署实在是太过麻烦了,如果每次不小心删除虚拟机或者更新了VM之后导致虚拟机不可用而删除重新部署,那简直就是灾难。
而这就是Docker的优势了!Docker在部署之后可以打包成压缩文件,推送仓库之后就可以在任何地方的Docker上运行了!

Docker部署

废话不多说,如果对Docker发展和详细使用感兴趣的话可以私信博主,博主会尽快安排下一次文章更新的时候用这个命题。
但是现在是Docker部署的时间。

Docker的详细部署在阿里镜像站当中有讲解,但是博主依然需要说一遍,为那些不愿意这个网站跑那个网站跑的小伙伴。

另外,阿里镜像站地址:阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区

好的,接下来就是Docker部署的详细过程:
CentOS7按照以下流程部署Docker:

# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start

Ubuntu 14.04/16.04按照以下流程部署Docker:

# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce

安装完成之后检查:

systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2022-09-28 04:00:50 EDT; 12s ago
     Docs: https://docs.docker.com
 Main PID: 1870 (dockerd)
    Tasks: 8
   Memory: 26.0M
   CGroup: /system.slice/docker.service
           └─1870 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Sep 28 04:00:50 localhost.localdomain dockerd[1870]: time="2022-09-28T04:00:50.265127794-04:00" level=info msg="scheme \\"unix\\" not registered, fallback to default scheme" module=grpc
Sep 28 04:00:50 localhost.localdomain dockerd[1870]: time="2022-09-28T04:00:50.265143764-04:00" level=info msg="ccResolverWrapper: sending update to cc: [unix:///run/containerd/containerd.s..." module=grpc
Sep 28 04:00:50 localhost.localdomain dockerd[1870]: time="2022-09-28T04:00:50.265150427-04:00" level=info msg="ClientConn switching balancer to \\"pick_first\\"" module=grpc
Sep 28 04:00:50 localhost.localdomain dockerd[1870]: time="2022-09-28T04:00:50.387953415-04:00" level=info msg="Loading containers: start."
Sep 28 04:00:50 localhost.localdomain dockerd[1870]: time="2022-09-28T04:00:50.505662478-04:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon o...d IP address"
Sep 28 04:00:50 localhost.localdomain dockerd[1870]: time="2022-09-28T04:00:50.561726871-04:00" level=info msg="Loading containers: done."
Sep 28 04:00:50 localhost.localdomain dockerd[1870]: time="2022-09-28T04:00:50.576472215-04:00" level=info msg="Docker daemon" commit=e42327a graphdriver(s)=overlay2 version=20.10.18
Sep 28 04:00:50 localhost.localdomain dockerd[1870]: time="2022-09-28T04:00:50.576596092-04:00" level=info msg="Daemon has completed initialization"
Sep 28 04:00:50 localhost.localdomain systemd[1]: Started Docker Application Container Engine.
Sep 28 04:00:50 localhost.localdomain dockerd[1870]: time="2022-09-28T04:00:50.593902917-04:00" level=info msg="API listen on /var/run/docker.sock"
Hint: Some lines were ellipsized, use -l to show in full.

设置自启:

 systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

至此,docker部署完成。


DVWA部署

DVWA部署有两种方式,一种是使用其他作者已经上传到镜像仓库的DVWA镜像,另一种是自己在Docker容器当中部署,博主推荐自己部署一次,因为这方便去理解DVWA的结构,同时也熟悉一下环境。
首先讲第一种部署方式,通过他人镜像进行部署。

仓库镜像部署DVWA

第一步
是在docker仓库搜索是否有DVWA的镜像:

sudo docker search DVWA
NAME                                 DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
citizenstig/dvwa                     Docker container for Damn Vulnerable Web App…   68                   [OK]
sagikazarmark/dvwa                   DVWA (Damn Vulnerable Web Application) Docke…   14                   [OK]
infoslack/dvwa                                                                       12                   [OK]
cytopia/dvwa                         DVWA (Damn Vulnerable Web Application) with …   9
astronaut1712/dvwa                   Docker for DVWA LAB: https://github.com/Rand…   5                    [OK]
utspark/dvwa_frontend                                                                3
……

可以看到DVWA的镜像是非常多的,事实上作为一个全球知名的攻防环境服务,有这样的数量的镜像并不奇怪,其实博主此时的想法是如果通过k8s部署DVWA怎么样,哈哈,这实在是太浪费资源了。

第二步
选择镜像并拉取到本地,博主选择的是sagikazarmark/dvwa

sudo docker pull sagikazarmark/dvwa
Using default tag: latest
latest: Pulling from sagikazarmark/dvwa
693502eb7dfb: Pull complete
e6c91bb380b4: Pull complete
e111b9773d58: Pull complete
55f12e04cfae: Pull complete
8f1b50e10184: Pull complete
Digest: sha256:1224167ccb59ad64751d52d7beb75fd445a252ae3c13640cfd35c927a2a6725b
Status: Downloaded newer image for sagikazarmark/dvwa:latest
docker.io/sagikazarmark/dvwa:latest

拉取镜像之后我们可以去查看镜像,确定服务是否正常:

sudo docker images -a
REPOSITORY           TAG       IMAGE ID       CREATED       SIZE
sagikazarmark/dvwa   latest    e901498e651a   5 years ago   359MB

可以看到镜像已经老老实实的躺在镜像仓库里了,接下来我们就是运行他了。

第三步
基于DVWA镜像运行docker容器
需要注意的是,这个镜像对外服务的端口是80,所以我们在运行镜像的时候就需要将80端口映射出来,避免后面服务部署完了结果无法访问的尴尬情况。
但是直接暴露80端口并不是安全的行为,如果是在生产环境当中,我们应该尽量避免服务的端口直接对公网暴露,这会导致非常多的安全问题。

sudo docker run --rm -itd -p 80:80 --name DVWA sagikazarmark/dvwa
b7cdfde8b3a7220d604424ec24659c4dfdf874618a37ffb332eaa75e0f90e84d

当出现容器的标识码之后,就说明容器运行成功了,但这还不是结束,因为docker中容器有七种状态,分别是created(创建)restarting(重启)running(运行)removing(迁移)paused(等待)exited(停止)dead(死亡)
只有当容器处于up状态时才是可用状态,因此我们需要确认一下容器的状态:

sudo docker ps -a
CONTAINER ID   IMAGE                COMMAND     CREATED         STATUS         PORTS                                         NAMES
b7cdfde8b3a7   sagikazarmark/dvwa   "/run.sh"   4 minutes ago   Up 4 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp, 3306/tcp   DVWA

可以看到,我们的容器已经起来了,这意味着我们已经可以使用他了,现在我们通过浏览器去访问一下看看。

第四步
使用浏览器访问。

可以看到我们已经可以访问DVWA的网站了,至此,我们的DVWA就已经部署完成了。
默认账号密码设置:

user:root
password:P@ssw0rd
database:dvwa

这是第一种部署DVWA的方法。

手动部署DVWA

手动部署DVWA相对于镜像部署会更加麻烦,因为需要LAMP环境的支持。那么什么是LAMP环境呢?说实话刚入门的时候博主也不知道这玩意到底是啥,后来查了资料才知道这就是四个环境合并后的简称,他们分别是:

  • L代表的是Linux操作系统环境
  • A代表的是Apache HTTP服务
  • M代表的是mysql数据库服务
  • P代表的是php后端服务支持

除了LAMP之外,还有另一种更新的环境,叫做LNMP,这又是啥?同样的,这依然是四个环境合并后的简称其中只有N代表的不同:

  • N代表了nginx代理服务,同时这个服务也兼容HTTP功能

那么首先我们来部署LNMP环境

第一步
拉取一个纯净的centos7镜像来作为基础环境,在此之前记得停止DVWA容器,不然如果出现了端口占用导致服务部署失败的情况就尴尬了。另外由于之前的命,在停止DVWA之后,就会自动删除容器。
这个参数是--rm

sudo docker stop DVWA

拉取纯净的centos7镜像:

sudo docker pull centos:centos7.9.2009
centos7.9.2009: Pulling from library/centos
2d473b07cdd5: Pull complete
Digest: sha256:c73f515d06b0fa07bb18d8202035e739a494ce760aa73129f60f4bf2bd22b407
Status: Downloaded newer image for centos:centos7.9.2009
docker.io/library/centos:centos7.9.2009

第二步
启动centos容器并部署LAMP环境

sudo docker run --rm -itd -p 80:80 --name DVWA centos:centos7.9.2009
c7166a6928e4e75e94dc30b7a63008c68be8e555f7f24b7c84963dfe432aa7ad

检查容器状态

sudo docker ps -a
CONTAINER ID   IMAGE                   COMMAND       CREATED         STATUS         PORTS                               NAMES
c7166a6928e4   centos:centos7.9.2009   "/bin/bash"   4 seconds ago   Up 4 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   DVWA

第三步
部署LNMP环境,可以分开部署,也可以通过部署脚本部署,这个部署脚本就叫LNMP。博主选择的是通过脚本去部署,实在是不想去写设置,自动化运维不就是为了这个而诞生的嘛。
进入容器当中。

sudo docker exec -it DVWA bash

现在的容器还是一个纯净的centos,所以我们要把该装的都装好,这个就是根据个人习惯来了,但是wget必须要装,之后要用到的。

yum install -y wget
cd /root/

下载LNMP安装包

 wget http://175.6.32.4:88/soft/lnmp/lnmp1.4.tar.gz
--2022-09-28 08:56:06--  http://175.6.32.4:88/soft/lnmp/lnmp1.4.tar.gz
Connecting to 175.6.32.4:88... connected.
HTTP request sent, awaiting response... 200 OK
Length: 137189 (134K) [application/octet-stream]
Saving to: 'lnmp1.4.tar.gz'

100%[=====================================================================================================================================================================>] 137,189     --.-K/s   in 0.1s

2022-09-28 08:56:06 (1.30 MB/s) - 'lnmp1.4.tar.gz' saved [137189/137189]

解压并安装LNMP

tar zxf lnmp1.4.tar.gz 
cd lnmp1.4
./install.sh lamp
+------------------------------------------------------------------------+
|          LNMP V1.4 for CentOS Linux Server, Written by Licess          |
+------------------------------------------------------------------------+
|        A tool to auto-compile & install LNMP/LNMPA/LAMP on Linux       |
+------------------------------------------------------------------------+
|           For more information please visit https://lnmp.org           |
+------------------------------------------------------------------------+
You have 5 options for your DataBase install.
1: Install MySQL 5.1.73
2: Install MySQL 5.5.56 (Default)
3: Install MySQL 5.6.36
4: Install MySQL 5.7.18
5: Install MariaDB 5.5.56
6: Install MariaDB 10.0.30
7: Install MariaDB 10.1.23
0: DO NOT Install MySQL/MariaDB
Enter your choice (1, 2, 3, 4, 5, 6, 7 or 0):

一路回车选择默认项,等待安装完成。如果不打算选择默认项也可以仔细阅读说明,然后根据说明进行操作。
当你看到以下这句话的时候:

Install lnmp V1.4 completed! enjoy it.

就说明你的LAMP环境已经安装完成了,由于没有赋予容器权限,因此不能使用例如service systemctl这样的命令来查看服务状况,所以我们只能查看进程。

 ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 16:48 pts/0    00:00:00 /bin/bash
root         20      0  0 16:51 pts/1    00:00:00 bash
root      95975      0  0 17:27 ?        00:00:00 /usr/local/apache/bin/httpd -k start
www       95980  95975  0 17:27 ?        00:00:00 /usr/local/apache/bin/httpd -k start
www       95981  95975  0 17:27 ?        00:00:00 /usr/local/apache/bin/httpd -k start
www       95982  95975  0 17:27 ?        00:00:00 /usr/local/apache/bin/httpd -k start
www       95983  95975  0 17:27 ?        00:00:00 /usr/local/apache/bin/httpd -k start
www       95984  95975  0 17:27 ?        00:00:00 /usr/local/apache/bin/httpd -k start
root      95996      0  0 17:27 pts/1    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/var --pid-file=/usr/local/mysql/var/c7166a6928e4.pid
mysql     96490  95996  0 17:27 pts/1    00:00:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/
root      96600     20  0 19:08 pts/1    00:00:00 ps -ef

我们可以看到,属于apache的http服务和mysql的服务已经运行了。
但是还没有结束呢,我们现在只是把部署DVWA的前置步骤给做完了,有了这个环境我们才能部署DVWA,所以接下来我们就是开始部署DVWA了!太激动了,终于到这一刻了,我们做了这么多就是为了这一刻!

第四步
部署DVWA
首先我们需要去下载DVWA的安装包,这次我们从github上去获取。不过别激动,我们还有一件事情没有做,那就是回到/root目录下,我想你也不想自己的项目变得乱七八糟的吧,如果某一天忘记了自己把软件包放在哪了,那简直是太痛苦了。

cd ~
wget https://github.com/digininja/DVWA/archive/refs/heads/master.zip

由于github的服务器在国外,所以我们可能需要等待一会,这不需要太多的时间,只有一会,我们已经离胜利很接近了。
下载完了之后我们解压,并将整个DVWA目录放入/home/wwwroot/default/中。

 unzip master.zip
 mkdir /home/wwwroot/default/DVWA
 cp -r DVWA-master/* /home/wwwroot/default/DVWA/

我们已经无比接近成功了!就快了!接下来我们修改DVWA的配置文件,这里博主想要稍稍的矫情一下,博主非常喜欢vim,这是一个非常好用并且方便的文本工具,所以先要安装它。

yum install -y vim

好了,现在我们来修改DVWA的配置文件。这是为了将DVWA的数据库默认密码修改成MySQL的默认密码,这是为了服务在对接的时候不会出现数据库连接错误。

cd /home/wwwroot/default/DVWA/config/
cp config.inc.php.dist config.inc.php
vim config.inc.php
...
$_DVWA[ 'db_user' ]     = 'root';
$_DVWA[ 'db_password' ] = 'root';
...

接下来,我们就可以访问它了!
和镜像部署不同的是,我们在访问手动部署的DVWA时,要输入:

http://IP/DVWA

你完成了!拜托,这超酷的好吗!你已经完成了在Docker这个容器引擎里部署属于你自己的DVWA靶机环境!让我们为自己欢呼一会吧,但是不要高兴的太久,这只是部署了服务,在之后我们还需要尝试攻破它。
完成DVWA吧!成为一个超棒的极客!


DVWA靶机安装教程

DVWA靶机详细安装教程

首先搭配环境windows10

1、先下载"PhpStudy"环境,官方链接:https://www.xp.cn/。

如图显示;


我用的是phpStudy v8.1版本最新版本。

下载后点击运行就直接无脑安装(注意:安装选盘路径不能包含“中文”或者“空格”,否则会报错(例如错误提示:Can’t change dir to 'G:\\x65b0\\x5efa\\x6587\\)

上面安装步骤没问题,下面安装成功会跳出来启用功能
如图显示;

启动之后登陆127.0.0.1,测试是否成功(正确)
如图显示;

"PhpStudy"环境搭建完成,接下来咱们就安装DVWA了。

2、DVWA官方下载链接:https://dvwa.co.uk/

直接点击DOWNLOAD下载;

DVWA安装包下载之后,注意:将DVWA安装包把在phpstudy_pro\\WWW目录下进行解压

进行DVWA-master目录里的config

如果看到的是config.inc.php的话,可以在右上角【查看】–>【隐藏的项目】勾选上

然后把文件(.dist)后缀名删掉

点击config.inc.php文件,打开方式为记事本,编辑配置文件
user与password一定要修改为root
这里能看到我们的key没有了,之后的实验可能要用到,我们需要补全,要不然稍后会有一个missing报错,且相关的一些实验没法启动,修改后保存

在这我也列出大佬的key来吧
Site key:
6LdJJlUUAAAAAH1Q6cTpZRQ2Ah8VpyzhnffD0mBb
Secret key:
6LdJJlUUAAAAAM2a3HrgzLczqdYp4g05EqDs-W4K
然后尝试登录,自己目录的地址哈我这里的是这样:
127.0.0.1/DVWA-master 默认用户/密码 admin /password


登录成功,并且没有missing错误,下面提示我们需要on开起来,注意看路径,是php版本号的文件夹。

打开第一个,找到提示的这两个代码
可在phpstudy_pro\\Extensions\\php\\php7.3.4nts目录搜索【php.ini】根据自己安装的路径进行打开

修改保存再次登录,登录后没问题就收工

以上是关于网络安全Docker部署DVWA靶机环境的主要内容,如果未能解决你的问题,请参考以下文章

DVWA靶机安装教程

DVWA靶场环境搭建

DVWA靶机-sql自动注入

网络安全学习渗透测试篇01-DVWA靶场环境搭建教程

DVWA靶机--简单的文件上传漏洞

dvwa下载及安装-图文详解+phpStudy配置