【渗透-漏洞利用】Hello,Metasploit
前言:如果你没听说过Metasploit,这篇文章可能不适合继续阅读。
初识Metasploit:开源免费;全能的渗透攻击平台;基于各个模块,能够实现几乎所有渗透操作,例如主机发现、信息收集、漏洞的扫描和利用、提权与维持等。
Table of Contents
本文,将介绍搭建一个完整的Metasploit环境。
- 获取数据包并安装
- 配置Metasploit底层数据库:PostgreSQL
- 配置Metasploit用户接口
安装Metasploit
官网:https://www.rapid7.com/products/metasploit/download/editions/
Github:https://github.com/rapid7/metasploit-framework/wiki/Nightly-Installers
Kali Linux已经安装好了Metasploit环境,直接使用即可。
配置PostgreSQL
为什么需要PostgreSQL?
- 在Kali Linux中,启动Metasploit后,需要连接到PostgreSQL服务器。在Kali Linux系统中,它是自动完成连接的。
- 在其他系统中,需要手动连接。
获取PostgreSQL:https://www.postgresql.org/download/
初始化PostgreSQL
启动、查看、关闭PostgreSQL服务:
- msfdb start
- ss -ant
- msfdb stop
初始化默认数据库、删除:
- msfdb init
- msfdb delete
- msfdb reinit
- msfdb status (查看数据库状态)
重置数据库(注意:如果数据库已经初始化,就不能使用“msfdb init”,而应使用reinit)
初始化数据库后,就可以直接启动Metasploit:
- msfdb init 初始化
- msfdb run 启动Metasploit
在MSF中操作PostgreSQL
在Metasploit中连接PostgreSQL:
- 方式一:db_connect 用户名:密码@IP地址:端口/数据库名
- 方式二:db_connect -y 配置文件绝对路径
断开:
- db_disconnect
- db_status 检查当前状态
自定义创建用户、数据库
- PostgreSQL初始化时,会默认创建msf和msf_test数据库,并且所有的配置在database.yml文件中。
- 如果该配置文件丢失,或者想自己手动创建自定义的数据库,则需要采用响应的命令。
- 启动服务:msfdb start
- 切换到postgre账户:su postgres
- 创建账户:createuser 用户名 -p
- 输入密码
- 创建数据库:createdb --owner=用户名 数据库名
- 启动Metasploit:msfconsole
- 连接刚刚创建的数据库(在Metasploit中):db_connect 用户名:密码@IP地址:端口/数据库名
示例:
- 启动服务:msfdb start
- 切换到postgre账户:su postgres
- 创建账户:createuser 用户名 -P
- 输入密码
- 创建数据库:createdb --owner=用户名 数据库名
- 启动Metasploit:msfconsole
- 连接刚刚创建的数据库(在Metasploit中):db_connect 用户名:密码@IP地址:端口/数据库名
用户接口
用户接口:Metasploit系统和用户之间进行交互和信息交换的媒介,它实现信息的内部形式与人类可以接受形式之间的转换。
图形界面接口-Armitage
Armitage是一个完全交互式的图像化用户接口,由Raphael Mudge开发。
操作步骤:
- 配置好PostgreSQL:
- 启动服务:service postgresql start
- 初始化数据库:msf init
- 启动:armitage
点击Armitage图标,依次按照下图进行:
进入主界面:
命令行接口-msfconsole
在终端输入:msfconsole
使用show options,列出所有可定义的选项:
设置提示信息:set Prompt 自定义提示符或参数
参数:
- %D:当前目录
- %H:机器名
- %J:当前正在运行的工作数量
- %L:本地IP地址
- %S:当前打开的回话数
- %U:当前使用的用户名称
- %W:当前所处的工作区
- %T:显示时间戳
设置时间格式:set PromptTimeFormat 时间格式参数(%Y, %m, %d, %H, %M, %S)
设置提示符:set PromptChar 符号
启用计时功能:set TimeStampOutput true
启用、关闭控制台日志:set ConsoleLogging true/false
启用、关闭会话日志:set SeesionLogging true/false
设置日志的级别:set SeesionLogging [0|1|2|3,值越高,越详细]
设置模块的默认级别:set MinimumRank [0|100|200|300|400|500|600,值越高,利用成功率越高]