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 ] #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)版本上测试有效。
下载链接:
现在此模块已经加入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程序
更多技术干货源码笔记可以扫描下方二维码