1. 项目概述:为什么选择Metasploitable2自带的DVWA?
如果你正在学习网络安全,尤其是Web渗透测试,那么DVWA(Damn Vulnerable Web Application)这个靶场你肯定不陌生。它几乎是我们入门的第一站,里面集成了SQL注入、XSS、文件上传等十几种经典漏洞,用来练手再合适不过。过去很长一段时间里,很多教程和初学者都习惯用PHPStudy(小皮面板)在Windows本地搭建DVWA。这确实是个快速上手的办法,但用久了,你会发现它更像一个“玩具”,离真实环境有点远,而且各种环境配置冲突、端口占用、组件版本不匹配的问题层出不穷,常常是“环境搭建两小时,实战练习五分钟”。
最近,我彻底告别了PHPStudy,转向了Metasploitable2这个“老牌”但极其经典的渗透测试专用虚拟机。更准确地说,是使用Metasploitable2里自带的、已经配置好的DVWA环境。这个转变让我感觉像是从“游乐场”走进了“训练基地”。你可能听过Metasploitable2的大名,知道它是个漏洞百出的靶机,但未必清楚它内置的DVWA有多香。今天,我就来详细聊聊,在VMware里运行Metasploitable2并使用其自带的DVWA,对比传统的PHPStudy本地搭建,到底有哪些实实在在的优势,以及在这个过程中你会遇到哪些“坑”,又该如何轻松跨过去。
简单来说,Metasploitable2是一个预装了众多漏洞服务的Linux(Ubuntu)虚拟机,DVWA只是其中之一。它的优势在于环境统一、开箱即用、高度模拟真实服务器,并且完全隔离,不会污染你的宿主机。对于想认真提升实战能力的同学来说,这几乎是必经之路。接下来,我会从三个核心优势讲起,然后带你一步步在VMware里把它跑起来,最后附上我踩过所有坑之后总结的避坑指南。
2. 核心优势解析:为何Metasploitable2自带DVWA是更优选择?
2.1 优势一:环境高度集成与一致性,告别配置地狱
用PHPStudy搭DVWA,最头疼的就是环境配置。你需要手动下载DVWA源码,修改
config.inc.php
数据库配置,确保PHP版本、MySQL版本、扩展(如
gd2
,
mysqli
)全部就绪,还要处理可能出现的
allow_url_include
、文件权限等问题。任何一个环节出错,都可能看到一片空白页或者满屏的错误日志。这对于新手来说,挫败感极强,学习重心完全从“渗透技术”偏向了“环境运维”。
而Metasploitable2自带的DVWA则完美解决了这个问题。开发者已经将Apache2、MySQL、PHP以及DVWA应用本身,作为一个完整的、可工作的系统镜像打包好了。你下载到的就是一个
.ova
或
.vmx
虚拟机文件。这意味着:
- 零配置启动 :你不需要安装LAMP环境,不需要创建数据库,不需要修改任何配置文件。启动虚拟机后,DVWA服务已经在运行。
- 环境一致性 :所有学习者面对的是完全相同的环境,包括操作系统内核、服务版本、Web目录结构、数据库密码等。这极大地方便了教学、交流和对漏洞原理的讨论,因为排除了“你环境不对”这个变量。
- 预设漏洞状态 :DVWA的各个安全等级(Low, Medium, High, Impossible)都已预设好,并且数据库里预填充了测试数据,拿起来就能直接开始练习。
注意 :这种一致性是双刃剑。正因为环境固定,一些依赖于特定PHP版本或MySQL版本的现代攻击手法可能无法复现。但对于掌握核心漏洞原理来说,这已经绰绰有余。
2.2 优势二:完整的Linux服务器环境,贴近实战
PHPStudy搭建在Windows上,其行为模式和真实的Linux生产服务器有显著差异。例如,文件路径(
C:\phpStudy\WWW\
vs
/var/www/html/
)、服务管理方式(图形界面 vs
systemctl
)、权限体系(Windows ACL vs Linux UGO/RBAC)等都完全不同。很多在实战中至关重要的技巧,比如利用Linux特性进行权限维持、日志分析、进程排查等,在Windows+PHPStudy环境下根本无法练习。
Metasploitable2本身就是一个Ubuntu Server。当你使用其自带的DVWA时,你实际上是在操作一台完整的Linux服务器:
-
真实的文件系统
:你可以通过SSH或终端,浏览
/var/www/dvwa/目录,查看真实的源码、配置文件,理解Web目录结构。 -
真实的进程与服务
:你可以使用
ps aux | grep apache、systemctl status mysql等命令来管理服务,这本身就是渗透测试中信息收集的一部分。 -
网络环境更真实
:虚拟机拥有独立的IP(如
192.168.xxx.xxx),你需要像攻击一个远程目标一样,通过浏览器访问这个IP。这引入了主机发现、端口扫描等前置环节,流程更完整。 -
学习Linux操作
:顺带逼迫你熟悉基本的Linux命令(
ls,cd,cat,vi,chmod等),这对于任何方向的网络安全从业者都是必备技能。
2.3 优势三:安全隔离与资源管理,保护宿主机
在本地Windows直接用PHPStudy运行一个有漏洞的Web应用,存在潜在风险。虽然DVWA设计上是内网靶场,但错误的配置(比如误将服务绑定到
0.0.0.0
)或练习某些高危漏洞(如文件包含、命令执行)时,可能会意外影响到宿主机系统,甚至被恶意脚本利用。
使用VMware运行Metasploitable2虚拟机,则实现了完美的沙箱隔离:
- 故障隔离 :你在虚拟机里“搞破坏”(比如误删文件、搞崩服务),最坏的结果就是重置虚拟机快照,宿主机毫发无损。
- 网络隔离 :虚拟机的网络通常配置为NAT或Host-Only模式,默认与外界隔离。你可以放心地进行端口扫描、漏洞利用等操作,而不用担心影响公司或家庭网络。
- 资源可控 :你可以方便地为虚拟机分配固定的内存、CPU和硬盘资源,不用时挂起或关机,不占用宿主机资源。想同时运行多个靶场(比如Metasploitable2 + Metasploitable3)进行横向渗透练习,也变得更加容易。
- 快照功能 :这是VMware等虚拟化平台的核心优势。你可以在DVWA初始状态创建一个快照。每次练习完,或者把环境弄乱后,一键还原到干净状态,无需重装。这是PHPStudy环境无法比拟的便捷。
3. 实操过程:VMware中部署与连接Metasploitable2 DVWA
理论优势说完了,我们来看看具体怎么操作。整个过程可以分为下载、导入、启动、配置网络和访问五个步骤。
3.1 准备工作与虚拟机导入
首先,你需要准备好两样东西:VMware Workstation Player(或Pro)和Metasploitable2的镜像文件。
- 获取VMware :前往VMware官网下载Workstation Player(个人免费)或Pro版本。安装过程很简单,一路下一步即可。
-
获取Metasploitable2
:这是一个开源项目,你可以从SourceForge等可信源下载。文件通常是一个压缩包,解压后里面包含
.vmdk(虚拟磁盘)和.vmx(虚拟机配置文件)等文件。 务必从官方或知名安全社区提供的链接下载,以确保镜像纯净。
在VMware中导入Metasploitable2通常有两种方法:
-
方法一:直接打开
:打开VMware,点击“打开虚拟机”,浏览并选择解压后文件夹里的
.vmx文件。 -
方法二:创建新虚拟机
:选择“自定义”,在“安装客户机操作系统”时选择“稍后安装操作系统”,客户机操作系统选择“Linux”,版本选“Ubuntu”(或Other Linux 3.x kernel)。在“选择磁盘”时,选择“使用现有虚拟磁盘”,然后指向下载的
.vmdk文件。
导入成功后,你会在VMware的库中看到名为“Metasploitable2”或类似的虚拟机。
3.2 关键网络配置与宿主机连接
这是第一个容易踩坑的地方。Metasploitable2默认的网络设置可能无法让你从宿主机直接访问。
-
检查网络适配器 :在VMware中,右键点击Metasploitable2虚拟机 -> “设置” -> “网络适配器”。我强烈推荐使用 “NAT模式” 。
- 桥接模式 :虚拟机会获得和你宿主机同网段的独立IP,像一台真实设备。但需要路由器支持,且可能在有些网络环境下(如公司内网)造成IP冲突或不便。
-
NAT模式
:虚拟机通过宿主机的IP地址共享上网,VMware会为虚拟机分配一个私有网段(如
192.168.xxx.xxx)的IP。宿主机可以访问虚拟机,但虚拟机默认不能访问宿主机(可通过端口转发实现)。这是最常用、问题最少的模式。 - 仅主机模式 :虚拟机和宿主机形成一个封闭的私有网络,与外界完全隔离。适合纯本地测试。
-
启动虚拟机并获取IP :启动Metasploitable2。它的登录凭证通常是
msfadmin/msfadmin。登录后,在终端输入ifconfig或ip addr show命令。找到eth0网卡,查看其inet地址。在NAT模式下,这个地址通常是192.168.xxx.xxx(例如192.168.233.129)。 记下这个IP地址,这就是你DVWA靶场的地址。 -
宿主机连通性测试 :在宿主机(你的Windows/Mac)上打开命令提示符或终端,执行
ping 192.168.233.129(替换成你的虚拟机IP)。如果能收到回复,说明网络通了。如果ping不通,请检查:-
虚拟机防火墙是否关闭?Metasploitable2默认防火墙规则可能较严。可以在虚拟机内执行
sudo iptables -L查看,或暂时用sudo iptables -F清空规则(仅测试环境使用)。 - VMware的虚拟网络编辑器设置是否正确?确保NAT模式的子网网段是合理的。
-
虚拟机防火墙是否关闭?Metasploitable2默认防火墙规则可能较严。可以在虚拟机内执行
3.3 访问DVWA并完成初始配置
网络通畅后,就可以访问DVWA了。
-
访问登录页
:在宿主机浏览器中,输入
http://<你的虚拟机IP>/dvwa/,例如http://192.168.233.129/dvwa/。你应该能看到DVWA的登录页面。 -
登录
:默认的用户名是
admin,密码是password。直接登录。 -
初始化数据库
:首次登录后,很可能会看到一个红色提示,要求你“Setup / Reset Database”。点击这个链接。如果一切正常,页面会显示“Setup successful”。这个过程会自动创建DVWA所需的数据表。
- 第一个大坑 :点击后如果报错,提示“Could not connect to the database”,这几乎100%是数据库凭证问题。Metasploitable2中MySQL的root密码是空的,但DVWA的配置文件可能不是。你需要修改DVWA的配置文件。
-
修改数据库配置(如遇连接错误)
:
-
回到虚拟机终端,使用命令
sudo vi /var/www/dvwa/config/config.inc.php编辑配置文件。 -
找到
$_DVWA[ 'db_user' ]和$_DVWA[ 'db_password' ]这两行。 -
在Metasploitable2中,通常需要将它们修改为:
$_DVWA[ 'db_user' ] = 'root'; $_DVWA[ 'db_password' ] = ''; -
保存退出(在vi中按
Esc,输入:wq,回车)。 - 然后回到浏览器,再次点击“Setup / Reset Database”,应该就能成功了。
-
回到虚拟机终端,使用命令
完成这些步骤后,你就拥有了一个运行在完整Linux环境中、开箱即用、与宿主机隔离的DVWA靶场了。
4. 深度避坑指南与进阶技巧
即使按照上述步骤,你可能还是会遇到一些奇怪的问题。下面是我总结的几个常见坑点及其解决方案。
4.1 网络连接故障排查大全
问题1:宿主机ping不通虚拟机IP。
- 检查虚拟机网络适配器状态 :确保在VMware中,虚拟机的网络适配器已连接(显示“已连接”)。
-
检查虚拟机内网卡
:在虚拟机内执行
ifconfig,确认eth0已经获取到IP地址。如果没有,尝试sudo dhclient eth0手动获取。 - 检查VMware服务 :在宿主机Windows的服务管理器中,确保所有VMware相关的服务(如VMware NAT Service, VMware DHCP Service)都在运行。
-
关闭防火墙(临时)
:在宿主机和虚拟机内,都暂时关闭防火墙进行测试。虚拟机内可执行
sudo ufw disable(如果使用UFW)或sudo systemctl stop iptables。 - 重置虚拟网络 :在VMware的“编辑” -> “虚拟网络编辑器”中,点击“还原默认设置”(注意这会重置所有虚拟网络配置)。
问题2:能ping通,但浏览器无法访问
http://IP/dvwa
。
-
检查服务是否运行
:在虚拟机内执行
sudo netstat -tulpn | grep :80,查看80端口是否被Apache监听。如果没有,启动Apache:sudo systemctl start apache2(或sudo service apache2 start)。 -
检查DVWA目录
:确认
/var/www/dvwa/目录存在且权限正确。可以执行ls -la /var/www/查看。 -
尝试直接访问IP
:在浏览器只输入
http://<虚拟机IP>,看是否能显示Apache的默认页。如果能,说明Web服务正常,问题在DVWA路径。检查是否有dvwa这个目录。
4.2 DVWA常见错误与修复
问题1:点击“Create / Reset Database”后,页面空白或报500错误。
-
权限问题
:DVWA的
config.inc.php文件或/var/www/dvwa/hackable/uploads/等目录需要Web服务器用户(通常是www-data)有写入权限。可以尝试:sudo chown -R www-data:www-data /var/www/dvwa/。 -
PHP配置问题
:Metasploitable2的PHP版本较老,可能需要开启一些扩展。检查
/etc/php5/apache2/php.ini(具体路径可能因版本而异)中,allow_url_fopen和allow_url_include是否设置为On。修改后需重启Apache:sudo systemctl restart apache2。 -
MySQL服务未启动
:执行
sudo systemctl status mysql检查。如果未运行,启动它:sudo systemctl start mysql。
问题2:进行SQL注入等练习时,无法复现预期结果。
- 安全等级设置 :确保DVWA左上角的安全等级是“Low”。中高级别加入了各种防护机制,需要不同的绕过技巧。
-
PHP魔术引号
:老版本PHP可能开启了
magic_quotes_gpc,它会转义单引号等字符,影响注入。在php.ini中确认它是Off状态。 - 使用正确的输入点 :仔细阅读题目说明,有些漏洞需要在特定的输入框(如User ID)尝试,而不是搜索框。
4.3 虚拟机性能优化与快照管理
Metasploitable2是一个老系统,运行在虚拟机中可能会感觉有点慢。
- 分配更多资源 :如果宿主机资源充足,可以在虚拟机设置中适当增加内存(如从默认的512MB增加到1GB)和CPU核心数(1个增加到2个)。
- 使用固态硬盘 :将虚拟机文件放在SSD硬盘上,能显著提升磁盘IO速度。
-
善用快照
:这是虚拟化学习的核心习惯。
- 初始快照 :在完成所有正确配置、能正常访问DVWA后,立即创建一个快照,命名为“Clean DVWA”。
- 练习前快照 :在每次进行新的漏洞模块练习前,可以基于“Clean DVWA”再创建一个快照,如“Before SQL Injection”。
- 还原 :当环境被破坏或想重置时,右键虚拟机 -> “快照” -> “恢复到快照”,选择“Clean DVWA”,几十秒即可恢复如初。这比用PHPStudy时重装系统、重配环境要高效安全得多。
4.4 从靶场到实战的思维延伸
当你熟练使用这个环境后,可以尝试一些进阶操作,让练习更贴近实战:
-
信息收集
:不要直接访问
/dvwa/。尝试用nmap扫描虚拟机IP,发现所有开放端口和服务。你会发现除了80端口的DVWA,还有21(FTP)、22(SSH)、23(Telnet)、445(SMB)等一堆存在漏洞的服务,这才是Metasploitable2的完整面貌。 - 结合Kali Linux :在VMware中再安装一个Kali Linux虚拟机,将两台虚拟机的网络都设置为NAT或同一Host-Only网络。这样,你就可以在一个虚拟网络内,用Kali攻击Metasploitable2,模拟真实的攻防环境。
-
查看源码与调试
:练习时,遇到不明白的防护机制,直接SSH到Metasploitable2,查看
/var/www/dvwa/vulnerabilities/目录下对应漏洞的源码(如sqli/source/low.php),对比不同安全等级的代码差异,这是理解漏洞原理和修复方法的最佳途径。
从PHPStudy切换到Metasploitable2的DVWA,看似只是换了个平台,实则是将学习环境从“模拟”向“仿真”推进了一大步。你会被迫接触Linux、网络配置、服务管理这些底层知识,而这些正是构成你实战能力的基础。过程中遇到的每一个“坑”,其排查和解决的经验,都比在PHPStudy一键安装成功更有价值。希望这份指南能帮你顺利过渡,在这个更接近真实世界的靶场里,更扎实地磨练你的渗透测试技能。

12万+

被折叠的 条评论
为什么被折叠?



