学习SOAR | w5进阶学习

2025-03-13 9 0

引文

如果说初步接触W5是对基础功能的简要学习,那么本部分则侧重于深入探讨在企业实际应用中需重点关注的功能。

1.应用编写

1.1.应用架构介绍

w5的app目录位于:/w5-main/apps/"appname"。这里以base64为例,看一下它的结构。

base64/                          #应用目录
├── app.json										 #APP	配置文件
├── icon.png                     #APP	图标
├── main												 #APP	代码目录
│   ├── __init__.py							 #根据需要添加即可,不必要
│   └── run.py									 #APP	入口文件
└── readme.md                    #APP	说明文件

1.2.app.json

1.2.1.功能介绍

app.json作为应用的配置文件,配置了应用的功能。包括:

  • 动作

  • 参数

1.2.2.编写介绍

{
  "identification": "w5soar",               // w5soar 签名,无需更改,必须存在
  "is_public": true,                        // 是否为公开 APP,设置 false 为私有 APP
  "name": "Hello World",                     // APP 名称
  "version": "0.1",                         // APP 版本
  "description": "W5 SOAR - Hello World",    // APP 描述
  "type": "基本应用",                        // APP 分类
  "action": [                               // APP 动作列表
    {
      "name": "HelloWorld",                  // APP 动作名称
      "func": "hello_world"                  // 动作对应的函数名
    }
  ],
  "args": {                                 // 动作参数
    "hello_world": [                         // 动作对应的函数名
      {
        "key": "name",                      // 动作参数名
        "type": "text",                     // 动作参数类型
        "required": true                    // 是否是必填项
      }
    ]
  }
}

1.3.icon.png

1.3.1.功能介绍

用户能够自定义应用程序的图像。以下提供了具体的示例以供参考。

1.4.readme.md

1.4.1.功能介绍

readme为应用APP的说明文档,用于描述APP应用的功能,用户点击查看文档,弹出的就是改应用对应的readme.md文件。建议说明文档有如下几点:

  • APP说明:介绍应用功能

  • 动作列表:每个动作需要包含:动作名、参数信息、返回值。

1.4.2.编写介绍

## APP 说明

> W5 SOAR Hello World

## 动作列表

### HellWorld

**参数:**

|  参数   | 类型  |  必填   |  备注  |
|  ----  | ----  |  ----  |  ----  |
| **name**  | string | `是` | 名字 |

**返回值:**

Hello,{{name}} !"

1.5.run.py

1.5.1.功能介绍

run.py 作为应用程序的核心组件,允许用户通过自定义函数,并结合 w5 框架内置的日志记录响应格式功能,实现并展示在 w5 剧本上的各种应用功能。

1.5.2.编写介绍

run.py的日常代码demo如下

#!/usr/bin/env python
# encoding:utf-8
# cython:language_
from loguru import logger

async def hello_world(name):
    try:
        import nmap
    except:
        logger.info("[Hello World] 导入 nmap 模块失败, 请输入命令 pip install nmap")
        return {"status":2,"result":"导入 nmap 失败"}

    logger.info("[Hello World] 该 APP 执行参数为: {name}", name=name)
    return {"status":0,"result":"Hello," + name}

其中有几个部分需要着重注意:

  1. logger日志记录

w5利用logger作为日志记录,用户通过配置日志,可以输出所需信息,方便后续问题排查。

from loguru import logger

logger.info("[Hello World] 该 APP 执行参数为: {name}", name=name)

  1. 函数定义

函数定义时,建议使用async开启异步,提升性能

  1. 返回数据

应用执行结果,使用result进行传递,常见格式如下:

return {"status": 0, "result": "Hello," + name}

  1. try except

作者建议在编写脚本函数时,建议使用try except保证稳定性。

  1. 头部注释信息

头部注释信息建议不要修改,默认即可。

  1. 状态码

在return的结果时,可以看到status字段的值是int,该值为状态码。

状态码 说明
0 正常
1 警告
2 异常
3 威胁

1.6.编写demo

写一个app用于把字符串转成json

1.run.py

#!/usr/bin/env python
# encoding:utf-8
# cython:language_
from loguru import logger
import json

async def json2str(js):
    try:
        json_obj = json.loads(js)
        jsona = json_obj['a']
        logger.info("[json2str] 该 APP 执行参数为: {js}", js=js)
        return {"status":0,"result":str(jsona)}
    except json.JSONDecodeError as e:
        logger.info("错误: 无法解析该字符串为 JSON", e)
        return {"status":2,"result":"提供字符串有误"}


2.readme.md

## APP 说明

> W5 SOAR str2json

## 动作列表

### string_to_json

**参数:**

|  参数   | 类型  |  必填   |  备注  |
|  ----  | ----  |  ----  |  ----  |
| **js**  | string | `是` | 输入字符串 |

**返回值:**

json格式后的结果

3.icon.png

随意即可。

4.app.json

需要注意json格式不能出错,不然上传应用后会报错500错误。

{
    "identification": "w5soar",
    "is_public": true,
    "name": "json2str",
    "version": "0.1",
    "description": "json2str",
    "type": "其它",
    "action": [
      {
        "name": "字符串转json,并输出a的值",
        "func": "json2str"
      }
    ],
    "args": {
      "json2str": [
        {
          "key": "js",
          "type": "text",               
          "required": true  
        }
      ]
    }
  }

5.打包所有文件成zip压缩包,文件结构如下。

6.应用中心--》本地上传即可完成

7.查看插件文档

8.创建剧本调用json2str。

2.剧本自动化调用

在掌握了应用APP开发剧本编写技巧之后,如何有效地调用这些剧本来实现自动化办公成为了关键所在。以下将介绍两种在日常工作中广泛采用的方法。

2.1.计划任务

2.1.1.实际意义

**作用:**减少人工操作,提高效率,确保任务准时执行。

场景:

  1. 人员入职账号自动激活

  2. 定时发送通告等

2.1.2.使用说明

1.编写剧本,在原有剧本基础上添加一个定时器

2.邮件定时器,编辑计划任务后保存剧本,定时器设定种类包含:

  • 定时执行:到点执行

  • 间隔执行:定时执行

  • 执行计划:cron表达式

3.进入任务调度功能,点击圆圈即可启动计划任务。

4.查看日志即可看到剧本已执行

2.2.webhook

2.2.1.实际意义

**作用:**对接机器人/workflow流,方便剧本自动化处置。

场景:

  1. 工单自动封禁IP

  2. 机器人剔除用户下线等

2.2.2.使用说明

1.编写剧本,在数据输入的地方添加一个webhook,并且利用其余剧本接受webhook参入数据后保存剧本。

2.在系统设置获取API KEY

3.构造webhook请求,并且请求即可。

curl "http://localhost:8888/api/v1/w5/webhook"-H "Content-Type: application/json" -d '{"key": "2814C7C44A179D7DC9423896516BBFC1","uuid": "0d38eb70-e5ff-11ef-9a7d-0f8c52c79e1e","data": "3"}' -X POST

4.查询日志,即可看到成功接受参数


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

SyntaxFlow Java实战(一):值的搜索与筛选
安全入门神器!基于 Gophish 的钓鱼渗透测试平台,让你轻松掌握网络安全
D-link: 轻量级正反向文件同步后渗透持久化控制
CISA警告:苹果WebKit越界写入漏洞已被野外利用
AI会取代渗透测试工程师吗?
学习SOAR从W5开始

发布评论