在前期文章《六大知名Web安全漏洞靶场》中我们介绍了漏洞靶场的用途和能力介绍。其中DVWA作为Web安全入门必刷的靶场,包含了最常见的web漏洞,界面简单易用,通过设置不同的难度,可更好地理解漏洞的原理及对应的代码防护。本文详细介绍下如何利用docker快速搭建DVWA漏洞靶场。
1. 概览
DVWA涉及到多种技术栈,主要有PHP,mariadb,中间件(如apache,nginx等),如果不采用Docker方式安装,整个安装及配置过程会非常麻烦(从下图中可以看出DVWA涉及的安装依赖项),要把靶场手工一步一步搭建并运行起来,至少耗费1个小时。
但如果采用Docker方式安装可以分钟级搞定,有两种安装方式选择:
- 使用官方Docker镜像:直接拉取Docker Hub官方镜像运行靶场,预估耗时5min。
缺点:官方镜像是6年前构建的了,后续没有维护更新。
- 基于源码构建最新镜像(推荐):基于DVWA最新代码仓,利用Docker构建出最新镜像并运行靶场,预估耗时15min.
优点:可以运行最新版本的靶场,修复了旧版本中的Bug并新增了部分特性。
2. 前提条件
电脑上已经安装了Docker环境(比如Docker Desktop,Podman Desktop)。
有了Docker环境后,我们还需要配置镜像加速源(因为国内无法直接使用Docker Hub,据说Docker Hub中存在大量不受管控的恶意镜像源,所以在国内被封禁了)。
不过,大家可以在docker的配置文件(默认径为:/etc/docker/daemon.json
)中添加如下镜像源(非常全,几乎包含了大家日常用到的所有基础镜像)来实现Docker镜像的拉取:
{
"registry-mirrors": [
"https://do.nark.eu.org",
"https://docker.m.daocloud.io",
"https://docker.1panel.live",
"https://jyr6zqi9.mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://reg-mirror.qiniu.com",
"https://docker.mirrors.ustc.edu.cn",
"https://ccr.ccs.tencentyun.com",
"https://mirror.ccs.tencentyun.com",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://hub.uuuadc.top",
"https://docker.anyhub.us.kg",
"https://dockerhub.jobcher.com",
"https://dockerhub.icu",
"https://docker.ckyl.me",
"https://docker.awsl9527.cn",
"https://hub.fasterdocker.com",
"https://docker.13140521.xyz",
"https://hub.uuuadc.top/",
"https://docker.1panel.live",
"https://hub.rat.dev",
"https://docker.chenby.cn",
"https://docker.hpcloud.cloud",
"https://dislabaiot.xyz",
"https://dockerpull.com",
"https://atomhub.openatom.cn",
"https://docker.kubesre.xyz"
]
}
Note:以上配置完成后记得要重启Docker服务以让配置文件生效,执行命令
service docker restart
即可重启。
3. 安装步骤
3.1. 使用官方Docker镜像
执行如下命令拉取并运行DVWA靶场:
docker run --rm -it -p 80:80 vulnerables/web-dvwa
运行成功后有如下提示:
打开浏览器地址栏,输入http://127.0.0.1
或http://localhost
会直接跳转到如下登录界面(默认的账户名为:admin,密码为:password):
登录成功后,将页面滚动到最下方,点击“创建/重置数据库”按钮,完成DVWA靶场设置。
设置后页面自动跳转到漏洞靶场主页。
执行docker images
命令,可以看到拉取到本地的所有镜像信息,可以看到DVWA镜像是6年前更新的。
拉下来我们会介绍如何基于最新代码在本地构建出最新镜像。
3.2. 基于源码构建最新镜像
DVWA开源项目开始于2008年12月,时至今日(2024年)也一直有代码更新,累计Star数已经超过1万。
执行如下命令下载最新代码到本地:
git clone https://github.com/digininja/DVWA.git
切换到代码根目录并构建镜像:
cd DVWA
docker build -t dvwa:latest .
这里我们可以看到官方代码中已经增加了compose.yml文件,里面包含两个镜像成分,第一个镜像 dvwa:latest
就是我们上一步刚构建出来的,第二个镜像mariadb:10
是DVWA网站的后台数据库。
Note:MariaDB是由MySQL的原始开发者创建的。MariaDB的目的是为了提供一个完全兼容MySQL的替代品,用来避免MySQL被闭源的风险。
由于有了compose.yml文件,我们可以直接使用如下命令启动DVWA靶场应用。
docker-compose up d
至此,便可直接通过浏览器访问了,拉下来的配置步骤与上一章节(3.1章节)一样,这里便不再赘述。