一、背景

蜻蜓安全工作台是一个安全工具集成平台,集成市面上主流的安全工具,并按照工作场景进行编排,目前主要预制了四个场景:信息收集、黑盒扫描、POC批量验证、代码审计;
最大特点就是集成的工具多、种类全,你可以将你想要的工具编排成任意一个场景,快速打造属于自己的安全工作台~

在这篇文章中将讲解,如何支持自定义工具;工具中需要用docker镜像方式进行封装,下面说下工具如何封装。

https://github.com/StarCrossPortal/QingTing

我以弱口令检测工具WebCrack为例,讲解如何在蜻蜓安全工作台中提交工具。

二、学习工具使用

2.1 工具下载

从官网或者GitHub将工具下载下来

git clone https://github.com/yzddmr6/WebCrack

返回内容如下

Cloning into 'WebCrack'...
remote: Enumerating objects: 104, done.
remote: Counting objects: 100% (31/31), done.
remote: Compressing objects: 100% (25/25), done.
remote: Total 104 (delta 9), reused 17 (delta 3), pack-reused 73
Receiving objects: 100% (104/104), 138.12 KiB | 867.00 KiB/s, done.
Resolving deltas: 100% (30/30), done.

2.2 安装工具的依赖

 cd WebCrack && pip3 install -r requirements.txt

返回结果

Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: bs4 in /Users/tangqingsong/Library/Python/3.8/lib/python/site-packages (from -r requirements.txt (line 1)) (0.0.1)
Requirement already satisfied: lxml in /Users/tangqingsong/Library/Python/3.8/lib/python/site-packages (from -r requirements.txt (line 2)) (4.8.0)
Requirement already satisfied: requests in /Users/tangqingsong/Library/Python/3.8/lib/python/site-packages (from -r requirements.txt (line 3)) (2.27.1)
Requirement already satisfied: beautifulsoup4 in /Users/tangqingsong/Library/Python/3.8/lib/python/site-packages (from bs4->-r requirements.txt (line 1)) (4.11.1)
Requirement already satisfied: charset-normalizer~=2.0.0 in /Users/tangqingsong/Library/Python/3.8/lib/python/site-packages (from requests->-r requirements.txt (line 3)) (2.0.12)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /Users/tangqingsong/Library/Python/3.8/lib/python/site-packages (from requests->-r requirements.txt (line 3)) (1.26.9)
Requirement already satisfied: certifi>=2017.4.17 in /Users/tangqingsong/Library/Python/3.8/lib/python/site-packages (from requests->-r requirements.txt (line 3)) (2021.10.8)
Requirement already satisfied: idna<4,>=2.5 in /Users/tangqingsong/Library/Python/3.8/lib/python/site-packages (from requests->-r requirements.txt (line 3)) (3.3)
Requirement already satisfied: soupsieve>1.2 in /Users/tangqingsong/Library/Python/3.8/lib/python/site-packages (from beautifulsoup4->bs4->-r requirements.txt (line 1)) (2.3.2.post1)

2.3 学习使用方法

现在学习工具使用方法,为后续接入做准备

