Metasploit框架介绍

模块

模块组织按照不同的用途分为 6 种类型的模块(Modules): 分为辅助模块(Aux)、渗透攻击模块(Exploits)、后渗透攻击模块(Post)、攻击载荷模块(payloads)、编码器模块(Encoders)、空指令模块(Nops)。 ## 工作目录

cd /usr/share/metasploit-framework 

kali渗透测试日记 - Metasploit渗透测试框架学习_目标系统

Metasploit靶机介绍

基本使用

Postgresql 概述

PostgreSQL 是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的 POSTGRES 4.2 版本为基础的对象关系型数据库管理系统。

注:PostgreSQL:世界上最先进的开源关系数据库
扩展:PostgreSQL 和 MySQL 数据的应用场景区别:
从应用场景来说,PostgreSQL 更加适合严格的企业应用场景(比如金融、电信、ERP、CRM),而MySQL 更加适合业务逻辑相对简单、数据可靠性要求较低的互联网场景。

启动数据库
systemctl start postgresql
设置开机启动
systemctl enable postgresql
终端命令启动Metasploit
msfconsole ##msf 相关命令

Core Commands 核心命令

connect命令
connect [IP] [PORT]
连接成功后可以提交一个get请求来查看服务器版本号
get /

Module Commands 模块命令

show命令
命令的有效参数是:all, encoders, nops, exploits, payloads, auxiliary, post, plugins, info, options 列出 metasploit 框架中的所有渗透攻击模块 exploits show exploits 也可以用show查看其它模块的工具。如 show payloads
search常用的搜索
语法:Search Keywords 参数:关键字 metasploit 支持模糊查找,不区分大小写,这样大家查找时更方便
通过name查找
search mysql # search 后直接跟要查找内容,查得很广泛。只有当你对漏洞名字很描述很清楚时,使用这个方法 search name:mysql

每列的含意是:
# Name Disclosure Date Rank Check Description
编号 名称 披露日期 排名 检查 说明

每一个漏洞利用模块基于它们对目标系统的潜在影响都被标记了一个 Rank 字段。用户可以基于 Rank 对漏洞利用模块进行搜索,分类以及排序。
Rank 按照可靠性降序排列:

  • excellent 漏洞利用程序绝对不会使目标服务崩溃,就像 SQL 注入、命令执行、远程文件包含、本地文件包含等等。除非有特殊情况,典型的内存破坏利用程序不可以被评估为该级别。
  • great 该漏洞利用程序有一个默认的目标系统,并且可以自动检测适当的目标系统,或者在目标服务的版本检查之后可以返回到一个特定的返回地址。
  • good 该漏洞利用程序有一个默认目标系统,并且是这种类型软件的“常见情况”(桌面应用程序的Windows 7,服务器的 2012 等)
  • normal 该漏洞利用程序是可靠的,但是依赖于特定的版本,并且不能或者不能可靠地自动检测。
  • average 该漏洞利用程序不可靠或者难以利用。
  • low 对于通用的平台而言,该漏洞利用程序几乎不能利用(或者低于 50% 的利用成功率)
  • manual 该漏洞利用程序不稳定或者难以利用并且基于拒绝服务(DOS)。如果一个模块只有在用 户特别配置该模块的时候才会被用到,否则该模块不会被使用到,那么也可以评为该等级。
    通过路径查找
search path:mysql # mysql路径下的所有mysql利用模块 

缩小范围 - 平台
Modules affecting this platform 即:列出可以影响此平台的模块,也就是比较好的漏洞 有时候我们会搜索到大量的模块,那么可以用 platform:命令来缩小查询范围。使用 platform 命令后,所查询的结果会列出 rank 比较高的模块。
如果我要查找 mysql 的漏洞,那么输入:
search platform:mysql
linux平台下的
search platform:linux
通过类型查找
type : 特定类型的模块(exploit, payload, auxiliary, encoder, evasion, post, or nop)
要搜索 exploit 模块,那么就输入:
search type:exploit
联合查找
可以自行组合搭配使用上述search关键字
例如:查找mysql的exploit相关漏洞
search name:mysql type:exploit
CVE查找
查找:CVE-2017-8464 远程命令执行漏洞
search cve:CVE-2017-8464 type:exploit
查找 2020 年 linux 相关的漏洞模块
search cve:2020 name:linux
使用模块use
首先search一个模块,得到他的名称
search ms08_067 随后根据名称装载该模块
use exploit/windows/smb/ms08_067_netapi
kali渗透测试日记 - Metasploit渗透测试框架学习_目标系统_02 back退出所装载的模块
back
查看模块信息
info [模块名称]
若已经加载模块则直接info就可以查看信息了。
其他命令

  • Job Commands #后台任务命令
  • Resource Script Commands #资源脚本命令
  • Database Backend Commands #数据库后端命令
  • Credentials Backend Commands #证书/凭证后端命令
  • Developer Commands #开发人员命令
实战 - 利用ms17-010永恒之蓝漏洞

扫描目标是否存在该漏洞

search ms17-010
kali渗透测试日记 - Metasploit渗透测试框架学习_目标系统_03
找到其中的辅助扫描模块并载入

use auxiliary/scanner/smb/smb_ms17_010 show options # 查看使用的参数选项 

kali渗透测试日记 - Metasploit渗透测试框架学习_搜索_04
可见需要RHOSTS参数(即远程主机的IP),这里假设为192.168.1.56

set rhosts 192.168.1.56
开始扫描
run

kali渗透测试日记 - Metasploit渗透测试框架学习_postgresql_05

