此文章仅用于学习研究使用,请勿用于违法犯罪,请遵守《网络安全法》等相关法律法规。
漏洞利用介绍
漏洞利用是利用程序中的某些漏洞得到计算机的控制权。通过漏洞扫描,可以从目标系统中找到容易攻击的漏洞,然后可以利用该漏洞获取权限,从而实现对目标系统的控制。
Metasploit工具介绍
Metasploit工具囊括了智能开发、代码审计、Web应用程序扫描和社会工程等各项功能。Metasploit框架可以用来发现漏洞、利用漏洞、提交漏洞,并实施攻击。用户可以从其他漏洞扫描程序导入数据,基于漏洞主机的详细信息来发现可攻击漏洞,从而使用有效载荷对系统发起攻击
Metasploit框架的强大之处就是提供了大量的渗透测试模块和插件。这些模块按照不同用途可以分为7种类型:
- Exploits(渗透攻击模块)
- Auxiliary(辅助模块)
- Post(后渗透攻击模块)
- Payloads(攻击载荷模块)
- Encoders(编码器模块)
- Nops(空指令模块)
- Evasion(规避模块)
Metasploit工具基本使用
启动Metasploit的终端模式,执行命令如下:
msfconsole
初始化Metasploit
在kali Linux中,Metasploit主要使用PostgreSQL数据库存储数据,因此需要开启PostgreSQL数据库
service postgresql start
update-rc.d postgresql enable //开机自启
创建和初始化数据库
msfdb init
创建工作区
为了区分不同的扫描任务,可以创建多个工作区,用来保存不同扫描任务的各种信息,不同工作区之间的信息相互独立
创建工作区语法格式
workspace -a [name]
-a:表示添加工作区
切换工作区语法格式
workspace [name]
查看当前所在的工作区
msf6 > workspace
导入扫描报告
用户可以导入一些第三方扫描报告,来获取主机信息
导入扫描报告语法格式
db_import <file路径> [file2...]
查看支持的报告格式
msf6 > db_import
例:导入报告文件Metasploitable2_oa73qb.nessus,执行命令如下
msf6 > db_import /root/Nessus/Metasploitable2_oa73qb.nessus
查看导入的主机报告概括信息
msf6 > workspace -v
查询渗透测试模块
预分析扫描报告
查看报告的主机信息
msf6 > hosts
查看漏洞信息
msf6 > vulns
手动查找攻击载荷
当用户确定目标系统中存在的漏洞后,可以在Metasploit中查找渗透测试模块,以选择可以利用其漏洞的渗透测试模块,进而实施渗透攻击
查找渗透测试模块的语法格式如下:
search [options] <keywords>
options表示支持的选项
keywords表示可使用的关键字
其中支持的选项如下:
- -h:显示帮助信息
- -o <file>:指定输出信息的保存文档,测试为CSV
- -S <string>:指定搜索的字符串
- -u:指定搜索模块
支持的关键字如下图所示:
例:查找CVE漏洞为2019年的渗透测试模块
msf6 > search cve:2019
查找后,可以选择一个渗透测试模块来实施渗透测试,输入use+模块路径即可,这里以第一个模块为例
use auxiliary/dos/http/cable_haunt_websocket_dos
手动导入第三方模块
首先在漏洞网站上找到自己需要的渗透测试模块进行下载,然后将模块文件上传到Metasploit默认模块位置/root/.msf4/modules后,重新启动Metasploit即可(建议在modules下新建文件夹,便于分类与管理)
例:在/root/.msf4/modules下新建文件夹exploits,将下载的模块文件命名为webtest.rb后放到exploits文件夹下即可。如果要使用该模块,则执行命令
msf6 > use exploits/webtest
实施攻击
当用户找到可利用漏洞的渗透测试模块后,即可实施攻击。基本流程为加载攻击载荷(Payload),配置攻击载荷,然后实施攻击。
加载攻击载荷
加载攻击载荷的语法格式如下:
set payload <payload name>
这里以php_eval渗透测试模块为例
首先选择php_eval渗透模块
查看可加载Payload
msf6 > show payloads
根据情况选择Payload,加载攻击载荷
msf6 > set payload payload/generic/custom
配置攻击载荷
查看可配置的选项
msf6 > show options
配置攻击载荷和配置模块选项是相同的操作,这里以配置模块选项中的RHOSTS为例
msf6 > set RHOSTS 192.168.20.134
当选项配置完后,输入exploit
实施攻击
msf6 > exploit
设置架构
一般情况下,支持多系统架构的渗透测试模块都默认架构选择为自动的。如果用户通过其他途径获取目标主机的架构,也可以手动设置其架构,以提高渗透测试效率。
这里以MS08_067漏洞模块为例,介绍设置架构的方法
首先选择MS08_067漏洞模块,并查看可利用的目标
查看可利用的目标架构
msf6 > show targets
根据自己的目标架构设置,设置架构的语法格式如下:
set target [id]
例:设置目标架构为Windows 2003 SP0 Universal
msf6 > set target 3