Kali Linux 预先配备了渗透测试所需的所有工具。 一个这样的工具是 Metasploit 框架,它允许红队执行侦察、扫描、枚举和利用所有类型的应用程序、网络、服务器、操作系统和平台的漏洞。
尽管 Metasploit 的主要功能侧重于利用前和利用后的渗透测试任务,但它也有助于利用开发和漏洞研究。
本文介绍 Metasploit 框架的主要组件。 它演示了如何使用 Metasploit 模块对托管在名为 Metasploitable 2 的机器上的易受攻击的 MySQL 数据库进行扫描、枚举和利用。
Metasploit 接口及其模块
Metasploit 是预装在 Kali Linux 中的最常用的渗透测试工具。 Metasploit 的主要组件是 msf 控制台 以及它提供的模块。
什么是 msfconsole?
msf 控制台 是最常用的类 shell 一体化界面,可让您访问 Metasploit 的所有功能。 它具有类似 Linux 的命令行支持,因为它提供命令自动完成、制表符和其他 bash 捷径。
它是主界面,可让您使用 Metasploit 模块对目标机器进行扫描和发起攻击。
Metasploit 模块
Metasploit 具有启用其主要功能的小代码片段。 但是,在解释模块之前,您必须清楚以下反复出现的概念:
- 漏洞:这是目标的设计或代码中的缺陷,使其容易受到利用,从而导致机密信息的泄露。
- 开发:利用已发现漏洞的代码。
- 有效载荷:这是一个代码,可以帮助您实现利用漏洞的目标。 它在目标系统内部运行以访问目标数据,例如通过 Meterpreter 或反向 shell 维护访问。
现在转向 Metasploit 的五个主要模块:
- 辅助的: 辅助模块包含一套程序,如fuzzer、scanners、SQL注入工具,用来收集信息,深入了解目标系统。
- 编码器:编码器对有效载荷/漏洞进行加密,以保护它们免受基于签名的防病毒解决方案的侵害。 由于有效负载或漏洞利用包含空字符或错误字符,因此它们很有可能被防病毒解决方案检测到。
- 开发:如前所述,漏洞利用是利用目标漏洞来确保通过有效负载访问系统的代码。
- 有效载荷:如前所述,有效载荷可帮助您实现攻击目标系统的预期目标。 这意味着它们将帮助您获得交互式外壳或帮助您维护后门、运行命令或加载恶意软件等。Metasploit 提供两种类型的有效负载:无阶段有效负载和分阶段有效负载。
- 邮政:后期开发模块将帮助您收集有关系统的更多信息。 例如,它可以帮助您转储密码哈希并查找用于横向移动或特权升级的用户凭据。
您可以使用以下命令查看每个模块及其类别:
cd /usr/share/metasploit-framework/modules
ls
tree -L 1 module-name/
如何使用 Metasploit 的界面:msfconsole
要开始使用 Metasploit 界面,请打开 Kali Linux 终端并输入 msf 控制台.
默认情况下,msfconsole 打开一个横幅; 要删除它并以安静模式启动界面,请使用 msf 控制台 命令与 -q 旗帜。
该界面看起来像一个 Linux 命令行 shell。 它支持的一些 Linux Bash 命令是 ls、clear、grep、history、jobs、kill、cd、exit 等。
类型 帮助 或问号“?” 查看您可以在 msfconsole 中使用的所有可用命令的列表。我们将在本文中使用的一些最重要的命令是:
命令 | 描述 |
---|---|
搜索 | 允许您根据给定的协议/应用程序/参数从 Metasploit 数据库中进行搜索 |
采用 | 允许您选择特定模块并将上下文更改为特定于模块的命令 |
信息 | 提供有关所选模块的信息 |
显示 | 显示有关给定模块名称和当前模块选项的信息 |
查看 | 检查目标系统是否存在漏洞 |
放 | 它是一个特定于上下文的变量,用于配置当前模块的选项 |
未设置 | 删除以前设置的参数 |
跑 | 执行当前模块 |
在开始之前,通过启动 PostgreSQL 服务器设置 Metasploit 数据库并初始化 msfconsole 数据库,如下所示:
systemctl start postgresql
msfdb init
现在通过初始化 msfconsole 并运行 db_status 命令。
使用 Metasploit 开发 MySQL
出于演示目的,设置开源易受攻击的 Linux 机器 Metasploitable2。
使用 msfconsole 进行 MySQL 侦察
首先找到 Metasploitable 机器的 IP 地址。 然后,使用 db_nmap msfconsole 中带有 Nmap 标志的命令用于扫描 MySQL 数据库 3306 港口。
db_nmap -sV -sC -p 3306 <metasploitable_ip_address>
您可以运行常规 nmap -p-
使用 搜索 查找辅助模块以扫描和枚举 MySQL 数据库的选项。
search type:auxiliary mysql
从上面的列表中,您可以使用 辅助/扫描仪/mysql/mysql_version 模块通过键入模块名称或关联编号来扫描 MySQL 版本详细信息。
use 11
或者:
use auxiliary/scanner/mysql/mysql_version
现在使用 显示选项 命令显示执行当前模块所需的必要参数:
输出显示唯一需要且未设置的选项是 RHOSTS,它是目标机器的 IP 地址。 使用 设置 rhosts 命令设置参数并运行模块,如下:
输出显示与 MySQL 版本类似的详细信息 db_nmap 功能。
使用 msfconsole 暴力破解 MySQL 根帐户
扫描后,还可以通过 Metasploit 的暴力破解 MySQL root 账号 辅助(扫描仪/mysql/mysql_login) 模块。
您需要设置 PASS_FILE 内部可用的单词列表路径的参数 /usr/share/wordlists:
set PASS_FILE /usr/share/wordlistss/rockyou.txt
然后,使用 RHOSTS 命令指定目标机器的 IP 地址。
set RHOSTS <metasploitable-ip-address>
放 BLANK_PASSWORDS 如果没有为 root 帐户设置密码,则为 true。
set BLANK_PASSWORDS true
最后,通过键入运行模块 跑 在终端。
MySQL 枚举与 msfconsole
msfconsole 还允许您在 辅助的(admin/mysql/mysql_enum) 模块。 它返回所有帐户以及相关权限和密码哈希等详细信息。
为此,您必须指定密码、用户名和 rhosts 变量。
set password ""
set username root
set rhosts <metasploitable-ip-address>
最后,输入以下命令运行模块:
run
使用 msfconsole 开发 MySQL
从枚举阶段,很明显 root 帐户具有文件权限,使攻击者能够执行 加载文件() 功能。 该功能允许您通过加载 /etc/password 文件中的所有数据来利用 MySQL 数据库 辅助的(/admin/mysql/mysql_sql) 模块:
再次设置用户名、密码和 rhosts 变量。 然后,执行一个调用 load_file() 函数并加载 /etc/passwd 文件。
set sql select load_file("/etc/password")
学习 Metasploit 在 Linux 上进行渗透测试
Metasploit 模块有助于渗透测试的所有阶段。 Metasploit 还允许用户创建自己的模块。
本文总结了 Metasploit 框架的一些主要模块,并演示了如何在 Metasploitable 2 机器上扫描、枚举和利用 MySQL 数据库。
Metasploit 并不是您作为网络安全专业人员使用的唯一渗透测试工具。 如果您想成为安全专家,还需要熟悉其他几个实用程序。