Skip to content

Commit

Permalink
Merge pull request #85 from yaklang/vanilla/add-2023-12-12
Browse files Browse the repository at this point in the history
Vanilla/add 2023 12 12
  • Loading branch information
Go0p authored Dec 12, 2023
2 parents caf47d8 + e4032d6 commit de3f18f
Show file tree
Hide file tree
Showing 34 changed files with 1,961 additions and 94 deletions.
94 changes: 0 additions & 94 deletions products/Plugin-repository.md

This file was deleted.

144 changes: 144 additions & 0 deletions products/Plugin-repository/Plugin-repository.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
---
sidebar_position: 2
---
# 插件商店介绍和使用

Yakit的插件仓库提供了拓展插件的功能,方便使用者编写自己的自定义插件或从插件商店中选择适合的插件。

插件可以以多种方式支持自定义的行为,例如:特定漏洞检测的POC/EXP,自定义UI,添加自定义扫描程序检查以及访问关键运行时信息等等。

yakit的插件具有以下特点:

:::tipyakit插件特点

* 灵活多变

Yaklang 的 “零依赖”,“嵌入执行”,“自动代码补全”等特点,为Yakit的插件系统提供了优秀的可扩展能力与可实践特性。Yakit的插件系统实质上是将编写的Yak脚本发送到Yak引擎,引擎将会启动一个进程来执行,执行过程的输出将会通过 gRPC 的双向数据流返回。这就意味着,用户可以根据自己的需要在平台编写各种符合自己实际使用场景的插件。

* 自带UI与绘图API

Yakit提供了一整套插件的使用页面,无需用户思考如何编写“前端”。只需将参数预设好并写好Yak脚本,将参数与脚本保存在引擎中,填写相对应的参数,就可以做到在Yak引擎中执行。Yakit除了有提供配套的插件UI外,也提供了超强的绘图能力,只需要调用 Yakit 的绘图 API仓库,直接执行,即可在插件输出中看到绘制的图表,用户无需消耗精力去制作图表。

* 插件联动

插件的灵活性也与Yakit本身的功能进行了结合,比如可以在使用MITM劫持、端口扫描的过程中去灵活使用插件,达到漏洞扫描、敏感信息检查等等各种各样的能力。且插件与插件间也可进行联动,只需在编写插件时启用联动UI,则在使用该插件时,也可使用其他的插件,达到多重使用的目的。
:::
### 插件下载

插件商店包含线上的官方插件和社区用户上传的,经过官方审核合格的插件,想要使用插件需要下载到本地。插件类型广泛,包括漏洞检测、空间引擎、加解密工具、目录爆破、密码破解等等。

![](/img/products/yakit/Plugin-repository-1.jpg)

1. `一键下载` :可将插件商店所有的插件一键下载到本地
2. `勾选`:可勾选想要的插件后点击下载进行使用
3. `点赞`:登录后可对喜欢的插件“点赞”
4. `下载`:点击可下载单个插件
5. `小课堂`:点击会自动打开浏览器跳转到B站,查看牛牛精心录制的视频课程
6. `实时资讯`:点击关注牛牛公众号,每周都会发布技术文章
7. `官方文档`:点击会自动打开浏览器跳转到官网,查看YAK语言和Yakit教程
8. `搜索`:可通过关键字和作者对插件进行搜索

### 插件导入

![](/img/products/yakit/Plugin-repository-2.jpg)

1. `导入资源`:点击导入资源-导入插件,即可导入外部或本地插件
2. `第三方仓库源`:支持从线上下载Nuclei插件
3. `本地仓库`:支持将导出的Yakit插件进行导入,方便无网环境进行使用
4. `本地Yaml-poc`:支持导入本地的Nuclei插件
5. `使用ID`:通过他人分享的插件ID导入插件

### 插件创建

`插件商店``我的插件``本地插件`等位置,点击`新建插件`,即可新建插件

![](/img/products/yakit/Plugin-repository-4.jpg)

新建插件时,填写插件类型、基础信息、插件配置即可

![](/img/products/yakit/Plugin-repository-5.jpg)

1. `保存`:填写完成以后点击保存,即可将插件保存在本地使用
2. `同步至云端`:将插件同步到云端,为方便管理,需登录账号以后上传插件,可选择私密或公开,公开插件需要审核后方能在插件商店中可见。
3. `调试插件`:调试前会将插件保存在本地再进行调试

### 插件上传

为了方便管理,插件需登录账号以后才能进行上传。

右上角点击头像进行登录

