freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

给安全平台编写插件模块的思路分享
我是daxia 2022-05-10 10:39:56 244533
所属地 北京

一、背景

最近在GitHub看到一个新的开源安全工具,可以把工具都集成到一个平台里,觉得挺有意思,但是平台现有的工具不是太全,我想把自己的工具也集成进去,所以研究了一番

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

COPY ./code /root/code
COPY ./tools /data/tools

CMD ["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字符串转换为数组,之后插入数据库即可。


作者:汤青松

日期:2022年05月09日

# web安全 # Kali Linux # XRay # kali linux # QingScan
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 我是daxia 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
我是daxia LV.4
这家伙太懒了,还未填写个人描述!
  • 10 文章数
  • 8 关注者
开源 Swallow 代码审计系统体验
2023-03-28
我的开源项目Dolphin-ASM网络资产风险监测系统
2023-03-09
GitLab结合fortify实现自动化代码审计实践
2022-12-08
文章目录