发现目标易受攻击,存在相关漏洞。
查找攻击模块(永恒之蓝)并加载

kali渗透测试日记 - Metasploit渗透测试框架学习_漏洞利用_06

search ms17-010 
use exploit/windows/smb/ms17_010_eternalblue 
show options 

kali渗透测试日记 - Metasploit渗透测试框架学习_postgresql_07
需要设置目标主机IP地址 RHOSTS
set RHOSTS 192.168.1.56
查看可以利用的目标主机类型
show targets
kali渗透测试日记 - Metasploit渗透测试框架学习_搜索_08
可以看到这个模块只有一个 target,所以默认就选择这个目标系统。不需要手动设置。

Metasploit框架介绍

模块

模块组织按照不同的用途分为 6 种类型的模块(Modules): 分为辅助模块(Aux)、渗透攻击模块(Exploits)、后渗透攻击模块(Post)、攻击载荷模块(payloads)、编码器模块(Encoders)、空指令模块(Nops)。 ## 工作目录

cd /usr/share/metasploit-framework 

kali渗透测试日记 - Metasploit渗透测试框架学习_目标系统

Metasploit靶机介绍

基本使用

Postgresql 概述

PostgreSQL 是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的 POSTGRES 4.2 版本为基础的对象关系型数据库管理系统。

注:PostgreSQL:世界上最先进的开源关系数据库
扩展:PostgreSQL 和 MySQL 数据的应用场景区别:
从应用场景来说,PostgreSQL 更加适合严格的企业应用场景(比如金融、电信、ERP、CRM),而MySQL 更加适合业务逻辑相对简单、数据可靠性要求较低的互联网场景。

启动数据库
systemctl start postgresql
设置开机启动
systemctl enable postgresql
终端命令启动Metasploit
msfconsole ##msf 相关命令

Core Commands 核心命令

connect命令
connect [IP] [PORT]
连接成功后可以提交一个get请求来查看服务器版本号
get /

Module Commands 模块命令

show命令
命令的有效参数是:all, encoders, nops, exploits, payloads, auxiliary, post, plugins, info, options 列出 metasploit 框架中的所有渗透攻击模块 exploits show exploits 也可以用show查看其它模块的工具。如 show payloads
search常用的搜索
语法:Search Keywords 参数:关键字 metasploit 支持模糊查找,不区分大小写,这样大家查找时更方便
通过name查找
search mysql # search 后直接跟要查找内容,查得很广泛。只有当你对漏洞名字很描述很清楚时,使用这个方法 search name:mysql

每列的含意是:
# Name Disclosure Date Rank Check Description
编号 名称 披露日期 排名 检查 说明

每一个漏洞利用模块基于它们对目标系统的潜在影响都被标记了一个 Rank 字段。用户可以基于 Rank 对漏洞利用模块进行搜索,分类以及排序。
Rank 按照可靠性降序排列:

  • excellent 漏洞利用程序绝对不会使目标服务崩溃,就像 SQL 注入、命令执行、远程文件包含、本地文件包含等等。除非有特殊情况,典型的内存破坏利用程序不可以被评估为该级别。
  • great 该漏洞利用程序有一个默认的目标系统,并且可以自动检测适当的目标系统,或者在目标服务的版本检查之后可以返回到一个特定的返回地址。
  • good 该漏洞利用程序有一个默认目标系统,并且是这种类型软件的、常见情况(桌面应用程序的Windows 7,服务器的 2012 等)
  • normal 该漏洞利用程序是可靠的,但是依赖于特定的版本,并且不能或者不能可靠地自动检测。
  • average 该漏洞利用程序不可靠或者难以利用。
  • low 对于通用的平台而言,该漏洞利用程序几乎不能利用(或者低于 50% 的利用成功率)
  • manual 该漏洞利用程序不稳定或者难以利用并且基于拒绝服务(DOS)。如果一个模块只有在用 户特别配置该模块的时候才会被用到,否则该模块不会被使用到,那么也可以评为该等级。
    通过路径查找
search path:mysql # mysql路径下的所有mysql利用模块 

缩小范围 - 平台
Modules affecting this platform 即:列出可以影响此平台的模块,也就是比较好的漏洞 有时候我们会搜索到大量的模块,那么可以用 platform:命令来缩小查询范围。使用 platform 命令后,所查询的结果会列出 rank 比较高的模块。
如果我要查找 mysql 的漏洞,那么输入:
search platform:mysql
linux平台下的
search platform:linux
通过类型查找
type : 特定类型的模块(exploit, payload, auxiliary, encoder, evasion, post, or nop)
要搜索 exploit 模块,那么就输入:
search type:exploit
联合查找
可以自行组合搭配使用上述search关键字
例如:查找mysql的exploit相关漏洞
search name:mysql type:exploit
CVE查找
查找:CVE-2017-8464 远程命令执行漏洞
search cve:CVE-2017-8464 type:exploit
查找 2020 年 linux 相关的漏洞模块
search cve:2020 name:linux
使用模块use
首先search一个模块,得到他的名称
search ms08_067 随后根据名称装载该模块
use exploit/windows/smb/ms08_067_netapi
kali渗透测试日记 - Metasploit渗透测试框架学习_目标系统_02 back退出所装载的模块
back
查看模块信息
info [模块名称]
若已经加载模块则直接info就可以查看信息了。
其他命令

  • Job Commands #后台任务命令
  • Resource Script Commands #资源脚本命令
  • Database Backend Commands #数据库后端命令
  • Credentials Backend Commands #证书/凭证后端命令
  • Developer Commands #开发人员命令