一.Metasploit 简介
Metasploit 是一款开源的渗透测试框架,它被用来发现和利用安全漏洞。Metasploit 可以自动化测试流程,从枚举目标主机开始,到识别目标的漏洞并使用有效载荷来尝试获得对目标系统或网络的控制。Metasploit 带有一个强大的数据库,其中包含了大量的漏洞信息并与工具本身紧密集成。Metasploit 由 Rapid7 公司开发和维护,支持多种操作系统和不同类型的漏洞。
1.基础库:metasploit 基础库文件位于源码根目录路径下的libraries 目录中,包括Rexframework-core 和framework-base 三部分。
Rex 是整个框架所依赖的最基础的一些组件,如包装的网络套接字、网络应用协议客户端与服务端实现、日志子系统、渗透攻击支持例程、PostgreSQL以及MySQL数据库支持等
framework-core库负责实现所有与各种类型的上层模块及插件的交互接口
framework-base 库扩展了framework-core,提供更加简单的包装例程,并为处理框架各个方面的功能提供了一些功能类,用于支持用户接口与功能程序调用框架本身功能及框架集成模块。
2.模块:模块组织按照不同的用途分为6种类型的模块 (Modules)
辅助模块(Aux)、渗透攻击模块 (Exploits)、后渗透攻击模块 (Post)、攻击载荷模块(payloads)、编码器模块 (Encoders)、空指令模块 (Nops)
注: payload 又称为攻击载荷,主要是用来建立目标机与攻击机稳定连接的,可返回 shell,也可以进行程序注入等
3.插件:插件能够扩充框架的功能,或者组装已有功能构成高级特性的组件。插件可以集成现有的些外部安全工具,如Nessus、OpenVAS漏洞扫描器等,为用户接口提供一些新的功能。
4.接口:包括 msfconsole 控制终端、msfcli 命令行、msfgui图形化界面、armitage 图形化界面以及msfapi远程调用接口。
5.功能程序:metasploit 还提供了一系列可直接运行的功能程序,支持渗透测试者与安全人员快速地利用 metasploit 框架内部能力完成一些特定任务。比如 msfpayload、msfencode和msfvenom 可以将攻击载荷封装为可执行文件、C语言、JavaScript语言等多种形式,并可以进行各种类型的编码
二.Metasploit目录结构
切换到metasploit工作目录
data:Metasploit 使用的可编辑文件
documentation:为框架提供文档
lib: 框架代码库
modules:实际的MSF模块
plugins:可以在运行时加载的插件
scripts:Meterpreter和其他脚本
tools:各种有用的命令行工具
三.Metasploit使用方法
Metasploit程序需要使用Postgresql数据库
PostgreSQL是一个开源的关系型数据库管理系统(RDBMS),它具有高度的可扩展性、稳定性和可靠性。它最初是由加州大学伯克利分校开发的POSTGRES项目的后继版本。它是世界上最先进的开源关系型数据库。
从应用场景来说,PostgreSQL更加适合严格的企业应用场景(比如金融、电信、ERP、CRM),而MySQL更加适合业务逻辑相对简单、数据可靠性要求较低的互联网场景
1.手动启动数据库
2.开启msfconsole
方法一:
方法二:
注:如果第一次开启报错,有可能是数据库没有初始化,退出在命令行执行 msfdb init 初始化,会自动生成配置文件。
3.用help查看帮助
可以对整个msf有个整体的认知
Core Commands #核心命令
Module Commands # 模块命令
Job Commands # 后台任务命令
Resource Script Commands # 资源脚本命令
Database Backend Commands # 数据库后端命令
Credentials Backend Commands #证书/凭证后端命令
Developer Commands #开发人员命令
1.常用命令
1.核心命令中的connect命令
用connect查看相关参数
链接目标80 端口
2.模块相应的命令show
-
show options:显示当前选定模块的可用选项及其当前设置的值。
-
show advanced:显示当前选定模块的高级选项及其当前设置的值。
-
show payloads:显示可用的攻击载荷(payloads)以及其详细信息。
-
show encoders:显示可用的编码器(encoders)以及其详细信息。
-
show nops:显示可用的无操作系统(NOP)模块以及其详细信息。
-
show targets:显示当前选定模块的可攻击目标(targets)以及其详细信息。
-
show info:显示当前选定模块的简要信息,包括名称、描述和作者等。
-
show all:显示所有可用的模块,包括 exploit、payload、encoder、nop 等
-
show post:显示所有可用的模块,包括 exploit、payload、encoder、nop 等
3.模块相关的命令search搜索的使用方法
search -h 查看相应参数
search name:mysql # search 后直接跟查找的内容,查得很广泛(只用明确漏洞名字)
每一个漏洞利用模块基于它们对目标系统的潜在影响都被标记了一个 Rank 字段。用户可以基于 Rank 对漏洞利用模块进行搜索,分类以及排序
Rank 按照可靠性障序排列:
- Excellent
- Great
- Good
- Normal
- Low
- Manual
- Experimental
search path:mysql #查找MySQL下的所有MySQL利用模块
platform: 命令来缩小查询范围。使用 platform 命令后,所查询的结果会列出 rank 比较高的模块
search platform:mysql
观察上下两张图发现,所有的normal模块全部被屏蔽了,只剩下较高级的几个模块
通过类型进行查找
search type:特定类型的模块(exploit,payload,auxiliary,encoder,evasion,post,or nop)
4.模块相关命令use的使用方法
(1)查找自己想要的漏洞模块
注:metasploit支持模糊查找,不区分大小写。
(2)装在一个渗透模块攻击(可以用back退出当前调用的模块,注:exit命令会直接退出程序)
5.模块相关命令info的使用方法
info:显示模块的相关信息
设置RHOSTS 参数,指定攻击的目标机器
删除相关参数