写点什么

网络安全 kali 渗透学习 web 渗透入门 Metasploit 基本使用方法

作者:学神来啦
  • 2022 年 2 月 25 日
  • 本文字数:4412 字

    阅读完需:约 14 分钟

Metasploit 是一款开源的安全漏洞检测工具,可以帮助安全和 IT 专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供真正的安全风险情报。这些功能包括智能开发,代码审计,Web 应用程序扫描,社会工程。团队合作,在 Metasploit 和综合报告提出了他们的发现。


这篇文章教大家了解 Metasploit 基本使用方法


以下有视频版还有文字版


不知道怎么操作的请看文字版的,里面详细的步骤。


关注公众号侠盗男爵回复【kali 系统】


视频版↓:


网络安全/kali/黑客/web安全/渗透测试/-3-5个月网络安全全套课程-小白入门到精通!_哔哩哔哩_bilibili


文字版↓:


年底了号主把我自己用到所有技术“做过的实战项目-内网实战靶场环境-渗透工具”还有很多渗透思维图谱!


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


Postgresql 概述:


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


官网:https://www.postgresql.org/



注:PostgreSQL:世界上最先进的开源关系数据库 Relational [rɪˈleɪʃənl] 关系型


扩展:PostgreSQL 和 MySQL 数据的应用场景区别:


从应用场景来说,PostgreSQL 更加适合严格的企业应用场景(比如金融、电信、ERP、CRM),而 MySQL 更加适合业务逻辑相对简单、数据可靠性要求较低的互联网场景


手动启动数据库


┌──(root💀xuegod53)-[~]


└─# systemctl start postgresql


└─# systemctl enable postgresql #设置成开机启动数据库,我们要经常用


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


第一种点击图标




注:每次弹出的欢迎信息都是随机的。


第二种使用终端命令


└─# msfconsole



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



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


msf6 > help #查看帮助信息。



注:通过 help 查看帮助,可以对 msf 有个整体认识,可以看到 msf 相关命令可以分成以下类型:


Core Commands #核心命令


Module Commands #模块命令


Job Commands #后台任务命令


Resource Script Commands #资源脚本命令


Database Backend Commands #数据库后端命令


Credentials Backend Commands #证书/凭证后端命令


Developer Commands #开发人员命令


我们下面讲解一下我们常用的命令。


1、核心命令中的 connect 命令


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


192.168.1.1 是 IP 地址 80 是端口号。


查看 connect 命令参数:


msf6 > connect #直接回车



连接目标 80 端口


msf6 > 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


2、模块相关的命令 show 使用方法


show 命令用的很多。


“show”命令的有效参数是:all, encoders, nops, exploits, payloads, auxiliary, post, plugins, info, options


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


msf6 > show exploits


#列出 metasploit 框架中的所有渗透攻击模块。该命令列出数据较多,较为耗费时间。


msf6 > show payloads #列出 metasploit 框架中的所有攻击载荷。


msf6 > show auxiliary #列出 metasploit 框架中的所有辅助攻击载荷。


互动:使用 show 命令,执行很慢,怎么办?


3、模块相关的命令 search 搜索的使用方法


当你使用 msfconsole 的时候,你会用到各种漏洞模块、各种插件等等。所以 search 搜索命令就很重要。


当你输入 search –h 会列出 search 命令的一些选项。


msf6 > search -h


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



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


‍‍这里需要用到 name:命令。


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


例:先查找出自己想要的 ms08_067 漏洞模块。


msf6 > search ms08_067



语法:Search Keywords 参数:关键字


比如 msf6 > search name:mysql #要查找 mysql 数据库的漏洞



每列的含意是:

Name Disclosure Date Rank Check Description

编号 名称 披露日期 排名 检查 说明


Disclosure [dɪsˈkləʊʒə(r)] 揭露;透露;公开; rank [ræŋk] 等级 ,rank 通常用来描述漏洞级别


每一个漏洞利用模块基于它们对目标系统的潜在影响都被标记了一个 Rank 字段。


用户可以基于 Rank 对漏洞利用模块进行搜索,分类以及排序。


Rank 按照可靠性降序排列:


excellent 漏洞利用程序绝对不会使目标服务崩溃,就像 SQL 注入、命令执行、远程文件包含、本地文件包含等等。除非有特殊情况,典型的内存破坏利用程序不可以被评估为该级别。


great 该漏洞利用程序有一个默认的目标系统,并且可以自动检测适当的目标系统,或者在目标服务的版本检查之后可以返回到一个特定的返回地址。


good 该漏洞利用程序有一个默认目标系统,并且是这种类型软件的“常见情况”(桌面应用程序的 Windows 7,服务器的 2012 等)


normal 该漏洞利用程序是可靠的,但是依赖于特定的版本,并且不能或者不能可靠地自动检测。


average 该漏洞利用程序不可靠或者难以利用。


low 对于通用的平台而言,该漏洞利用程序几乎不能利用(或者低于 50% 的利用成功率)


manual 该漏洞利用程序不稳定或者难以利用并且基于拒绝服务(DOS)。如果一个模块只有在用户特别配置该模块的时候才会被用到,否则该模块不会被使用到,那么也可以评为该等级。


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


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


msf6 > search path:mysql


例 3:‍‍缩小查询范围‍‍


‍‍关键字:platform [ˈplætfɔːm] 平台


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


