#渗透测试#红蓝对抗#SRC漏洞挖掘# Yakit插件使用及编写01
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章阅读。
目录
插件系统技术概述
技术选型
“嵌入式”是最终方案
Yakit 的插件是如何运作的?
插件商店介绍和使用
插件下载
插件编写与使用
常见插件类型
原理分类:独立模块与嵌入模块
典型应用分类
Yak 原生模块
MITM 原生模块
插件系统技术概述
技术选型
当安全工具在自称“平台”的时候,插件的编写难度,价值,以及自由度其实是限制工具成为真正“平台”的原因。很久以来,我们一直在探索“插件”模式的最终发展。
在 Python 的时代,其实“插件”也并不是那么棘手的事情。如果不在乎安全性和代码保密性,eval 虽然丑陋,但是好用。
但是当大家的产品变得工程化之后,Golang 这种“静态”特性让插件变得不是那么“自然”,大家可以通过 DLL / .so 来执行插件,但是 “并不是谁都可以写 Golang DLL/.so 的” 不是吗?于是在客户端层面,大家有努力的去想了别的办法,比如 npm 包的格式来封装插件,让他在客户端 “动态” 起来,但是依赖管理仍然是一个比较难过的关。
往往很多时候,我们遇到的这种困难其实换个领域,换个角度已经有了很棒的方案:譬如 Java 中的各种嵌入式脚本语言,经常被用来做“查询”的插件和简单逻辑。既然可以嵌入一些数据库与 IO 的能力,如果嵌入式语言可以使用的话,当然也可以嵌入 “扫描” 能力了。
“嵌入式”是最终方案当大家有了这个想法之后,我们就发现“嵌入式的语言”作为插件的实现,其实强度和表现力都是远大于 Yaml / Json 这类数据描述语言:表现力层面:图灵完备 > 数据容器(描述)语言。这是毋庸置疑的。
同时,如果为这个图灵完备语言增加和插件平台的各种交互,他理所应当成为一个非常合理的插件系统的。
这件事情是最合适 Yak 来做的,我们的引擎已经可以做到 “零依赖”,“嵌入执行”,“自动代码补全”。难道成为 Yakit 的插件系统核心是一件难事儿吗?当选定了这一条我们认为正确的路线之后,其实后面很多事情就变成了 “加油干” 就能解决的了。
Yakit 的插件是如何运作的?
我们需要固化用户输入的 Schema:当我们把用户输入的参数预先设定好之后,就可以生成用户需要填写的表单了,这其实非常方便,并不需要插件编写者真的去编写“前端”,不需要用户编写界面可以降低很多成本
当我们使用配置好的参数 + Yak脚本的时候,我们就可以把这两个东西保存到 Yak 核心引擎中,作为一个插件的持久化。
所以只要能拿到插件的持久化 ID,我们就可以获取到插件的全部信息,只要填了相对应的参数,我们就可以做到在 Yak 引擎中执行了。
插件商店介绍和使用
Yakit的插件仓库提供了拓展插件的功能,方便使用者编写自己的自定义插件或从插件商店中选择适合的插件。
插件可以以多种方式支持自定义的行为,例如:特定漏洞检测的POC/EXP,自定义UI,添加自定义扫描程序检查以及访问关键运行时信息等等。
yakit的插件具有以下特点:
yakit插件特点
灵活多变
Yaklang 的 “零依赖”,“嵌入执行”,“自动代码补全”等特点,为Yakit的插件系统提供了优秀的可扩展能力与可实践特性。Yakit的插件系统实质上是将编写的Yak脚本发送到Yak引擎,引擎将会启动一个进程来执行,执行过程的输出将会通过 gRPC 的双向数据流返回。这就意味着,用户可以根据自己的需要在平台编写各种符合自己实际使用场景的插件。
自带UI与绘图API
Yakit提供了一整套插件的使用页面,无需用户思考如何编写“前端”。只需将参数预设好并写好Yak脚本,将参数与脚本保存在引擎中,填写相对应的参数,就可以做到在Yak引擎中执行。Yakit除了有提供配套的插件UI外,也提供了超强的绘图能力,只需要调用 Yakit 的绘图 API仓库,直接执行,即可在插件输出中看到绘制的图表,用户无需消耗精力去制作图表。
插件联动
插件的灵活性也与Yakit本身的功能进行了结合,比如可以在使用MITM劫持、端口扫描的过程中去灵活使用插件,达到漏洞扫描、敏感信息检查等等各种各样的能力。且插件与插件间也可进行联动,只需在编写插件时启用联动UI,则在使用该插件时,也可使用其他的插件,达到多重使用的目的。
插件下载
一键下载
也可以编辑他人插件进行修改
插件编写与使用
插件概述:定义与基础类型
Yakit 插件是与 Yak 语言深度绑定的一套体系。理论上来说,任意一段 Yak 代码均可以被封装成一个 Yakit 模块,分发给用户使用。
插件系统本质插件系统的核心流程一般来说都是 yak 引擎通过 '热加载' 或者 '封装注入依赖' 等手段来执行一段 yak 代码,让代码中的行为与引擎与数据库发生交互。
常见插件类型
yaklang.io 中定义 Yakit 的插件类型目前分为三种
以 Webhook 为通信媒介的原生 Yak 模块,通过核心引擎启动新的 yak 执行进程来控制执行过程;
以 MITM 劫持过程为基础 Hook 点的 Yak 模块,
以 Yaml 为媒介封装 Nuclei PoC 的模块,本质上也是执行一段 Yak 代码,原理与(1)相同,本文将不再赘述。
原理分类:独立模块与嵌入模块
独立模块
独立模块的核心是一段 Yak 脚本,一般来说使用 Webhook 与 Database 为通信媒介,通过控制进程的生命周期来控制执行任务的生命周期。
一般独立模块用于提供相对独立的整体功能。
独立模块启动进程目的防止和引擎核心进程发生不期望的交互导致内存泄露
不期望的崩溃影响到主进程嵌入式模块
嵌入式模块的核心原理是把一段 Yak 代码发送到引擎,加载到内存,在一个特定的主功能执行的过程中,在特定的情况下执行用户 "热加载" 的代码。
MITM 插件就是一个典型的 "热加载" 模块,可以在 "任何新请求到来时执行用户代码 / 新网站被发现时执行用户代码 / 新参数发现时执行代码 ..."。
嵌入式模块与主核心通信直接通过内存进行通信,通信速度相对更快。
注意但是根据我们上面的说法,这种情况可能会有内存泄漏的风险。所以我们需要编写嵌入式模块时进行充分测试,确保可用性。
典型应用分类
Yak 原生模块
我们使用 Yak 原生模块是最容易理解的模块,我们对 "概论" 中的图进行一部分修改,即可得到核心原理。
MITM 原生模块
MITM 是 "热加载" 插件的典型模块,我们使用这个模块的过程中,将会对 MITM 的过程进行插桩,在恰当的点触发恰当的函数。
我们使用一个时序图来向大家展示 MITM 模块的调用 / 执行过程
当我们理解 MITM 插件的运作流程之后,发现他其实是一个非常非常典型的被动扫描器的模型架构。
MITM 平台劫持了用户流量,同时可以把用户流量作为参数,执行用户自定义的流量处理和分析函数。
相关文章:
#渗透测试#红蓝对抗#SRC漏洞挖掘# Yakit插件使用及编写01
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…...
Scala中求斐波那契数列的第n项
求斐波那契数列的第n项 问题:求 斐波那契数列的第n项 记: 0 1 1 2 3 5 8 13 21 34 55 ... 从第3项开始 f(n) f(n-1) f(n-2) 1.基本情况(直接能求的):f(0) 0,f(1) 1 2.递归情况(大事化小,自己…...
ORACLE修改序列值为表内某字段(主键)最大值
ORACLE修改序列值为表内某字段(主键)最大值 想修改序列值,网上基本的都是自己看要加到多少,然后要么调步长,要么删了重建。 想直接用declare使用标量然后调,但是逻辑里面不能有DDL语句。 不过最后解决了 直…...
前端html,vue使用第三方地图详细教程,以百度地图为例,实现地图标注,导航,定位,路线规划,坐标转换
目录 示例: 准备: ?编辑 开始: 1、新建页面,在script标签中引入百度地图的api数据,把自己在控制台创建的应用的ak替换上去 2、创建一个dom对象,设置宽高 3、在js中初始化地图 进阶: 1…...
【入门】加密四位数
描述 某军事单位用 4 位整数来传递信息,传递之前要求先对这个 4 位数进行加密。加密的方式是每一位都先加上 5 然后对 10 取余数,再将得到的新数颠倒过来。 例如:原数是 1379 ,那么每位加 5 对 10 取余数的结果为 6824 …...
[游戏开发] Unity中使用FlatBuffer
什么是FlatBuffer 为什么用FloatBuffer,优势在哪? 下图是常规使用的各种数据存储类型的性能对比。 对序列化数据的访问不需要打包和拆包——它将序列化数据存储在缓存中,这些数据既可以存储在文件中,又可以通过网络原样传输&…...
云计算IaaS-PaaS-SaaS三种服务模式转至元数据结尾
在当今数字化时代,云计算已经成为推动企业创新与发展的核心力量。而云计算的模型主要有三种:IAAS、PAAS 和 SAAS,它们各自在云计算的庞大体系中扮演着独特且关键的角色,恰似一座大厦的不同楼层,共同构建起强大而灵活的…...
【数据结构——查找】二叉排序树(头歌实践教学平台习题)【合集】
目录😋 任务描述 相关知识 测试说明 我的通关代码: 测试结果: 任务描述 本关任务:实现二叉排序树的基本算法。 相关知识 为了完成本关任务,你需要掌握:二叉树的创建、查找和删除算法。具体如下: (1)由…...
代码随想录第43天
300.最长递增子序列 # Dynamic programming. class Solution:def lengthOfLIS(self, nums: List[int]) -> int:if not nums: return 0dp [1] * len(nums)for i in range(len(nums)):for j in range(i):if nums[j] < nums[i]: # 如果要求非严格递增,将此行 …...
LeetCode - #158 用 Read4 读取 N 个字符 II
文章目录 摘要描述题目描述方法定义 题解答案题解代码题解代码分析示例测试及结果示例测试代码示例运行结果 时间复杂度空间复杂度总结关于我们 摘要 本文将详细解读一道与文件读取相关的编程问题:如何使用 read4 实现按需读取 n 个字符的 read 方法。我们不仅会提…...
C++(进阶) 第2章 多态
C(进阶) 第2章 多态 文章目录 前言一、多态的概念二、多态的定义及实现1.虚函数2.虚函数的重写3.多态的条件4.多态的细节 三、析构函数的重写四、重载/重写/隐藏的对比五、抽象类抽象类 六、相关题目题目1题目2 七、const修饰八、多态原理九、虚函数放在地方总结 前…...
mac删除程序坞(Dock)中“无法打开的程序“
参考: Mac删除软件之后图标还在怎么办?https://blog.csdn.net/weixin_46500474/article/details/124284161Mac程序坞中软件删除出现残留“?”图标无法删除解决方法: https://blog.csdn.net/shenwenhao1990/article/details/12865…...
【Linux】vi/vim 使用技巧
文章目录 1. 简介vi和vim的历史vi和vim的区别安装vimUbuntu/DebianCentOS/RHELFedoramacOSWindows 2. 基本操作启动和退出启动退出 模式介绍普通模式插入模式命令模式 光标移动基本移动高级移动 3. 文本编辑插入文本删除文本复制和粘贴撤销和重做 4. 搜索与替换基本搜索搜索文本…...
Python自动化办公(系统维护及开发任务状态自动推送)
Python自动化办公, 1.需求分析 系统维护及开发人员的工作一般都会比较繁杂,领导们喜欢实时掌控项目的进度,但是领导们很多时候是不会自己主动去查看及分析项目进度数据的,干活的牛马们也没空整天日报,周报,月报,季报,年报…活又有了,又该想想怎么干,需求的核心是实现自动整理…...
CentOS7 Apache安装踩坑
Gnome桌面右键弹出终端。 [rootlocalhost ~]# yum repolist 已加载插件:fastestmirror, langpacks /var/run/yum.pid 已被锁定,PID 为 2611 的另一个程序正在运行。 Another app is currently holding the yum lock; waiting for it to exit... [root…...
OpenMMlab导出MaskFormer/Mask2Former模型并用onnxruntime和tensorrt推理
onnxruntime推理 使用mmdeploy导出onnx模型: from mmdeploy.apis import torch2onnx from mmdeploy.backend.sdk.export_info import export2SDK# img ./bus.jpg # work_dir ./work_dir/onnx/maskformer # save_file ./end2end.onnx # deploy_cfg ./configs/m…...
若依微服务中配置 MySQL + DM 多数据源
文章目录 1、导入 MySQL 和达梦(DM)依赖2、在 application-druid.yml 中配置达梦(DM)数据源3、在 DruidConfig 类中配置多数据源信息4、在 Service 层或方法级别切换数据源4.1 在 Service 类上切换到从库数据源4.2 在方法级别切换…...
一些前端组件介绍
wangEditor : 一款开源 Web 富文本编辑器,可用于 jQuery Vue React等 https://www.wangeditor.com/ Handsontable:一款前端可编辑电子表格https://blog.csdn.net/carcarrot/article/details/108492356mitt:Mitt 是一个在 Vue.js 应…...
python学opencv|读取图像(九)用numpy创建黑白相间灰度图
【1】引言 前述学习过程中,掌握了用numpy创建矩阵数据,把所有像素点的BGR取值设置为0,然后创建纯黑灰度图的方法,具体链接为: python学opencv|读取图像(八)用numpy创建纯黑灰度图-CSDN博客 在…...
AtCoder Beginner Contest 383
C - Humidifier 3 Description 一个 h w h \times w hw 的网格,每个格子可能是墙、空地或者城堡。 一个格子是好的,当且仅当从至少一个城堡出发,走不超过 d d d 步能到达。(只能上下左右走,不能穿墙)&…...
20. 内置模块
一、random模块 random 模块用来创建随机数的模块。 random.random() # 随机生成一个大于0且小于1之间的小数 random.randint(a, b) # 随机生成一个大于等于a小于等于b的随机整数 random.uniform(a, b) …...
《知识拓展 · 统一建模语言UML》
📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…...
计算机网络-Wireshark探索ARP
使用工具 Wiresharkarp: To inspect and clear the cache used by the ARP protocol on your computer.curl(MacOS)ifconfig(MacOS or Linux): to inspect the state of your computer’s network interface.route/netstat: To inspect the routes used by your computer.Brows…...
减少30%人工处理时间,AI OCR与表格识别助力医疗化验单快速处理
在医疗行业,化验单作为重要的诊断依据和数据来源,涉及大量的文字和表格信息,传统的手工输入和数据处理方式不仅繁琐,而且容易出错,给医院的运营效率和数据准确性带来较大挑战。随着人工智能技术的快速发展,…...
1.2.3计算机软件
一个完整的计算机系统由硬件和软件组成,用户使用软件,而软件运行在硬件之上,软件进一步的划分为两类:应用软件和系统软件。普通用户通常只会跟应用软件打交道。应用软件是为了解决用户的某种特定的需求而研发出来的。除了每个人都…...
二、uni-forms
避坑指南:uni-forms表单在uni-app中的实践经验-CSDN博客...
Android13开机向导
文章目录 前言需求-场景第三方资料说明需求思路按照平台 思路 从配置上去 feature换个思路,去feature。SimMissingActivity 判断跳过逻辑SetupWizardUtils 判断SIM 、 hasSystemFeature FEATURE_TELEPHONYPackageManager.FEATURE_TELEPHONYApplicationPackageManage…...
软件测试丨Appium 源码分析与定制
在本文中,我们将深入Appium的源码,探索它的底层架构、定制化使用方法和给软件测试带来的优势。我们将详细介绍这些技术如何解决实际问题,并与大家分享一些实用的案例,以帮助读者更好地理解和应用这一技术。 Appium简介 什么是App…...
1.网络知识-IP与子网掩码的关系及计算实例
IP与子网掩码 说实话,之前没有注意过,今天我打开自己的办公地电脑,看到我的网络配置如下: 我看到我的子网掩码是255.255.254.0,我就奇怪了,我经常见到的子网掩码都是255.255.255.0啊?难道公司配…...
Android中Gradle常用配置
前言 本文记录了一些常用的gradle配置,基本上都是平时开发中可能会使用到的,如果有新内容会不定时更新,附官网 1.依赖库版本写法 不推荐写法: dependencies {compile com.example.code.abc:def:2. // 不推荐的写法 }这样写虽然可…...
南城网站建设公司案例/镇江网页设计
table在第一次往HashMap中put元素的时候初始化,如果HashMap初始化的时候没有指定容量,那么初始化table的时候会使用默认的DEFAULT_INITIAL_CAPACITY参数,也就是16,作为table初始化时的长度。 如果HashMap初始化的时候指定了容量&…...
莱芜话题 莱芜在线/长沙seo关键词排名
效果图 带描边的粒子效果 原图 承接上文 特效设...
上海网站建设哪家/管理微信软件
**众所周知IE浏览器不兼容<input type"date">的html5时间插件,**下面介绍一种支持IE浏览器的jquery时间插件, 1.先引入jquery:<link rel"stylesheet" href"common/css/dcalendar.picker.css"/> &l…...
国外设计最漂亮的网站/深圳广告公司
使用 bootstrap 框架制作的创意和现代应用程序登陆页面模板,它是具有创意设计的单页 html 模板,您可以在此模板中展示您的任何应用,Applook 在所有现代浏览器,平板电脑和手机上看起来都很完美,您可以根据需要自定义每个…...
wordpress auto get rss/武汉关键词seo
根据数据调查,2017年建筑业的36次较大事故中,因坍塌伤亡的人员占到了81%,其中大部分原因是工作人员没有按照规定佩戴安全帽。为此不少企业为此煞费苦心,比如在门口贴上佩戴安全帽的标语,做安全知识培训,甚至…...
钢铁网站模板/网站维护费一年多少钱
[PHP] 纯文本查看 复制代码public function excel(){//如果需要动态获取表头就自己查表,方法下面不多举例,毕竟不同效果不同写法,这个需要根据自己需求;以下导出代码,支持DIY表格导出,具体的看自己理解能力…...