➜  WebCrack git:(master) python3 webcrack.py +---------------------------------------------------+
| __          __  _      _____                _     |
| \ \        / / | |    / ____|              | |    |
|  \ \  /\  / /__| |__ | |     _ __ __ _  ___| | __ |
|   \ \/  \/ / _ \ '_ \| |    | '__/ _' |/ __| |/ / |
|    \  /\  /  __/ |_) | |____| | | (_| | (__|   <  |
|     \/  \/ \___|_.__/ \_____|_|  \__,_|\___|_|\_\ |
|                                                   |
|                 code by @yzddmr6                  |
|                  version: 2.2                     |
+---------------------------------------------------+File or Url:

2.4 改造工具

在上没使用的体验中,发现还需要进行交互,这非常不方便,我想执行一条命令就可以让他工作,所以需要改动代码

改动代码之前,需要分析主入口文件,其中有一个变量名url_file_name

    url_file_name = input('File or Url:\n')if '://' in url_file_name:CrackTask().run(1, url_file_name)else:url_list = []if os.path.exists(url_file_name):

我把他的修改成这个从参数中获取即可

    url_file_name = sys.argv[1]

接下来我用permeate搭建一个靶场,然后将登录地址放进去

python3 webcrack.py http://*.*.*/home/index.php?m=user&a=login

返回结果如下,可以看到接收参数成功了,并且已经运行成功。

➜  WebCrack git:(master) ✗ python3 webcrack.py http://xx.xx.xx/home/index.php\?m\=user\&a\=login
2022-05-09 19:36:53  id: 1 [*] Start: http://xx.xx.xx/home/index.php?m=user&a=login
2022-05-09 19:36:53  id: 1 [*] http://xx.xx.xx/home/index.php?m=user&a=login 进度: (1/27) checking: admin admin
.....中间过程删减....
2022-05-09 19:36:53  id: 1 [*] http://xx.xx.xx/home/index.php?m=user&a=login 进度: (2/27) checking: admin 123456
2022-05-09 19:36:56  id: 1 [*] http://xx.xx.xx/home/index.php?m=user&a=login 启动万能密码爆破模块
2022-05-09 19:36:56  id: 1 [*] http://xx.xx.xx/home/index.php?m=user&a=login 进度: (1/25) checking: admin' or 'a'='a admin' or 'a'='a
2022-05-09 19:36:56  id: 1 [*] Rechecking... http://xx.xx.xx/home/index.php?m=user&a=login admin' or 'a'='a admin' or 'a'='a
2022-05-09 19:36:56  id: 1 [+] Success: http://xx.xx.xx/home/index.php?m=user&a=login  admin' or 'a'='a/admin' or 'a'='a
➜  WebCrack git:(master) ✗ 

从反馈的结果来看,工具使用了万能密码暴力破解成功了。

三、学习镜像制作方法

现在我们已经知道工具如何接入,只需要让程序执行他就行了,所以我们需要学习蜻蜓安全工作台插件的一些基本规则,学习规则很简单。

我们只需要将蜻蜓已经写好的插件下载下来,看看之前的插件怎么写的就可以了。

3.1 案例分析

如下图是蜻蜓安全工作台已经编写好的插件,

我们随意挑选一个案例,以长亭的xray工具接入为例,

可以看到工具一共有三个目录:codetoolsDockerfile

我们先分析一下 dockerfile 文件

FROM daxia/qingting:baseCOPY ./code /root/code
COPY ./tools /data/toolsCMD ["php","/root/code/index.php"]

从Dockerfile文件中可以看到其实镜像制作,只需要把两个目录复制到镜像就可以了,然后让他启动执行一个主入口文件;

我们接下来再继续看主入口文件所在的code目录,打开文件查看,index.php 内容如下

从这个图中可以看到,插件的流程其实是读取要扫描的目标,然后将目标丢给工具去扫描,然后将扫描的结果存储到数据库

四、制作工具镜像

现在我们开始尝试自己写插件,首先将xray的整个文件夹复制一份,新的文件夹名字叫做webcrack,然后把tools里面的内容删除

接着将最开始下载的webcrack代码复制过来,如下图所示

接下来我们再分析index.php的具体逻辑,这里剧透一下,我们只看index.php就行,其他地方不用看了,用之前的配置就行了。

然后我们开始替换文件内容,直接将文件内容的xray改成webcrack,如下图所示

再剧透一个地方,我们只需要改这两个函数就行了。

4.1 调用工具

首先我们需要关注执行工具的函数,这里面我们只需要关注CMD 这个命令

把这个命令改成webcrack的调用命令就行了

4.2 录入数据

然后再看下一个导入数据的函数writeData

在这个方法里可以看到只做了三件事,首先读取工具的结果,然后将结果的JSON字符串转换为数组,之后插入数据库即可。


作者:汤青松
微信:songboy8888
日期:2022年05月09日

蜻蜓安全编写插件模块 webcrack 实践相关推荐

  1. 多多客DOODOOKE更新插件模块及下载附件教程

    如何进入插件市场? 1.打开链接:https://www.xxx.com/admin/pub... 2.登录超管后台,点击头部"插件"进入 如何更新插件&模块? 1.点击右 ...

  2. 如何编写Python模块/包?

    本文翻译自:How to write a Python module/package? I've been making Python scripts for simple tasks at work ...

  3. [转]使用 C 编写 Lua 模块

    Lua 作为一种小巧的语言,一般都是嵌入到 C/C++ 中作为扩展语言,但是也可以作为独立的脚本语言使用,并且可以使用 C/C++ 编写扩展模块.在参考资料 [1] 中有怎样用 C/C++ 编写模块的 ...

  4. [Modules]PrestaShop插件 模块 – 产品推荐模块 随机展示推荐产品

    2019独角兽企业重金招聘Python工程师标准>>> 产品推荐模块 产品推荐模块可以推荐你指定的产品进行随机显示 1.增加产品内链 2.可以增加产品展示机会,让外贸订单增加! 3. ...

  5. 为CodeLove编写插件——常用软件扫描(SoftwareToScan)

    如果你还不知道CodeLove,点击[一起来编程吧,CodeLove初版发布]. 那么如何编写插件呢?下面就简单介绍如果编写SoftwareToScan插件.该插件我们可以在设置窗口看到: 那么如何编 ...

  6. jQuery编写插件

    引言: 在项目中不同页面经常要用到已经写好的交互,比如弹窗,比如下拉菜单,比如选项卡,比如删除... 此时如果每次都把代码copy一份无疑是一件比较麻烦并且无趣的事情,而且个人认为有些low了,我们可 ...

  7. vscode编写插件详细过程

    vscode编写插件详细过程 前言 之前编写了一个vscode插件用vscode写博客和发布,然后有园友要求写一篇来介绍如何开发一个vscode扩展插件,或者说介绍开发这个插件的过程.然而文章还没有写 ...

  8. confluence添加用户_玩转Confluence插件开发插件模块配置文件介绍(04)

    上一章节我们介绍了测试模块的配置文件,这一章节我们介绍插件本身的配置文件,这个是我们部署插件真正用到的. 文件的位置位于项目主目录中的/src/main/resources目录中. 插件配置文件介绍 ...

  9. 【原】jQuery编写插件

    分享一下编写设置和获取颜色的插件,首先我将插件的名字命名为jquery.color.js.该插件用来实现以下两个功能1.设置元素的颜色.2.获取元素的颜色. 先在搭建好如下编写插件的框架: ;(fun ...

  10. 为QT的Webkit 编写插件

    为了允许的QWebView加载插件,必须使能QWebView的Javascript和Plugins属性,使能方法为: QWebSettings::globalSettings()->setAtt ...

最新文章

  1. mysql必知必会看完看什么_《MySQL必知必会》读书笔记
  2. 【pmcaff】纪录片:互联网时代(互联网人必读大片)
  3. 食品新消费的2021:站在逻辑跑通与成为品牌的隧道期
  4. include/caffe/common.cuh(9): error: function atomicAdd(double *, double) has already been defined
  5. git 基础 tag 打标签
  6. android listview 连续调用 getview问题分析及解决。
  7. Python进阶(九)常用高级函数Counter、defaultdict、nametuple、map、reduce、filter、groupby
  8. python比较两个文件内容是否一样_python判断两个json文件是否相等
  9. 今天,是我的新生吗?
  10. 软件外包,IT咨询和转型
  11. Android11.0系统去掉桌面谷歌搜索栏
  12. SQL经典50查询语句案例_3(查询所有同学的学号、姓名、选课数、总成绩)
  13. micro hdmi引脚定义义_臻实力芯定义:京东AMD笔记本电脑双11开门红
  14. 只有10分,5分,2分,1分的硬币;顾客付款x分,商品价格y分。如何找零所使用的硬币最少(递归实现)
  15. android layout.inflater,LayoutInflater.inflate详解
  16. 基于Excel模板导出——ExcelTemplate
  17. 通过命令行清理360安全卫士批处理
  18. java session logout_Spring Session Logout
  19. 【OBS】circlebuf
  20. 中移动定下备战3G目标 暗藏牌照发放玄机

热门文章

  1. 数字图像处理 离散余弦变换(DCT)和峰值信噪比(PSNR)
  2. 串口转WiFi透传模块UART转WiFi模块嵌入式WiFi参数一键配置原理
  3. uft怎么做app自动化测试_UFT自动化测试实施-VBS编程简要教程
  4. numpy简单快速安装教程
  5. VIVADO 下载mcs 文件
  6. Python怎么安装PHP,php中ThinkPHP的下载和安装
  7. 关于计算机听课如何做笔记,学霸听课怎么记笔记?5个笔记秘诀,帮你提高听课效率,完成逆袭...
  8. 通信原理及系统系列7—— 什么是码间串扰
  9. alpha shapes提取平面点云边界点
  10. python常用代码大全,常用库大全