一、背景
蜻蜓安全工作臺是一個安全工具整合平臺,整合市面上主流的安全工具,並按照工作場景進行編排,目前主要預製了四個場景:資訊收集、黑盒掃描、POC批量驗證、程式碼審計;
最大特點就是整合的工具多、種類全,你可以將你想要的工具編排成任意一個場景,快速打造屬於自己的安全工作臺~
在這篇文章中將講解,如何支援自定義工具;工具中需要用docker映象方式進行封裝,下面說下工具如何封裝。
我以弱口令檢測工具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
工具接入為例,
可以看到工具一共有三個目錄:code
、tools
、Dockerfile
我們先分析一下 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字串轉換為陣列,之後插入資料庫即可。
作者:湯青松
微信:songboy8888
日期:2022年05月09日