前言
最近在摸索着自学渗透测试,在上一篇自学渗透测试01:使用 Burp Suite Proxy 模块进行 HTTP 流量拦截与分析文章中,了解了一下 Burp Suite 的初步使用,想要研究一下 Intruder 功能的时候,发现无从下手,所以我就想到了安装DVWA靶场来作学习之用。
说起DVWA(Damn Vulnerable Web Application),我已经接触过好几次了,之前在腾讯云的Edgeone的产品体验活动中,我搭建了DVWA测试了EO抵御XSS和Ddos攻击,所以今天也是往事重提,在我的云服务器上再一次搭建DVWA。
DVWA
DVWA 包含了多种多种攻击场景,其中包括:
-
Brute-force(暴力破解):用户口令猜测
-
Command Injection(命令注入): 模拟将用户输入不安全地传递给系统服务(如 ping 命令),分析黑名单与过滤绕过方案
-
CSRF(跨站请求伪造):演练通过构造恶意 URL 或表单触发用户操作
-
File Inclusion(文件包含):漏洞场景包括远程、局部文件的包含,演示 allow_url_include 开启带来的风险,以及高级过滤绕过
-
File Upload(文件上传):分析不安全上传接口的常见问题,如 MIME 类型绕过、后缀过滤失效、WebShell 执行等。
-
Insecure CAPTCHA(不安全验证码):模拟弱验证码机制,快速绕过验证码防护。
-
SQL Injection & Blind SQL Injection(SQL 注入及盲注):包括直接注入和盲注练习,如 Union 查询、布尔盲注、版本探测、表结构和字段/数据获取
-
XSS(跨站脚本):覆盖反射型(Reflected)、存储型(Stored)、DOM 型 XSS
-
Weak Session IDs(弱会话 ID):模拟使用可预测会话 ID 的弱点
-
CSP Bypass(内容安全策略绕过):针对 CSP 防护的绕过场景(依环境版本可能存在)。
同时也提供了四种难度等级,来学习不同程度的攻击与防护。
- Low(低):几乎无防护,攻击轻松
- Medium(中):采用粗糙防护,如延迟、简单验证
- High(高):增加 token、随机 sleep、过滤逻辑加强
- Impossible(不可能):近生产环境安全策略
环境安装
因为DVWA的依赖于PHP环境、apache服务器以及MySQL,如果单独安装的话比较麻烦,所以我这里使用小皮面板来可视化部署这些环境。
小皮面板
通过下面的命令直接在线下载并安装小皮面板。
curl -O https://dl.xp.cn/dl/xp/install.sh && bash install.sh
在安装过程中,我们可以看到提示:可能会影响服务器中原有的数据库、防火墙等,这里确实将我的mysql客户端替换成了小皮面板的,同时在服务器安全组的基础上,小皮面板又增加了一个防火墙,当然可以在小皮面板上一键关闭。
在这里,我输入Y表示同意安装。
安装完成之后,可以看到小皮面板的账户信息,在新版的小皮面板中,我们要开放 13174 端口,老版是 9080,然后复制外网面板地址,通过提供的账号和密码进行登录。
登录之后,进入到小皮面板首页。
之前使用的小皮面板还是一个很老的版本,这是第一次见新版的UI,觉得还是挺好看的,而且还增加了Docker、终端等功能。接下来我们就来完成搭建DVWA所需要的环境配置,主要是:
- 服务器安装
- PHP安装
服务器安装
首先我们先安装服务器,点击 网站 ,选择 安装Apache。
在选择了版本,点击安装之后,在右上角就有了一个Apache服务器,点击启动即可,使用的是服务器的80端口,通过公网IP就可以访问到apache。
PHP 安装
因为DVWA是php开发的,所以需要php运行环境,我们找到 软件商店,安装PHP。
安装完成之后,返回到网站,在PHP站点页面下,点击左上角的 添加网站,选择手动创建站点。
输入域名或者ip,复制这里的根目录,一会要将DVWA拷贝到这个目录中。
点击下一步,选择PHP版本,DVWA是需要MySQL的,但是我服务器上已经安装了,所以这里数据库选择不创建。
点击确定之后,页面就有了一个站点。
DVWA
接下来就是安装DVWA,主要步骤分为:
- 下载解压DVWA
- 修改config,配置MySQL用户密码
- 将DVWA放到apache服务器
为了简化安装,我开发了一个脚本,用来一次性完成上面的步骤:
#!/bin/bash
wget https://github.com/digininja/DvWA/archive/master.zip
unzip master.zip
mv DVWA-master dvwa
cd dvwa/config
# 修改账号密码
CONFIG_FILE="config.inc.php"
mv config.inc.php.dist $CONFIG_FILE
read -p "请输入数据库用户名(db_user): " db_user
read -s -p "请输入数据库密码(db_password): " db_password
echo
# 使用 sed 替换 db_user 和 db_password 的默认值
sed -i "s/\($_DVWA\[ 'db_user' \] *= getenv('DB_USER') ?: \)'[^']*'/\1'$db_user'/g" "$CONFIG_FILE"
sed -i "s/\($_DVWA\[ 'db_password' \] *= getenv('DB_PASSWORD') ?: \)'[^']*'/\1'$db_password'/g" "$CONFIG_FILE"
echo "config.inc.php 替换完成 ✅"
cd ../../
read -p "请输入服务器站点路径:" www
mv dvwa $www
echo
echo "dvwa配置完成 ✅"
在执行脚本的过程中,脚本要求你输入MySQL的账号、密码,完成替换之后,在要求你输入服务器的路径,也就是上面让你复制的站点路径。
然后站点路径中就有了dvwa文件,config中的 db_user/db_user 就替换成了输入的变量。
同时,在apache服务器中,可以看到我们部署的DVWA。
初始化
在浏览器中访问http://ip/dvwa/setup.php,进入到dvwa的初始化页面。
点击最下方的 Create/Reset Database ,初始化dvwa数据库,然后跳转到登录页面。
使用初始化账号密 admin / password 完成登录,但是一定要记得修改密码,在MySQL中执行:
use dvwa;
UPDATE users SET password=md5('xxx') WHERE user='admin';
admin的密码就修改成了xxx。登录之后,进入到DVWA的首页,在这个页面我们可以进行不同程度的渗透测试。
结语
在安装完小皮面板之后,云服务器可能出现端口已经在安全组开放但无法访问的问题,我们在小皮面板中找到 安全,关闭防火墙就可以了。