资讯详情

Metasploitable 2 全流程渗透测试实战:从安装到漏洞利用

📅 2026/10/20 6:27:55 | 华诺云谱 👁 阅读
Metasploitable 2 全流程渗透测试实战:从安装到漏洞利用
Metasploitable 2 这套靶机圈内人基本都知道但真正把它从零跑通、完成一次完整渗透测试链路的人比例低得惊人。大多数新手在第一关就被网络配置劝退或者扫描出一堆端口之后对着结果发呆不知道哪些服务有价值、哪些模块能用。这篇文章就基于我自己的实操记录来做一次全流程复盘安装、网络规划、信息收集、漏洞利用、shell 维护、故障排查每一段都会解释当时的思路和踩过的坑确保看完能直接在你的机器上复现。顺手说一句适用范围Metasploitable 2 是官方出品的故意留洞的靶机全程只在你本地的虚拟化环境里操作不涉及任何真实业务系统。适合安全入门者、培训演示者和想补全工具链操作的运维同学。1. 环境准备先把靶机跑起来1.1 下载渠道与文件形态Metasploitable 2 的镜像包可以从官方源直接下载通常拿到的是一个 zip 压缩包解压后里面是 .vmdk 磁盘文件。需要注意这个版本在功能上已经停止更新但正因为它的漏洞是刻意固定的才特别适合作为教学样本。另一个常见的分发形态是 .ova如果你下载的是 ova那 VirtualBox 这类虚拟化软件都支持直接导入省去手动选磁盘的步骤。下载完成后我习惯校验一下文件大小和 checksum避免下到损坏的包。老玩家可能已经注意到Metasploitable 2 的解压后磁盘文件大约在 700MB 左右如果解压出来只有几十 KB那一定是下载过程中被拦截或者文件不完整。1.2 虚拟机创建与导入细节以 VirtualBox 为例创建虚拟机时不要新建空虚拟硬盘要选择使用现有的虚拟硬盘文件然后定位到解压出来的 .vmdk。系统类型建议选 Linux / Ubuntu这个镜像本身是 32 位的版本选 Ubuntu 32-bit 即可。内存建议至少分配 512MB默认的 256MB 在跑某些服务时会卡顿。但其实这台靶机对资源要求极低后期你还要跑一个 Kali 攻击机所以不要给靶机太多内存把内存留给攻击机更划算。在 VMware 下操作也很类似导入 vmdk 后同样要指定操作系统类型为 Linux。还有一个容易忽略的点虚拟化平台可能会弹出磁盘是否可写的提示如果你打算长期反复打靶、练完还要恢复初始状态就保持可写但同时记得打快照。1.3 网络模式的底层逻辑绝大多数新手的第一个坑都出在网络模式上。Metasploitable 2 与攻击机之间必须能互通这是渗透测试的基本前提。用桥接模式当然也能通但它会把靶机暴露在物理局域网里如果你的路由器或网关环境里有扫描监控、自动化防护容易造成不必要的告警。更稳妥、也更推荐的方案是使用仅主机模式或者自定义的内部网络。在 VirtualBox 中你可以在全局设置 - 网络 - 仅主机网络里新建一个仅主机网络比如 192.168.56.0/24 网段然后把靶机和 Kali 的网卡都设为该仅主机网络。这样宿主机也能访问靶机但靶机无法触达外部网络安全隔离效果最好。在这个网段里通常宿主机占据 192.168.56.1Kali 领取一个 192.168.56.x靶机再领一个地址三者互通。为什么强调这个规划因为后续很多扫描和利用动作本质上依赖稳定 IP这个前提。如果你用 NAT 模式每次启动虚拟机IP 可能发生变化又得花时间重新定位。仅主机模式下的 DHCP 分配相对稳定但如果你追求完全可控也可以在系统里手动配置静态 IP。后文会讲怎么在靶机上静态指定 IP。提示Metasploitable 2 默认账号是 msfadmin / msfadmin这个账号带 sudo 权限。首次登录后建议先确认网卡名称与当前 IP。1.4 启动后的基线检查启动靶机后登录进去第一件事是确认服务状态和 IP 地址。用 ifconfig 查看 eth0 的地址如果没获取到 IP多半是 DHCP 服务没有正常工作这时可以手动配置。Metasploitable 2 基于旧版 Ubuntu配置文件路径是 /etc/network/interfaces可以这样写auto eth0 iface eth0 inet static address 192.168.56.101 netmask 255.255.255.0 gateway 192.168.56.1然后重启网络服务或者直接重启系统。配置完成后再用 ping 测试与 Kali 的连通性。到这里你的环境已经具备了靶机加攻击机的雏形接下来才进入真正有意思的阶段。2. 信息收集摸清靶机底细2.1 主机发现确定目标到底在哪信息收集是整个渗透测试的基石。在只掌握了网段的前提下第一步是发现存活主机。常用的工具有很多我习惯先用 arp-scan 做本地发现sudo arp-scan --interface eth0 192.168.56.0/24这条命令会一次性列出该网段内所有活跃设备的 MAC 和 IP。Metasploitable 2 的 MAC 地址可以在虚拟机的网卡设置里看到默认的 MAC 前缀通常能帮你快速辨认出靶机避免打错目标。如果没有 arp-scan也可以用 netdiscoversudo netdiscover -r 192.168.56.0/24两条命令都是走 ARP 广播结果基本一致。这里要注意如果你用的是 Windows 或 macOS 上的抓包环境命令细节会稍有不同但思路一样先把局域网内的主机数量摸清再辨别哪个是靶机。2.2 端口扫描画一张服务地图确认目标 IP 后端口扫描是必然动作。扫描要讲究策略不是一上来就全端口野蛮扫描。我的推荐顺序是第一步先做一个快速的 TCP 全端口扫描确认哪些端口开放nmap -p- -T4 192.168.56.101第二步对发现的开放端口做服务版本识别与系统探测nmap -sV -O -p 21,22,23,25,53,80,111,139,445,3306,5432,8009,8180 192.168.56.101这里 -sV 表示版本探测-O 表示操作系统指纹识别。Metasploitable 2 默认开放的服务非常多常见的有端口服务版本/特征21FTPvsftpd 2.3.422SSHOpenSSH 5.1p123TelnetLinux telnetd25SMTPPostfix53DNSISC BIND 9.4.280WebApache 2.2.8139/445SambaSamba 3.0.203306MySQLMySQL 5.0.51a5432PostgreSQLPostgreSQL 8.3.08009AJPApache Tomcat8180WebApache Tomcat这张表基本上就是整个靶机的家底。拿到这张表之后很多新手会慌张端口这么多从哪里下手我的建议是优先关注三类服务第一类是存在已知后门型漏洞的比如 vsftpd 2.3.4这类目标利用难度非常低适合练习基础模块操作第二类是开放了 SMB 的服务Samba 3.0.20 同样有多个经典漏洞利用成功率高而且能直接获得系统权限第三类是带 Web 面板或管理入口的服务比如 Apache Tomcat存在部署 WAR 包后 getshell 的可能路径长一些但更贴近真实业务场景。2.3 漏洞匹配把指纹翻译成利用方案扫描结果不会自动告诉你这个漏洞怎么打你需要把版本信息与漏洞库做匹配。Metasploit 框架内置了 search 命令用起来非常直接msf6 search vsftpd msf6 search samba msf6 search unreal_ircd另外也可以在本地的漏洞库文件里查searchsploit vsftpd 2.3.4这里有个非常关键的经验不要看到版本号就直接套模块。某些模块对目标环境有额外要求比如 32 位或 64 位、编译器版本、依赖组件等。利用前最好先看模块描述和选项确认目标服务的启动方式、端口、payload 类型。我以前就吃过亏对着 Samba 3.0.20 一套操作下来结果发现目标系统根本没开启相关服务白白浪费时间。注意Metasploitable 2 是 32 位系统所以选择 payload 时尽量选 linux/x86 的格式通用性更强。3. 漏洞利用与权限获取3.1 弱口令与默认凭据最容易被忽略的入口很多新手有一种误区认为漏洞利用一定是从某个 CVE 开始的。实际上针对这台靶机最简单直接的入口就是默认凭据。用 msfadmin / msfadmin 直接 SSH 登录ssh msfadmin192.168.56.101输入密码后你就已经拿到了一个普通的 shell。这个入口虽然不入流但它在真实环境中的命中率相当高因为大量内部系统都残留着初始账号。做安全测试时默认凭据永远值得先试一遍。从测试方法论的角度来说先做低成本的尝试、再做高成本的漏洞利用这个顺序永远不会错。直接拿 shell 之后再考虑要不要提权比盲目绑定某个漏洞模块高效很多。3.2 经典漏洞模块实战如果只想练模块化利用可以从 vsftpd 2.3.4 开始。这个漏洞的背景是vsftpd 在 2.3.4 版本中被植入了后门当你以特殊字符作为用户名登录时FTP 服务会在特定端口开启一个绑定 shell。Metasploit 里对应的模块是msf6 use exploit/unix/ftp/vsftpd_234_backdoor msf6 set RHOSTS 192.168.56.101 msf6 run执行成功后你会得到一个反弹回来的 shell这个 shell 的权限是 root。为什么是 root因为 vsftpd 服务本身以 root 权限运行后门直接继承了这个权限所以最终拿到的是一个高权限会话。再比如 UnrealIRCD 后门漏洞Metasploit 模块路径是 exploit/unix/irc/unreal_ircd_3281_backdoor。这个漏洞同样是因为 IRC 服务内置了恶意后门向指定端口发送特制数据即可触发命令执行。利用要点是先把 IRC 服务跑起来再调用模块否则目标端口不存在自然打不了。3.3 从代码执行到控制台很多人打完漏洞就停住不知道下一步怎么走。这里我建议建立利用链的概念漏洞利用只是第一步拿到稳定会话后要继续在框架里操作。以 vsftpd 模块拿到的 shell 为例你可以在 Metasploit 里把 shell 升级为 Meterpreter 会话sessions -u 会话ID升级会话的好处是后续可以方便地执行文件上传、端口转发、进程迁移等操作。比如用 Meterpreter 自带的 sysinfo 查看系统信息用 getuid 确认当前用户身份用 getpid 看进程号。这些信息在真实渗透中决定了你能不能往下一步走。如果目标是收集证据或验证风险还可以在 shell 层面执行命令比如查看 /etc/passwd、检查可写目录、搜索带有敏感信息的配置文件。注意这些都是针对本靶机的教学操作在真实环境中必须严格对照授权范围执行。4. 后渗透操作与痕迹处理4.1 会话管理别把蛋放在一个篮子里实战中一次漏洞利用未必能拿到最高权限加上目标可能随时断线管理好已有会话很有必要。Metasploit 的 sessions 命令可以查看当前所有会话sessions -l如果某个会话不稳定可以考虑在 Meterpreter 里执行路由导入操作把靶机所在网段的路由加入框架为后续内网横向做准备。不过 Metasploitable 2 的网络比较简单这个实践更多是为了让你熟悉功能并不是必需的步骤。4.2 提权思路与可行性判断Metasploitable 2 的很多漏洞入口默认就是 root 权限比如 vsftpd 后门拿到的会话权限已经足够高不需要额外提权。但也有部分入口拿到的权限可能是低权限用户这时就需要找本地提权路径。常见的提权思路包括内核版本漏洞、sudo 配置错误、可写脚本被定时任务执行等。不过对这台靶机来说它的内核版本很老很多对应漏洞的利用模块在现代工具链上未必能直接跑通所以不必过度纠结提权先把利用链和会话管理跑通更重要。4.3 痕迹清理理解防守方视角做完一轮测试之后把日志清理掉是一种负责任的做法特别是在共享实训环境中避免下一个学员被历史会话干扰。清理的常见方式是在 shell 里执行history -c也可以直接清理 /var/log 下的相关日志文件。但在真实渗透测试中日志清理可能违反测试协议必须提前确认范围。很多企业做红队演练时日志清理本身就是被测对象要求不能留痕迹和尽量留痕供复盘往往是两种截然不同的规则。对我来说打靶过程中最有价值的收获不是我能打进去而是通过一遍遍演练理解防守方会看到什么。当你亲手操作过某条利用链再去看日志里的异常连接记录就会比只看报告有更深刻的体感。5. 实操中高频问题排查5.1 靶机网络不通怎么办这个问题至少有一半的初学者遇到过。现象一般是Kali 能 ping 通宿主机但 ping 不通靶机。排查顺序建议从左往右先确认靶机网卡是否获取到 IP执行 ifconfig 看 eth0 是否存在确认虚拟机的网络模式是否真的切到了仅主机模式确认宿主机防火墙是否拦截了 ICMP 或相关端口如果以上都没问题在靶机内手动指定静态 IP 再重启网络。还有一个隐藏坑VirtualBox 的仅主机网络在新建之后默认 DHCP 服务可能是启用的但地址池和掩码有可能不是你想用的 192.168.56.0/24需要到网络管理界面去调整。建议直接改为静态 IP避免反复排查。5.2 模块执行失败的常见原因漏洞利用不是百分百成功特别是当你从网上随手复制命令时最常见的失败原因有几种。第一填错了 RHOSTS 或 LHOST。RHOSTS 是目标 IPLHOST 是回连地址如果监听地址填成了宿主机而非 Kali 的地址反弹 shell 会发往错误位置。第二payload 架构不匹配。前面强调过在 32 位靶机上尽量使用 x86 payload如果你误选成 x64 的通用 payload可能在回连阶段就崩了。第三目标服务状态变化。比如你先跑了一次漏洞利用服务被搞挂了第二次自然失败。这时最稳妥的做法是恢复快照把靶机还原到初始状态而不是继续在残血目标上做调试。5.3 系统的恢复与快照管理Metasploitable 2 被人为配置了大量漏洞稳定性其实一般。练习过程中服务崩掉、系统卡死都属于正常现象。强烈建议在第一次安装完、且确认基础环境正常后立刻打一个干净快照。打快照的时机也有讲究要在你登录、确认 IP、确认服务全部正常之后再打不要在首次启动的混乱状态下打。这样后续任何一次练习翻车都能直接回到一个可用的基线状态。6. 一些长期有用的经验写到这里再分享几个对新手最有价值的体会。环境隔离优先。我在一开始就把靶机和攻击机放在独立的仅主机网段里宿主机虽然也能通但靶机无法访问外部网络任何误操作都不会波及其他在线设备。这种临时性的网络隔离是一种最低成本的安全防护练手时务必保持。快照意识是安全测试的基本素养。不只是对靶机对任何你在做实验的对象动手前打快照都是最稳妥的保险。我见过太多人因为没打快照把一个本来很干净的实验环境搞坏最后只能重装。熟悉命令行而不是只依赖图形界面。Metasploit 的图形化工具很好用但命令行能让你理解每一步到底发生了什么。脱离 Web UI 后你才能真正理解模块参数、payload 机制和数据包的流向。把每一次利用都当作一次证据链演练。记录你用了什么模块、设置了哪些参数、拿到了什么结果这个过程对提升测试报告撰写能力非常有帮助。很多安全岗位面试其实不看你打了几台靶机而是看你能不能把一个利用过程讲清楚、讲严谨。Metasploitable 2 虽然是一台年代久远的靶机但它在教学上的价值并没有过时。把它吃透你会发现自己对端口、服务、漏洞利用机制的理解会上一个台阶之后再去打更复杂的靶机很多基本功都是在这里养成的。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