有时候我们会搜索到大量的模块,那么可以用 platform:命令来缩小查询范围。使用 platform 命令后,所查询的结果会列出 rank 比较高的模块。如果我要查找 mysql 的漏洞,那么输入:


msf6 > search platform:mysql


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



例 4:‍‍通过类型进行查找‍‍


这里要使用到 type:命令。


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


要搜索 exploit 模块,那么就输入:


msf6 > search type:exploit


例 5:‍‍联合查找‍‍


大家可以使用上面的参数自行搭配使用。如果我要查找 mysql 的 exploit 相关漏洞。那么输入:


msf6 > search name:mysql type:exploit



注:MySQL yaSSL CertDecoder::GetName Buffer Overflow 的意思是:


mysql yassl certdecoder::getname 缓冲区溢出漏洞


例 6:根据 CVE 搜索 exploit 相关模块


互动:CVE 是什么? 听过:1 没有:2


CVE 概述:CVE 的英文全称是“Common Vulnerabilities & Exposures”公共漏洞和暴露。CVE 就好像是一个字典表,为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出一个公共的名称。使用一个共同的名字,可以帮助用户在各自独立的各种漏洞数据库中和漏洞评估工具中共享数据,虽然这些工具很难整合在一起。这样就使得 CVE 成为了安全信息共享的“关键字”。如果在一个漏洞报告中指明的一个漏洞,如果有 CVE 名称,你就可以快速地在任何其它 CVE 兼容的数据库中找到相应修补的信息,解决安全问题。


Vulnerabilities [ˌvʌlnərəˈbɪlɪtiz] 脆弱性;弱点 ; Exposures [ɪksˈpəʊʒəz] 暴露;曝光


事情背景:


2017 年 GitHub 上公开了 CVE-2017-8464 漏洞的 metasploit-framework 利用模块。利用此模块在 Windows 10 x64 (Build 14393)版本上测试有效。


下载链接:


https://github.com/ykoster/metasploit-framework/blob/b669b9fb81efdec4f59177116ee9524d71527d37/documentation/modules/exploit/windows/fileformat/cve_2017_8464_lnk_rce.md


现在此模块已经加入 metasploit 中了。


通过执行 cve_2017_8464_lnk_rce.rb 模块,将生成大量的.lnk 文件(对应盘符从 D 到 Z)和要加载的.dll 文件(后门文件)。将所有样本文件拷到 U 盘里,然后将 U 盘插到 Windows7 机器上,默认自动执行:



样本执行成功将反弹回一个 Session:



从而可以让我们可以远程执行命令。


查找:CVE-2017-8464 远程命令执行漏洞


msf6 > search cve:CVE-2017-8464 type:exploit



msf6 > search cve:2020 name:linux #查找 2020 年 linux 相关的漏洞模块



搜索参数可以组合使用,可以更精准的查询到对应的模块。


3、模块相关的命令 use 的使用方法


use 使用参数。如你要使用到某个模块,就要使用到 use 命令


语法:use 模块的名字


实战背景:


2008 年微软爆出 ms08_067 漏洞,如果用户在受影响的系统上收到特制的 RPC 请求,则该漏洞可能允许远程执行代码。 在 Microsoft Windows 2000、Windows XP 和 Windows Server 2003 系统上,攻击者可能未经身份验证即可利用此漏洞运行任意代码。 此漏洞可能用于进行蠕虫攻击。


(1)、先查找出自己想要的 ms08_067 漏洞模块。


msf6 > search ms08_067



互动:以下 3 个种搜索方式,找出来的结果一样吗?


msf6 > search ms08_067 #使用下划线


msf6 > search ms08-067 #使用减号


msf6 > search MS08-067 #使用大写字母 MS


答:结果是一样,metasploit 支持模糊查找,不区分大小写,这样大家查找时更方便


(2)、装载一个渗透攻击模块


msf6 > use exploit/windows/smb/ms08_067_netapi



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


msf6 exploit(windows/smb/ms08_067_netapi) > back #back 退出当前调用的模块


3、模块相关的命令 info 的使用方法


info :显示模块的相关信息。


方法 1:info 模块名称


msf6 > info exploit/windows/smb/ms08_067_netapi


方法 2:use 装载模块后直接使用 info


msf6 > use exploit/windows/smb/ms08_067_netapi



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


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



(2)、Basic options: 调用漏洞需要的相关参数



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



(4)、参考文档



方法 2:使用 show 命令查看模块的相关信息


msf6 exploit(windows/smb/ms08_067_netapi) > show options #查看模块的选项



msf6 exploit(windows/smb/ms08_067_netapi) > show targets #查看可以攻击哪些操作系统



设置 RHOSTS 参数,指定攻击的目标机器


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



msf6 exploit(windows/smb/ms08_067_netapi) > show options #查看设置的值



配置好了之后我们输入 exploit 或 run 就可以执行该模块。


msf6 exploit(windows/smb/ms08_067_netapi) > back #使用 back 即可退出装载的模块


注:不要使用 exit,exit 会直接退出 Metasploit 程序


更多技术干货源码笔记可以扫描下方二维码



用户头像

学神来啦

关注

还未添加个人签名 2021.06.02 加入

10年Linux使用及管理经验,7年IT在线教育培训经验。精通Linux、Python、思科、C++、安全渗透等技术。曾任职国内知名互联网公司高级运维架构师、运维总监。对基于Linux下开源程序Openstack、Docker、K8S、DevOps、

评论

发布
暂无评论
网络安全kali渗透学习 web渗透入门 Metasploit基本使用方法