Metasploit 模块搜索与选择

LinuxBeginner
立即练习

介绍

欢迎来到 Metasploit 的世界!Metasploit Framework 是一个极其强大的开源工具,被网络安全专业人员用于开发、测试和执行漏洞利用(exploit)。它包含一个庞大的模块数据库,这些模块是可用于各种渗透测试任务的代码片段。这些模块包括漏洞利用(exploits)、载荷(payloads)和辅助工具(auxiliary tools)。

在这个 Lab 中,你将学习使用 Metasploit 模块的基本工作流程。你将从启动 Metasploit 控制台开始,然后学习如何搜索特定模块、选择一个模块使用,以及配置其基本选项。这是任何有抱负的渗透测试人员所需的基础技能集。

这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 初级 级别的实验,完成率为 98%。获得了学习者 95% 的好评率。

在这一步,你将学习如何使用 search 命令在 Metasploit Framework 中查找模块。search 命令是你浏览数千个可用模块的主要工具。

首先,让我们启动 Metasploit Framework 控制台。这可能需要一点时间启动。

msfconsole

你将看到一个横幅(banner)和 Metasploit 命令提示符,它看起来像 msf >。本 Lab 中后续的所有命令都将在这个控制台中运行。

为了使你的搜索更有效,你可以使用关键字来过滤结果。最常用的关键字之一是 type,它允许你指定要查找的模块类型(例如 exploitpayloadauxiliary)。

让我们搜索所有被归类为漏洞利用(exploits)的模块。在 Metasploit 控制台中输入以下命令:

search type:exploit

你将看到一个很长的可用漏洞利用列表。输出按以下列组织:

  • #: 搜索结果的索引编号。
  • Name: 模块的完整路径和名称。
  • Disclosure Date: 漏洞公开披露的日期。
  • Rank: 漏洞利用的可靠性,范围从 lowexcellent
  • Check: 指示模块是否可以在不利用目标的情况下检查目标是否存在漏洞。
  • Description: 模块功能的简要概述。
msf > search type:exploit

Matching Modules
================

   ##   Name                                    Disclosure Date  Rank       Check  Description
   -   ----                                    ---------------  ----       -----  -----------
   0   exploit/windows/local/adobe_sandbox_esc  2011-04-15       excellent  No     Adobe Reader/Acrobat "Movie" Annotation Sandbox Escape
   1   exploit/windows/fileformat/acdsee_pica   2011-01-12       good       No     ACDSee PicaView 2.0 EML File Parsing Buffer Overflow
   ... (output truncated) ...

这让你对可用的漏洞利用有了一个大致的了解,但列表太长,不便于实际操作。在下一步中,我们将缩小搜索范围。

在这一步,你将学习如何精炼你的搜索结果。上一次搜索返回了针对许多不同操作系统的数千个漏洞利用。要找到相关的漏洞利用,你需要添加更多的过滤器(filter)。

platform 关键字允许你根据目标操作系统来过滤模块,例如 windowslinuxosxandroid。你可以在单个 search 命令中组合多个关键字,以创建高度精确的查询。

让我们搜索专门为 Linux 平台设计的漏洞利用。

search type:exploit platform:linux

输出现在将是一个更短、更易于管理的、与 Linux 系统相关的漏洞利用列表。

msf > search type:exploit platform:linux

Matching Modules
================

   ##   Name                                          Disclosure Date  Rank     Check  Description
   -   ----                                          ---------------  ----     -----  -----------
   0   exploit/linux/http/advantech_switch_bash_env_exec 2014-09-24       excellent  Yes    Advantech Switch Bash Environment Variable Code Injection (Shellshock)
   1   exploit/linux/http/airties_login_cgi_bof      2012-01-17       excellent  No     AirTies login.cgi Buffer Overflow
   ... (output truncated) ...

通过组合关键字,你可以快速定位到针对特定目标所需的精确模块。

使用 Exploit 模块:use exploit/multi/handler

在这一步,你将选择一个要使用的模块。在使用 search 命令找到模块后,你需要使用 use 命令将其加载到框架的上下文中。

use 命令以模块的完整名称作为其参数。你可以直接从搜索结果中复制该名称。

对于本实验,我们将选择一个特殊且非常常见的模块:exploit/multi/handler。这个模块不是针对特定漏洞的典型漏洞利用。相反,它是一个通用的监听器(listener),用于等待已在目标机器上执行的 payload 发来的传入连接。它是捕获反向 Shell(reverse shell)的基本工具。

使用以下命令加载 handler 模块:

use exploit/multi/handler

运行该命令后,你会注意到你的命令提示符发生了变化。

msf > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf exploit(multi/handler) >

提示符 msf exploit(multi/handler) > 表明你现在处于 exploit/multi/handler 模块的上下文中。你现在发出的任何命令,例如设置选项(options),都将应用于这个特定的模块。

使用 show options 查看模块选项

在这一步,你将学习如何查看所选模块的可配置参数。每个模块都有一组选项,在运行之前你可能需要配置它们。这些选项定义了模块的行为,例如目标的 IP 地址或监听的端口。

show options 命令会显示当前加载模块的所有可用选项。

现在你已进入 exploit/multi/handler 的上下文,运行以下命令:

show options

输出将列出模块的选项,以及它们当前的设置和描述。

msf exploit(multi/handler) > show options

Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------

Payload options (generic/shell_reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST                   yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port

Exploit target:

   Id  Name
   --  ----
   0   Wildcard Target

请密切关注 Required(必需)列。任何标记为 yes 的选项都必须设置,然后你才能运行该模块。对于 multi/handlerLHOST(监听主机)和 LPORT(监听端口)是必需的。LHOST 是你的机器将监听的 IP 地址,而 LPORT 是端口号。

使用 set LHOST 设置基本选项

在这一步,你将学习如何使用 set 命令配置模块的选项。此命令允许你为使用 show options 看到的参数赋值。

基本语法是 set <OPTION_NAME> <VALUE>

对于 multi/handler 模块,最需要配置的选项是 LHOST,它代表“监听主机”(Listen Host)。这指定了 handler 将监听哪个 IP 地址以接收来自 payload 的传入连接。

让我们将 LHOST 选项设置为回环地址(loopback address)127.0.0.1,这样 handler 就会在本地机器上监听。

set LHOST 127.0.0.1

Metasploit 将确认更改:

LHOST => 127.0.0.1

你可以通过再次运行 show options 来验证该选项是否已更新。你将看到 127.0.0.1 列在 LHOSTCurrent Setting(当前设置)中。这个简单的 set 命令就是你在发起攻击前配置所有模块的方式。

要退出 Metasploit 控制台,你可以输入 exit

exit

总结

恭喜你完成了这个实验(Lab)!你已经学习了使用 Metasploit Framework 的基本初始步骤。

你现在知道如何:

  • 启动 Metasploit 控制台 (msfconsole)。
  • 使用 search 命令搜索模块,并通过 type(类型)和 platform(平台)进行过滤。
  • 使用 use 命令选择一个特定的模块。
  • 使用 show options 查看模块的可配置参数。
  • 使用 set 命令配置模块的参数(例如,为监听器设置 LHOST)。

这些命令构成了你将在 Metasploit 中执行的任何任务的核心工作流程。掌握它们是有效使用这个强大的渗透测试工具的关键。