Tutoriales

Una utilidad para el escaneo extenso de Internet con Nuclei

pool nuclear para apalancamiento núcleo Con increíble velocidad, flexibilidad y Realice un escaneo amplio de Internet por mucho menos que una taza de café.

usa AWSLambda Como backend para invocar escaneos de Nuclei en paralelo, elija almacenar los resultados de json en s3 para realizar consultas Atenea de AWSy fácilmente una de las formas más económicas de realizar escaneos en la nube.

característica

  • Envíe el resultado a su terminal, json o S3
  • Especifique subprocesos y paralelice llamadas en cualquier número deseado de lotes
  • Especifique cualquier parámetro de Nuclei, como localmente
  • Especificar hosts individuales o desde un archivo
  • Ejecute el servidor http para escanear desde la API
  • ejecute el servidor http para obtener el estado del escaneo
  • Buscar resultados de consultas de S3 a través de Athena
  • Especifique la configuración personalizada de generación de informes y núcleo

uso

Piense en Nuclear Pond como una forma de ejecutar Nuclei en la nube. Puede usarlo como lo haría en su máquina local, pero ejecútelos en paralelo y con tantos hosts como desee especificar. Todo lo que necesita considerar son las banderas de la línea de comando de núcleos que desea pasarle.

Configuración e instalación

Instalar Nuclear Pond requiere configurar el backend módulo de terreno.Puedes hacer esto ejecutando terraform apply o usando Tragente.

$ go install github.com/DevSecOpsDocs/nuclearpond@latest

Variable ambiental

Puede pasar el backend usando banderas o variables de entorno.puedes usarlo -f o --function-name Especifique su función Lambda y -r o --region al área designada. A continuación se muestran las variables de entorno que puede utilizar.

banderas de línea de comando

Aquí hay algunas banderas que se pueden especificar en tiempo de ejecución nuclearpond.Las principales banderas que necesita son -t o -l Para tu objetivo, -a Para los parámetros del kernel, y -o Especifique su salida.Al especificar argumentos Nuclei, debe pasarlos como cadenas codificadas en base64 haciendo -a $(echo -ne "-t dns" | base64).

Orden

Los siguientes son los subcomandos que puede ejecutar en Nuclearpond.

correr

Ejecute el subcomando Nuclearpond nuclearpond run -t devsecopsdocs.com -r us-east-1 -f jwalker-nuclei-runner-function -a $(echo -ne "-t dns" | base64) -o cmd -b 1 donde esta el objetivo devsecopsdocs.comla región es us-east-1El nombre de la función lambda es jwalker-nuclei-runner-functionlos parámetros del núcleo son -t dnsla salida es cmdy ejecutar una función a través de un lote de un host -b 1.

$ nuclearpond run -h
Executes nuclei tasks in parallel by invoking lambda asynchronously

Usage:
  nuclearpond run [flags]

Flags:
  -a, --args string            nuclei arguments as base64 encoded string
  -b, --batch-size int         batch size for number of targets per execution (default 1)
  -f, --function-name string   AWS Lambda function name
  -h, --help                   help for run
  -o, --output string          output type to save nuclei results(s3, cmd, or json) (default "cmd")
  -r, --region string          AWS region to run nuclei
  -s, --silent                 silent command line output
  -t, --target string          individual target to specify
  -l, --targets string         list of targets in a file
  -c, --threads int            number of threads to run lambda functions, default is 1 which will be slow (default 1)

plantilla personalizada

De manera predeterminada, los módulos de terraformación descargan plantillas y agregan plantillas como capas cuando se ejecutan.este Variables para descargar plantillas Descargue el zip de lanzamiento usando el proveedor github de terraform. Los nombres de las carpetas en el zip estarán en /opt.Dado que Nuclei los descarga en tiempo de ejecución, no tenemos que hacerlo, pero para el rendimiento puede especificar -t /opt/nuclei-templates-9.3.4/dns Ejecute la plantilla en el zip descargado. Para especificar su propia plantilla, debe hacer referencia a una versión. Al hacer esto en su propio repositorio, debe especificar estas variables en el módulo de terraformación, github_token No se requiere si su repositorio es público.

  • repositorio_github
  • github_propietario
  • etiqueta de lanzamiento
  • github_token

Resultados de la búsqueda

Si ha especificado s3 Como resultado, sus hallazgos estarán en S3. La forma más rápida de conseguirlos es con Atenea. Suponiendo que tiene configurado el módulo terraform como backend, todo lo que necesita hacer es consultarlos directamente a través de athena. Es posible que deba configurar los resultados de la consulta si aún no lo ha hecho.

select
  *
from
  nuclei_db.findings_db
limit 10;

Verifique con anticipación

Para entender la consulta más profundamente, me gustaría darle un ejemplo simple.En la declaración de selección, profundizamos hasta info Pilar, "matched-at" Las columnas deben estar entre comillas dobles por las siguientes razones - carácter, y solo busca hallazgos críticos y de alto nivel producidos por Nuclei.

SELECT
  info.name,
  host,
  type,
  info.severity,
  "matched-at",
  info.description,
  template,
  dt
FROM 
  "nuclei_db"."findings_db"
where 
  host like '%devsecopsdocs.com'
  and info.severity in ('high','critical')

infraestructura

Infraestructura back-end, todo en uno módulo de terreno. Recomiendo encarecidamente leer el LÉAME asociado con él, ya que tendrá algunas notas importantes.

  • función lambda
  • cubeta S3
    • almacenar kernel binario
    • Almacenar archivos de configuración
    • almacenar los resultados de la encuesta
  • Pegar base de datos y tablas.
    • Le permite consultar los resultados en S3
    • por hora
    • proyección de partición
  • Roles de IAM para funciones de Lambda

por favor considera atención y apoyo Siempre estamos actualizados

LEER  Instalar el clúster de Kubernetes con Kubeadm en RHEL

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba