欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > 网络空间安全之一个WH的超前沿全栈技术深入学习之路(13-1)白帽必经之路——Metasploit 渗透测试框架

网络空间安全之一个WH的超前沿全栈技术深入学习之路(13-1)白帽必经之路——Metasploit 渗透测试框架

2024/11/30 0:35:01 来源:https://blog.csdn.net/weixin_74796680/article/details/144042036  浏览:    关键词:网络空间安全之一个WH的超前沿全栈技术深入学习之路(13-1)白帽必经之路——Metasploit 渗透测试框架

欢迎各位彦祖与热巴畅游本人专栏与博客

你的三连是我最大的动力

以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现]

专栏跑道一

➡️网络空间安全——全栈前沿技术持续深入学习 


专栏跑道二


➡️ 24 Network Security -LJS 

​ 

专栏跑道三


 ➡️ MYSQL REDIS Advance operation

专栏跑道四

➡️HCIP;H3C-SE;CCIP——LJS[华为、华三、思科高级网络]

专栏跑道五


➡️RHCE-LJS[Linux高端骚操作实战篇]

专栏跑道六

➡️数据结构与算法[考研+实际工作应用+C程序设计]

专栏跑道七

➡️RHCSA-LJS[Linux初级及进阶骚技能]


上节回顾

目录

欢迎各位彦祖与热巴畅游本人专栏与博客

你的三连是我最大的动力

以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现]

专栏跑道一

➡️网络空间安全——全栈前沿技术持续深入学习 

专栏跑道二

➡️ 24 Network Security -LJS 

专栏跑道三

 ➡️ MYSQL REDIS Advance operation

专栏跑道四

➡️HCIP;H3C-SE;CCIP——LJS[华为、华三、思科高级网络]

专栏跑道五

➡️RHCE-LJS[Linux高端骚操作实战篇]​编辑​

专栏跑道六

➡️数据结构与算法[考研+实际工作应用+C程序设计]

专栏跑道七

➡️RHCSA-LJS[Linux初级及进阶骚技能]

上节回顾

1.Metasploit 渗透测试框架介绍

1.2Metasploit 体系框架

2 Metasploitable2-Linux 靶机系统介绍

2.2 Metasploitable2 安装

使用 VMware 打开新的虚拟机

选择解压出来的.vmx 文件

修改靶机的网络配置

选择桥接模式

开启虚拟机

修改 root 用户密码

设置新密码

切换到 root 用户

注:靶机中直接使用 vim 命令对文件修改即可

 修改完成后创建一个快照以便我们后期对操作系统造成破坏。

3 Metasploit 基本使用方法

手动启动数据库

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

第一种点击图标

注意:

第二种使用终端命令

注意:

  查看帮助信息。

注意:

3.2MS常用的命令详解

核心命令中的 connect 命令

连接目标端口

MS模块中show 使用方法

示例1:列出 metasploit 框架中的所有渗透攻击模块 exploits。

示例2:列出 metasploit 框架中的所有攻击载荷。

示例3:列出 metasploit 框架中的所有辅助攻击载荷。

4.MS模块命令 之search 搜索的使用方法

示例1:通过 name 关键字进行查找

比如说想找ms08_067 漏洞模块

或者说我想找 mysql 数据库的漏洞

语法:

示例2:通过路径进行查找

示例3:缩小查询范围

注意:


1.Metasploit 渗透测试框架介绍

1.2Metasploit 体系框架

  • 1、基础库:metasploit 基础库文件位于源码根目录路径下的 libraries 目录中,包括Rex,framework-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 语言等多种形式,并可以进行各种类型的编码。


2 Metasploitable2-Linux 靶机系统介绍

2.2 Metasploitable2 安装

使用 VMware 打开新的虚拟机

选择解压出来的.vmx 文件

修改靶机的网络配置

选择桥接模式

开启虚拟机

  • 使用普通用户:msfadmin 密码: msfadmin 进行登录
  • 修改 root 用户密码

    msfadmin@metasploitable:~$ sudo passwd root
    [sudo] password for msfadmin:msfadmin #注:需要提权输入 msfadmin 用户的密码
  • 设置新密码

    Enter new UNIX password: 123456
    Retype new UNIX password: 123456
    passwd: password updated successfully
  • 切换到 root 用户

    msfadmin@metasploitable:~$ su root
    Password:123456

  • 注:靶机中直接使用 vim 命令对文件修改即可

  • root@metasploitable:/home/msfadmin# vim /etc/network/interfaces #修改 eth0 配置
    如下
    auto eth0
    iface eth0 inet static
    address 192.168.1.180
    netmask 255.255.255.0
    gateway 192.168.1.1
    :wq 保存退出
    root@metasploitable:/home/msfadmin# /etc/init.d/networking restart
    * Reconfiguring network interfaces...
    root@metasploitable:/home/msfadmin# ifconfig

 修改完成后创建一个快照以便我们后期对操作系统造成破坏。

3 Metasploit 基本使用方法

  • Metasploit 基本命令
  • Metasploit 程序需要使用 Postgresql 数据库。
  • 注:PostgreSQL:世界上最先进的开源关系数据库

手动启动数据库

root@xuegod53:~# systemctl start postgresql
root@xuegod53:~# systemctl enable postgresql #设置成开机启动数据库,我们要经常用


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


第一种点击图标

注意:

  • 每次弹出的欢迎信息都是随机的。这次我弹出的提示欢迎是一只兔子。

第二种使用终端命令

注意:

  • 第一次启动程序会是初始化应用程序。

┌──(root㉿kali-2024)-[/home/ljs/Desktop]
└─# msfconsole                       
Metasploit tip: Use the resource command to run commands from a file.:okOOOkdc'           'cdkOOOko:..xOOOOOOOOOOOOc       cOOOOOOOOOOOOx.:OOOOOOOOOOOOOOOk,   ,kOOOOOOOOOOOOOOO:'OOOOOOOOOkkkkOOOOO: :OOOOOOOOOOOOOOOOOO'oOOOOOOOO.    .oOOOOoOOOOl.    ,OOOOOOOOodOOOOOOOO.      .cOOOOOc.      ,OOOOOOOOxlOOOOOOOO.         ;d;         ,OOOOOOOOl.OOOOOOOO.   .;           ;    ,OOOOOOOO.cOOOOOOO.   .OOc.     'oOO.   ,OOOOOOOcoOOOOOO.   .OOOO.   :OOOO.   ,OOOOOOolOOOOO.   .OOOO.   :OOOO.   ,OOOOOl;OOOO'   .OOOO.   :OOOO.   ;OOOO;.dOOo   .OOOOocccxOOOO.   xOOd.,kOl  .OOOOOOOOOOOOO. .dOk,:kk;.OOOOOOOOOOOOO.cOk:;kOOOOOOOOOOOOOOOk:,xOOOOOOOOOOOx,.lOOOOOOOl.,dOd,.                                                      =[ metasploit v6.3.55-dev                          ]
+ -- --=[ 2397 exploits - 1232 auxiliary - 422 post       ]
+ -- --=[ 1391 payloads - 46 encoders - 11 nops           ]
+ -- --=[ 9 evasion                                       ]Metasploit Documentation: https://docs.metasploit.com/
  • 启动完成后会有一些统计信息,比如说版本号,有多少个 exploits,多少个 payloads 等。


  查看帮助信息。

msf6 > help 