![](/img/products/yakit/Plugin-repository-3.png)

点击`同步到云端`可以将插件进行上传:

1. `私密`:上传为私密插件只有自己能看见,所以无需经过自动检测与审核。私密插件也可以分享
2. `公开`:公开插件需展示在插件商店中,为保证无害和可用性,需先进行自动检测,通过自动检测后才会上传;上传成功审核通过,才会在插件商店中可见。

![](/img/products/yakit/Plugin-repository-6.jpg)

上传也可以在列表点击上传icon进行上传,同时上传支持批量上传插件,勾选插件以后,点击右上角的上传即可上传,但目前只支持上传未上传到云端的插件进行批量上传,且不支持全选上传。

### 编辑插件

在本地插件列表页点击编辑,或在执行页点击编辑进行插件编辑

![](/img/products/yakit/Plugin-repository-7.jpg)

![](/img/products/yakit/Plugin-repository-8.jpg)

修改完成以后点击提交即可,下图为修改自己的插件

![](/img/products/yakit/Plugin-repository-9.jpg)

下图为修改他人的插件

![](/img/products/yakit/Plugin-repository-10.jpg)

1. 提交
* 修改自己的插件点击提交,如果是私密插件则会直接更新线上插件;如果是公开插件则需要通过检测和审核才会更新插件商店的插件,但是在“我的插件”中可以进行查看和下载
* 修改他人的插件点击提交,需要作者在日志中合并,并通过审核以后才会更新插件商店的插件
2. 复制到云端:如修改他人的插件不想经过作者合并再合并到云端,可以选择复制一份上传,但复制的插件只能为私密插件,不能改为公开。

### 插件日志
他人提交的修改,需作者在日志中审核,同意则会合并代码,不同意则不会。管理员提交的修改无需审核即可更新插件,但作者可以在日志中查看修改记录。

![](/img/products/yakit/Plugin-repository-11.jpg)

点击“详情”查看修改内容,并进行操作

![](/img/products/yakit/Plugin-repository-12.jpg)
### 分享插件

在我的插件-分享,将复制后的插件ID分享给朋友,进入Yakit点击导入即可通过ID导入插件。方便用户将自己未在插件商店中展示的插件分享给朋友使用。

![](/img/products/yakit/Plugin-repository-13.jpg)

### 其他小功能介绍

#### 修改插件公开/私密状态

改为公开/私密:可以在我的插件中将自己的插件状态进行切换

![](/img/products/yakit/Plugin-repository-14.jpg)

#### 回收站

删除的插件会默认放到回收站

1. 删除:在回收站删除则是彻底删除
2. 还原:删除的插件可以还原,避免出现误删的情况

![](/img/products/yakit/Plugin-repository-15.jpg)

#### 添加到菜单栏

为了使Yakit的使用更加贴近我们日常的工作,可以将使用较为频繁的插件添加到菜单栏当中来方便我们的使用。

点击插件进入插件详情中,点后点击设置-添加到菜单栏,输入菜单分组名,插件展示名称,便可添加到菜单栏。

![](/img/products/yakit/Plugin-repository-16.jpg)

![](/img/products/yakit/Plugin-repository-17.jpg)


4 changes: 4 additions & 0 deletions products/Plugin-repository/_category_.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"label": "插件使用及编写",
"position": 21
}
4 changes: 4 additions & 0 deletions products/Plugin-repository/best-practice/_category_.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"label": "Yakit 编程实践及案例",
"position": 10
}
94 changes: 94 additions & 0 deletions products/Plugin-repository/best-practice/become-developer.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
---
sidebar_position: 20
---

# 生态贡献指南

yaklang.io 的生态并不是完全封闭的,我们非常鼓励个人或者技术团队把自己的知识 / 经验沉淀下来形成可规模化,随时可执行的插件或者模块;同时我们也非常欢迎商业团队或商务团队赞助与支持项目发展。

## 我们在做什么

当然,作为普通用户来说,Yakit 本身提供了一些简单有效的功能:

1. 类 Burp 的劫持手动发包的操作流
1. 基础安全工具的 GUI。

与此同时,整体平台的细节功能也在随时扩充。最贴近大家实际工作和生活中的是 Yakit 插件,插件目前至少包含

1. 原生插件:最适合针对特定目标进行安全检查等
2. MITM 插件:可视化的被动扫描插件
3. PACKET 插件:针对 HTTP History 和数据包的检查/扫描插件
4. CODEC 插件:特定字符串变换插件
5. ...

