
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.
AWS_LAMBDA_FUNCTION_NAME
es el nombre de la función lambda que realiza el escaneoAWS_REGION
es la región donde se implementan sus recursosNUCLEARPOND_API_KEY
es la clave API utilizada para autenticarse en la APIAWS_DYNAMODB_TABLE
es la tabla de dynamodb que almacena el estado del análisis de la API
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.
- ejecutar: realizar un escaneo nuclear
- Servicios: API básica para realizar escaneos nucleares
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.com
la región es us-east-1
El nombre de la función lambda es jwalker-nuclei-runner-function
los parámetros del núcleo son -t dns
la salida es cmd
y 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