msf6 > help                                                                            Core Commands                                                                          
=============                                                                          Command       Description                                                          -------       -----------                                                          ?             Help menu                                                            banner        Display an awesome metasploit banner                                 cd            Change the current working directory                                 color         Toggle color                                                         connect       Communicate with a host                                              debug         Display information useful for debugging                             exit          Exit the console                                                     features      Display the list of not yet released features that can be opted in to    get           Gets the value of a context-specific variable                            getg          Gets the value of a global variable                                      grep          Grep the output of another command                                       help          Help menu                                                                history       Show command history                                                     load          Load a framework pluginquit          Exit the consolerepeat        Repeat a list of commandsroute         Route traffic through a sessionsave          Saves the active datastoressessions      Dump session listings and display information about sessionsset           Sets a context-specific variable to a valuesetg          Sets a global variable to a valuesleep         Do nothing for the specified number of secondsspool         Write console output into a file as well the screenthreads       View and manipulate background threadstips          Show a list of useful productivity tipsunload        Unload a framework pluginunset         Unsets one or more context-specific variablesunsetg        Unsets one or more global variablesversion       Show the framework and console library version numbersModule Commands
===============Command       Description-------       -----------advanced      Displays advanced options for one or more modulesback          Move back from the current contextclearm        Clear the module stackfavorite      Add module(s) to the list of favorite modulesfavorites     Print the list of favorite modules (alias for `show favorites`)info          Displays information about one or more moduleslistm         List the module stackloadpath      Searches for and loads modules from a pathoptions       Displays global options or for one or more modulespopm          Pops the latest module off the stack and makes it activeprevious      Sets the previously loaded module as the current modulepushm         Pushes the active or list of modules onto the module stackreload_all    Reloads all modules from all defined module pathssearch        Searches module names and descriptionsshow          Displays modules of a given type, or all modulesuse           Interact with a module by name or search term/indexJob Commands
============Command       Description-------       -----------handler       Start a payload handler as jobjobs          Displays and manages jobskill          Kill a jobrename_job    Rename a jobResource Script Commands
========================Command       Description-------       -----------makerc        Save commands entered since start to a fileresource      Run the commands stored in a fileDatabase Backend Commands
=========================Command       Description-------       -----------analyze       Analyze database information about a specific address or address rangedb_connect    Connect to an existing data servicedb_disconnec  Disconnect from the current data servicetdb_export     Export a file containing the contents of the databasedb_import     Import a scan result file (filetype will be auto-detected)db_nmap       Executes nmap and records the output automaticallydb_rebuild_c  Rebuilds the database-stored module cache (deprecated)achedb_remove     Remove the saved data service entrydb_save       Save the current data service connection as the default to reconnect onstartupdb_stats      Show statistics for the databasedb_status     Show the current data service statushosts         List all hosts in the databaseklist         List Kerberos tickets in the databaseloot          List all loot in the databasenotes         List all notes in the databaseservices      List all services in the databasevulns         List all vulnerabilities in the databaseworkspace     Switch between database workspacesCredentials Backend Commands
============================Command       Description-------       -----------creds         List all credentials in the databaseDeveloper Commands
==================Command       Description-------       -----------edit          Edit the current module or a file with the preferred editorirb           Open an interactive Ruby shell in the current contextlog           Display framework.log paged to the end if possiblepry           Open the Pry debugger on the current module or Frameworkreload_lib    Reload Ruby library files from specified pathstime          Time how long it takes to run a particular commandmsfconsole
==========`msfconsole` is the primary interface to Metasploit Framework. There is quite a
lot that needs go here, please be patient and keep an eye on this space!Building ranges and lists
-------------------------Many commands and options that take a list of things can use ranges to avoid
having to manually list each desired thing. All ranges are inclusive.### Ranges of IDsCommands that take a list of IDs can use ranges to help. Individual IDs must be
separated by a `,` (no space allowed) and ranges can be expressed with either
`-` or `..`.### Ranges of IPsThere are several ways to specify ranges of IP addresses that can be mixed
together. The first way is a list of IPs separated by just a ` ` (ASCII space),
with an optional `,`. The next way is two complete IP addresses in the form of
`BEGINNING_ADDRESS-END_ADDRESS` like `127.0.1.44-127.0.2.33`. CIDR
specifications may also be used, however the whole address must be given to
Metasploit like `127.0.0.0/8` and not `127/8`, contrary to the RFC.
Additionally, a netmask can be used in conjunction with a domain name to
dynamically resolve which block to target. All these methods work for both IPv4
and IPv6 addresses. IPv4 addresses can also be specified with special octet
ranges from the [NMAP target
specification](https://nmap.org/book/man-target-specification.html)### ExamplesTerminate the first sessions:sessions -k 1Stop some extra running jobs:jobs -k 2-6,7,8,11..15Check a set of IP addresses:check 127.168.0.0/16, 127.0.0-2.1-4,15 127.0.0.255Target a set of IPv6 hosts:set RHOSTS fe80::3990:0000/110, ::1-::f0f0Target a block from a resolved domain name:set RHOSTS www.example.test/24
msf6 > 

注意:

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

3.2MS常用的命令详解

核心命令中的 connect 命令

  • connect 命令主要用于远程连接主机。一般用于内网渗透。比较常用的命令就是“connect
  • 192.168.1.1 80”
  • 192.168.1.1 是 IP 地址 80 是端口号。
  • 查看 connect 命令参数:
msf6 > connect 
Usage: connect [options] <host> <port>Communicate with a host, similar to interacting via netcat, taking advantage of
any configured session pivoting.OPTIONS:-c, --comm <comm>               Specify which Comm to use.-C, --crlf                      Try to use CRLF for EOL sequence.-h, --help                      Help banner.-i, --send-contents <file>      Send the contents of a file.-p, --proxies <proxies>         List of proxies to use.-P, --source-port <port>        Specify source port.-S, --source-address <address>  Specify source address.-s, --ssl                       Connect with SSL.-u, --udp                       Switch to a UDP socket.-w, --timeout <seconds>         Specify connect timeout.-z, --try-connection            Just try to connect, then return.
msf6 > 

连接目标端口

msf6 > connect  www.huawei.com 80   #连接上后在另一行,直接输入 get /
[*] Connected to www.huawei.com:80 (via: 192.168.79.135:33673)/get   #提交一个 get 请求,可以查看到服务器版本号
HTTP/1.1 400 Bad Request
Server: openresty
Date: Wed, 27 Nov 2024 14:17:46 GMT
Content-Type: text/html
Content-Length: 154
Connection: close<html>
<head><title>400 Bad Request</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
<hr><center>openresty</center>
</body>
</html>
msf6 > 

MS模块中show 使用方法

  • show 命令用的很多。
     
  • “show”命令的有效参数是:all, encoders, nops, exploits, payloads, auxiliary, post,
    plugins, info, options
示例1:列出 metasploit 框架中的所有渗透攻击模块 exploits。
msf6 > show exploits   #列出 metasploit 框架中的所有渗透攻击模块。该命令列出数据较多,较为耗费时间。

示例2:列出 metasploit 框架中的所有攻击载荷。

msf6 > show payloads 

示例3:列出 metasploit 框架中的所有辅助攻击载荷。

msf6 > show auxiliary 

4.MS模块命令 之search 搜索的使用方法

  • 当你使用 msfconsole 的时候,你会用到各种漏洞模块、各种插件等等。

  • 所以 search 搜索命令就很重要。

msf6 > show auxiliary Usage: search [ options ] <keywords> #search 后主要加选项和关键字

示例1:通过 name 关键字进行查找

msf6 > search  mysql
  • search 后直接跟要查找内容,查得很广泛。只有当你对漏洞名字很描述很清楚时,使用这个方法

比如说想找ms08_067 漏洞模块

msf6 > search  ms08_067

或者说我想找 mysql 数据库的漏洞

语法:
Search Keywords 参数:关键字

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

示例2:通过路径进行查找

  • 有时候,我们只记得模块的路径,但是却忘记了模块的名称。

  • 那么就可以用 path:命令查找在该路径下的所有模块。如果我要 mysql 路径下的所有 mysql 利用模块,那么就可以输入如下示例命令

msf6 > search path:mysql

示例3:缩小查询范围

msf6 > search platform:mysql
  • 关键字:platform [ˈplætfɔːm] 平台
  • 作用: Modules affecting this platform 即:列出可以影响此平台的模块,也就是比较好的漏洞有时候我们会搜索到大量的模块
  • 那么可以用 platform:命令来缩小查询范围。使用 platform 命令后,所查询的结果会列出 rank 比较高的模块。
  • 如果我要查找 mysql 的漏洞,那么可以输入如下示例命令:

注意:

  • 可以对比一下上面的截图,发现所有 rank 为 normal 的模块全部都屏蔽了,只剩下几个比较高级的利用模块。


版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com