1. Antecedentes
Dragonfly Security Workbench es una plataforma de integración de herramientas de seguridad que integra las principales herramientas de seguridad del mercado y las organiza según escenarios de trabajo. Actualmente, hay cuatro escenarios prefabricados: recopilación de información, escaneo de cajas negras, verificación por lotes de POC y auditoría de código; las características más
importantes Es decir, hay muchas herramientas integradas y de todo tipo. Puedes organizar las herramientas que quieras en cualquier escena y crear rápidamente tu propio banco de trabajo seguro ~
En este artículo, explicaremos cómo admitir herramientas personalizadas; las herramientas deben empaquetarse en forma de duplicación de Docker y a continuación se describe cómo empaquetar las herramientas.
https://github.com/StarCrossPortal/QingTing
Tomaré la herramienta de detección de contraseñas débiles WebCrack como ejemplo para explicar cómo enviar la herramienta en Dragonfly Security Workbench.
2. Uso de herramientas de aprendizaje
2.1 Descarga de herramientas
Descargue la herramienta desde el sitio web oficial o GitHub
git clone https://github.com/yzddmr6/WebCrack
El contenido devuelto es el siguiente.
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 Dependencia de las herramientas de instalación
cd WebCrack && pip3 install -r requirements.txt
resultado de retorno
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 Aprenda a utilizar
Ahora aprenda a utilizar la herramienta y prepárese para el acceso posterior.
➜ WebCrack git:(master) python3 webcrack.py
+---------------------------------------------------+
| __ __ _ _____ _ |
| \ \ / / | | / ____| | | |
| \ \ /\ / /__| |__ | | _ __ __ _ ___| | __ |
| \ \/ \/ / _ \ '_ \| | | '__/ _' |/ __| |/ / |
| \ /\ / __/ |_) | |____| | | (_| | (__| < |
| \/ \/ \___|_.__/ \_____|_| \__,_|\___|_|\_\ |
| |
| code by @yzddmr6 |
| version: 2.2 |
+---------------------------------------------------+
File or Url:
2.4 Herramientas de modificación
En la experiencia que no usé, descubrí que todavía necesito interactuar, lo cual es muy inconveniente. Quiero ejecutar un comando para que funcione, así que necesito cambiar el código.
Antes de cambiar el código, debe analizar el archivo de entrada principal, que tiene un nombre de variable.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):
Modifiqué el suyo para obtener esto de los parámetros.
url_file_name = sys.argv[1]
A continuación, uso permeate para construir un campo de tiro y luego pongo la dirección de inicio de sesión en él.
python3 webcrack.py http://*.*.*/home/index.php?m=user&a=login
Los resultados devueltos son los siguientes, puede ver que los parámetros recibidos fueron exitosos y la operación fue exitosa.
➜ 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) ✗
A juzgar por los resultados de los comentarios, la herramienta utilizó la contraseña universal para descifrar con éxito la fuerza bruta.
3. Aprende a hacer imágenes en espejo.
Ahora que sabemos cómo acceder a la herramienta, solo necesitamos dejar que el programa la ejecute, por lo que necesitamos aprender algunas reglas básicas del complemento Dragonfly Security Workbench, y las reglas de aprendizaje son muy simples.
Solo necesitamos descargar el complemento que Dragonfly ha escrito y ver cómo se escribió el complemento anterior.
3.1 Estudio de caso
La siguiente figura muestra el complemento escrito por Dragonfly Security Workbench.
Elegimos un caso al azar, tomando xray
como ejemplo el acceso a la herramienta de Changting,
Puedes ver que la herramienta tiene tres directorios: code
, tools
,Dockerfile
Analicemos primero el archivo dockerfile
FROM daxia/qingting:base
COPY ./code /root/code
COPY ./tools /data/tools
CMD ["php","/root/code/index.php"]
Desde el archivo Dockerfile, podemos ver que, de hecho, se crea la imagen reflejada, simplemente copie los dos directorios a la imagen reflejada y luego déjelo iniciar y ejecutar un archivo de entrada principal;
Continúemos mirando code
el directorio donde se encuentra el archivo de entrada principal, abra el archivo para verlo, index.php
el contenido es el siguiente
Como se puede ver en esta figura, el proceso del complemento es en realidad leer el objetivo a escanear, luego enviar el objetivo a la herramienta para escanear y luego almacenar el resultado escaneado en la base de datos.
4. Crear imagen de herramienta
Ahora comenzamos a intentar escribir el complemento nosotros mismos. Primero, copiamos toda la carpeta de Xray. El nombre de la nueva carpeta se llama webcrack
, y luego eliminamos el contenido en herramientas.
Luego copie el código webcrack descargado al principio, como se muestra en la siguiente figura
A continuación, analicemos index.php
la lógica específica. Aquí hay un spoiler. Solo necesitamos mirar index.php, no necesitamos mirar en otros lugares, solo use la configuración anterior.
Luego comenzamos a reemplazar el contenido del archivo y cambiamos directamente la radiografía del contenido del archivo a webcrack, como se muestra en la siguiente figura.
Un spoiler más, sólo nos falta cambiar estas dos funciones.
4.1 Herramienta de llamada
En primer lugar, debemos prestar atención a la función de la herramienta de ejecución, aquí solo debemos prestar atención al comando CMD.
Simplemente cambie este comando al comando de llamada de webcrack
4.2 Introducir datos
Luego mira la siguiente función para importar datos.writeData
En este método, puede ver que solo se hacen tres cosas: primero leer el resultado de la herramienta, luego convertir la cadena JSON resultante en una matriz y luego insertarla en la base de datos.
Autor: Tang Qingsong
WeChat:
songboy8888 Fecha : 09 de mayo de 2022