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