众所周知,不同类型的插件,他的入口和用途都不一样,效果也不一样。Yakit 提供了插件的编写,导入导出测试,使用的一站化平台。

对于大多数需求来说,Yakit 提供的插件模式足以完成绝大部分网络安全测试为目的常规工作。同时,插件数量和种类的增加,可以完成的细节操作也会越来越多,直到达到终极目标,"常见所有网络安全的操作和能力模块都可以在 Yakit 中找到解决方案"。

## 参与项目的好处

### 对技术主导的个人 / 团队

#### 沉淀

帮助用户技术沉淀,用户可以很容易根据各种插件案例,编写特定情况使用的插件,把自己的安全经验沉淀成特定插件,并且不需要用户编写复杂的 GUI 布局或者操作交互方案。

#### 分享

个人技术 / 团队技术沉淀出的内容,可以作为用户的成果宣传与展示,用户当然也可以选择性的把脚本公开到自己的 Git 仓库中,供互联网用户来使用和学习。

:::danger 私密分享

Yakit 公开的版本不支持带密码的私有代码仓库

:::

### 教育与培训为主导的团队

1. 全系功能和产品免费,无需承担破解风险
1. 从工具使用到进阶插件编写均提供解决方案
1. 安装和使用均有图形化操作,方便教学演示

### 商业安全产品团队

适配基于 Yak/Yakit 插件的安全产品将自动打通自己产品与 yaklang.io 和 nuclei 等生态的通道,省掉构建基础平台与一些常见安全模块的成本。

:::success Yak 引擎 gRPC 服务器

Yakit 核心功能基于 Yak 引擎的 gRPC 接口,二次开发与接口用例学习均可参考 Yakit 源码。

:::

:::caution (专业)定制研发需求

1. 构建私有仓库的插件源
1. 大规模 / 分布式的 Yak 引擎调度系统(RabbitMQ AMQP 协议支持)
1. 引擎商用授权,引擎特定功能定制或特定领域需求集成

商业授权,与二次开发技术支持联系 yaklang.io 团队

> 甲方企业安全建设无需商业授权。
:::

## "我" 应该如何参与这个项目?

对于技术团队或个人来说,不同技术技能与技术阶段可以做的事情不一样,但是都需要用户有一定的 **网络安全知识**

### 常见安全工具用户

> 如果你熟悉 Burpsuite,了解 xray 这类工具
尝试使用 Yakit MITM 平台的劫持功能与 "被动扫描" 功能,了解这些功能的原理,编写自己的 "MITM 插件"

### 有自己的想法

> 如果想编写一个 PoC
在参考官网一些编程案例之后,可以编写出完成特定功能,实现漏洞检测,或者辅助检测的插件,分享这些插件,或者保存这些插件,方便之后学习或者改进,使用。

当然,如果你觉得 yaklang 缺乏了某些功能,导致无法实现插件的一些功能,可以联系 yaklang.io 团队,或在 yakit issue 中提出你的问题。

### 开源贡献:维护自己的插件源

[维护自己的插件源](/products/article/best-practice/u-own-yak-source)
34 changes: 34 additions & 0 deletions products/Plugin-repository/best-practice/intro.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
sidebar_position: 1
---

# Yakit 插件编程概述

在本栏目中,我们将会用一些非常典型的漏洞检测案例,为大家介绍如何编写一个真正的可用的 Yakit 插件。

并总结 Yakit 插件编程中的各种小细节与小技巧,把一些经验固定下来,形成编程模版。

:::success

本栏目的最终目的是希望用户在不用非常精通 Yak 编程的情况下,也可以复制粘贴修改数据包和检测规则,实现自己动手完成插件,从而实现入门;

当用户已经可以自主完成一些简单操作编写自己的插件之后,就可以通过学习 yaklang 官方文档中的手册,通过其他的接口 API 实现功能更强大的插件了。

:::

## 范式:发包—检测—输出

最基础的案例就是我们经常需要做的操作:

1. 构造一个数据包
1. 发送数据包
1. 检测结果是否存在问题
1. 输出结果

针对这种情况,yaklang 提供了很多种编程方法来实现上述内容:

一个典型案例我们可以观察 [thinkphp poc 编写实战案例](/products/article/best-practice/thinkphp-case) 中的方法

当然,很多时候我们将会遇到更加复杂的案例,构造数据包需要各种编码,需要批量构造多个数据包等问题。我们也为大家准备了更加复杂的实战案例:

[shiro poc 漏洞检测「**无利用**](/products/article/best-practice/shiro-case)
Loading

0 comments on commit de3f18f

Please sign in to comment.