n8n-nodes-soar 0.1.16 → 0.1.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/common/asset.js +141 -0
  2. package/dist/common/collector.js +32 -0
  3. package/dist/common/connectionType.js +15 -0
  4. package/dist/common/executor/docker.executor.js +97 -0
  5. package/dist/common/executor/executor.js +48 -0
  6. package/dist/common/executor/k8s.executor.js +190 -0
  7. package/dist/common/runner/container.runner.js +174 -0
  8. package/dist/common/runner/priority.js +44 -0
  9. package/dist/common/runner/priority.runner.js +38 -0
  10. package/dist/common/runner/runner.js +57 -0
  11. package/dist/credentials/Docker/Docker.credentials.js +149 -0
  12. package/dist/credentials/Docker/docker.svg +7 -0
  13. package/dist/credentials/{FofaCredentials.credentials.js → FofaApi/FofaApi.credentials.js} +5 -5
  14. package/dist/credentials/Kubernetes/Kubernetes.credentials.js +82 -0
  15. package/dist/credentials/Kubernetes/k8s.svg +1 -0
  16. package/dist/nodes/Asset/SplitAsset/SplitAsset.node.js +110 -0
  17. package/dist/nodes/Asset/SplitAsset/split.svg +13 -0
  18. package/dist/nodes/Collector/Collector.node.js +123 -0
  19. package/dist/nodes/Executor/DockerExecutor/DockerExecutor.node.js +59 -0
  20. package/dist/nodes/Executor/DockerExecutor/docker.svg +7 -0
  21. package/dist/nodes/Executor/KubernetesExecutor/KubernetesExecutor.node.js +59 -0
  22. package/dist/nodes/Executor/KubernetesExecutor/k8s.svg +1 -0
  23. package/dist/nodes/Fofa/Fofa.node.js +20 -7
  24. package/dist/nodes/Katana/Katana.node.js +1 -1
  25. package/dist/nodes/Nuclei/Nuclei.node.js +1 -1
  26. package/dist/nodes/Runner/Dns/Dns.node.js +199 -0
  27. package/dist/nodes/Runner/Dns/script.js +81 -0
  28. package/dist/nodes/Runner/Httpx/Httpx.node.js +830 -0
  29. package/dist/nodes/Runner/Httpx/httpx.svg +3 -0
  30. package/dist/nodes/Runner/Katana/Katana.node.js +521 -0
  31. package/dist/nodes/Runner/Katana/a.json +30 -0
  32. package/dist/nodes/Runner/Katana/katana.svg +3 -0
  33. package/dist/nodes/Runner/Masscan/Masscan.node.js +151 -0
  34. package/dist/nodes/Runner/Masscan/masscan.svg +70 -0
  35. package/dist/nodes/{Naabu → Runner/Naabu}/Naabu.node.js +86 -48
  36. package/dist/nodes/Runner/Naabu/naabu.svg +3 -0
  37. package/dist/nodes/Runner/Nuclei/Nuclei.node.js +1057 -0
  38. package/dist/nodes/Runner/Nuclei/a.json +48 -0
  39. package/dist/nodes/Runner/Nuclei/nuclei.svg +3 -0
  40. package/dist/nodes/Runner/Priority/Priority.node.js +110 -0
  41. package/dist/nodes/Runner/PriorityAdd/PriorityAdd.node.js +97 -0
  42. package/dist/nodes/Runner/Router/SwitchRouter/SwitchRouter.node.js +101 -0
  43. package/dist/nodes/{Subfinder → Runner/Subfinder}/Subfinder.node.js +74 -43
  44. package/dist/nodes/Runner/Subfinder/subfinder.svg +3 -0
  45. package/dist/nodes/Runner/Unauthor/Unauthor.node.js +169 -0
  46. package/package.json +63 -59
  47. package/dist/nodes/Cdncheck/Cdncheck.node.json +0 -9
  48. package/dist/nodes/Fofa/Fofa.node.json +0 -9
  49. package/dist/nodes/Httpx/Httpx.node.json +0 -9
  50. package/dist/nodes/Naabu/Naabu.node.json +0 -9
  51. package/dist/nodes/Subfinder/Subfinder.node.json +0 -9
  52. package/dist/utils/executor.js +0 -233
  53. package/dist/utils/interface.js +0 -4
  54. package/dist/utils/runner/docker.runner.js +0 -72
  55. package/dist/utils/runner/k8s.runner.js +0 -167
  56. package/dist/utils/runner/runner.js +0 -11
  57. /package/dist/credentials/{fofa.svg → FofaApi/fofa.svg} +0 -0
@@ -0,0 +1,1057 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "Nuclei", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return Nuclei;
9
+ }
10
+ });
11
+ const _connectionType = require("../../../common/connectionType");
12
+ const _containerrunner = require("../../../common/runner/container.runner");
13
+ const _priority = require("../../../common/runner/priority");
14
+ function _define_property(obj, key, value) {
15
+ if (key in obj) {
16
+ Object.defineProperty(obj, key, {
17
+ value: value,
18
+ enumerable: true,
19
+ configurable: true,
20
+ writable: true
21
+ });
22
+ } else {
23
+ obj[key] = value;
24
+ }
25
+ return obj;
26
+ }
27
+ class NucleiRunner extends _containerrunner.ContainerRunner {
28
+ cmd(assets) {
29
+ return [
30
+ "nuclei",
31
+ "-silent",
32
+ "-jsonl",
33
+ "-disable-update-check",
34
+ "-target",
35
+ assets.map((a)=>a.getHostAndPort()).join(","),
36
+ ...this.collectGeneratedOptions([
37
+ "options.target",
38
+ "options.templates",
39
+ "options.filtering",
40
+ "options.output",
41
+ "options.configurations",
42
+ "options.interactsh",
43
+ "options.fuzzing",
44
+ "options.uncover",
45
+ "options.rateLimit",
46
+ "options.optimizations",
47
+ "options.headless",
48
+ "options.statistics",
49
+ "options.cloud"
50
+ ])
51
+ ];
52
+ }
53
+ process(rawAssets, stdout) {
54
+ const result = new Map();
55
+ for (const line of stdout.trim().split("\n")){
56
+ const json = JSON.parse(line);
57
+ result.set(json.host, (result.get(json.host) || []).concat(json));
58
+ }
59
+ return rawAssets.map((a)=>{
60
+ const res = result.get(a.getHostAndPort());
61
+ if (res) {
62
+ a.response = res;
63
+ a.success = true;
64
+ }
65
+ return a;
66
+ });
67
+ }
68
+ }
69
+ class Nuclei {
70
+ async supplyData(itemIndex) {
71
+ return {
72
+ response: [
73
+ new NucleiRunner("nuclei", _priority.EXPLOIT_RUNNER_PRIORITY, this, itemIndex)
74
+ ]
75
+ };
76
+ }
77
+ constructor(){
78
+ _define_property(this, "description", {
79
+ displayName: "Runner: Nuclei",
80
+ name: "nuclei",
81
+ icon: "file:nuclei.svg",
82
+ group: [
83
+ "transform"
84
+ ],
85
+ version: 1,
86
+ codex: {
87
+ alias: [
88
+ "Nuclei"
89
+ ],
90
+ categories: [
91
+ "SOAR"
92
+ ],
93
+ subcategories: {
94
+ SOAR: [
95
+ "runner"
96
+ ]
97
+ },
98
+ resources: {
99
+ primaryDocumentation: [
100
+ {
101
+ url: "https://github.com/projectdiscovery/nuclei"
102
+ }
103
+ ]
104
+ }
105
+ },
106
+ description: "Interact with Nuclei",
107
+ defaults: {
108
+ name: "Nuclei"
109
+ },
110
+ // eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node
111
+ inputs: [],
112
+ // eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong
113
+ outputs: [
114
+ _connectionType.NodeConnectionType.Runner
115
+ ],
116
+ properties: [
117
+ {
118
+ displayName: "Only Success",
119
+ name: "onlySuccess",
120
+ type: "boolean",
121
+ default: true
122
+ },
123
+ {
124
+ displayName: "Options",
125
+ name: "options",
126
+ type: "fixedCollection",
127
+ default: {},
128
+ typeOptions: {
129
+ multipleValues: true
130
+ },
131
+ options: [
132
+ {
133
+ displayName: "Target",
134
+ name: "target",
135
+ values: [
136
+ {
137
+ displayName: "Options",
138
+ name: "key",
139
+ type: "options",
140
+ default: "-scan-all-ips",
141
+ options: [
142
+ {
143
+ name: "Scan All IPs",
144
+ value: "-scan-all-ips",
145
+ description: "Scan all the IP's associated with dns record"
146
+ },
147
+ {
148
+ name: "IP Version",
149
+ value: "-ip-version",
150
+ description: "IP version to scan of hostname (4,6) - (default 4) (string[])"
151
+ }
152
+ ]
153
+ },
154
+ {
155
+ displayName: "Value",
156
+ name: "value",
157
+ type: "string",
158
+ default: ""
159
+ }
160
+ ]
161
+ },
162
+ {
163
+ displayName: "Templates",
164
+ name: "templates",
165
+ values: [
166
+ {
167
+ displayName: "Options",
168
+ name: "key",
169
+ type: "options",
170
+ default: "-automatic-scan",
171
+ options: [
172
+ {
173
+ name: "Automatic Scan",
174
+ value: "-automatic-scan",
175
+ description: "Automatic web scan using wappalyzer technology detection to tags mapping"
176
+ },
177
+ {
178
+ name: "New Templates",
179
+ value: "-new-templates",
180
+ description: "Run only new templates added in latest nuclei-templates release"
181
+ },
182
+ {
183
+ name: "New Templates Version",
184
+ value: "-new-templates-version",
185
+ description: "Run new templates added in specific version (string[])"
186
+ },
187
+ {
188
+ name: "No Strict Syntax",
189
+ value: "-no-strict-syntax",
190
+ description: "Disable strict syntax check on templates"
191
+ },
192
+ {
193
+ name: "Template Display",
194
+ value: "-template-display",
195
+ description: "Displays the templates content"
196
+ },
197
+ {
198
+ name: "Template URL",
199
+ value: "-template-url",
200
+ description: "Template URL or list containing template URLs to run (comma-separated, file) (string[])"
201
+ },
202
+ {
203
+ name: "Templates",
204
+ value: "-templates",
205
+ description: "List of template or template directory to run (comma-separated, file) (string[])"
206
+ },
207
+ {
208
+ name: "Tl",
209
+ value: "-tl",
210
+ description: "List all available templates"
211
+ },
212
+ {
213
+ name: "ValIDate",
214
+ value: "-validate",
215
+ description: "Validate the passed templates to nuclei"
216
+ },
217
+ {
218
+ name: "Workflow URL",
219
+ value: "-workflow-url",
220
+ description: "Workflow URL or list containing workflow URLs to run (comma-separated, file) (string[])"
221
+ },
222
+ {
223
+ name: "Workflows",
224
+ value: "-workflows",
225
+ description: "List of workflow or workflow directory to run (comma-separated, file) (string[])"
226
+ }
227
+ ]
228
+ },
229
+ {
230
+ displayName: "Value",
231
+ name: "value",
232
+ type: "string",
233
+ default: ""
234
+ }
235
+ ]
236
+ },
237
+ {
238
+ displayName: "Filtering",
239
+ name: "filtering",
240
+ values: [
241
+ {
242
+ displayName: "Options",
243
+ name: "key",
244
+ type: "options",
245
+ default: "-author",
246
+ options: [
247
+ {
248
+ name: "Author",
249
+ value: "-author",
250
+ description: "Templates to run based on authors (comma-separated, file) (string[])"
251
+ },
252
+ {
253
+ name: "Exclude ID",
254
+ value: "-exclude-id",
255
+ description: "Templates to exclude based on template IDs (comma-separated, file) (string[])"
256
+ },
257
+ {
258
+ name: "Exclude Matchers",
259
+ value: "-exclude-matchers",
260
+ description: "Template matchers to exclude in result (string[])"
261
+ },
262
+ {
263
+ name: "Exclude Severity",
264
+ value: "-exclude-severity",
265
+ description: "Value[] templates to exclude based on severity. Possible values: info, low, medium, high, critical, unknown."
266
+ },
267
+ {
268
+ name: "Exclude Tags",
269
+ value: "-exclude-tags",
270
+ description: "Templates to exclude based on tags (comma-separated, file) (string[])"
271
+ },
272
+ {
273
+ name: "Exclude Templates",
274
+ value: "-exclude-templates",
275
+ description: "Template or template directory to exclude (comma-separated, file) (string[])"
276
+ },
277
+ {
278
+ name: "Exclude Type",
279
+ value: "-exclude-type",
280
+ description: "Value[] templates to exclude based on protocol type. Possible values: dns, file, http, headless, tcp, workflow, ssl, websocket, whois."
281
+ },
282
+ {
283
+ name: "Include Tags",
284
+ value: "-include-tags",
285
+ description: "Tags to be executed even if they are excluded either by default or configuration (string[])"
286
+ },
287
+ {
288
+ name: "Include Templates",
289
+ value: "-include-templates",
290
+ description: "Templates to be executed even if they are excluded either by default or configuration (string[])"
291
+ },
292
+ {
293
+ name: "Severity",
294
+ value: "-severity",
295
+ description: "Value[] templates to run based on severity. Possible values: info, low, medium, high, critical, unknown."
296
+ },
297
+ {
298
+ name: "Tags",
299
+ value: "-tags",
300
+ description: "Templates to run based on tags (comma-separated, file) (string[])"
301
+ },
302
+ {
303
+ name: "Template Condition",
304
+ value: "-template-condition",
305
+ description: "Templates to run based on expression condition (string[])"
306
+ },
307
+ {
308
+ name: "Template ID",
309
+ value: "-template-id",
310
+ description: "Templates to run based on template IDs (comma-separated, file, allow-wildcard) (string[])"
311
+ },
312
+ {
313
+ name: "Type",
314
+ value: "-type",
315
+ description: "Value[] templates to run based on protocol type. Possible values: dns, file, http, headless, tcp, workflow, ssl, websocket, whois."
316
+ }
317
+ ]
318
+ },
319
+ {
320
+ displayName: "Value",
321
+ name: "value",
322
+ type: "string",
323
+ default: ""
324
+ }
325
+ ]
326
+ },
327
+ {
328
+ displayName: "Output",
329
+ name: "output",
330
+ values: [
331
+ {
332
+ displayName: "Options",
333
+ name: "key",
334
+ type: "options",
335
+ default: "-include-rr -omit-raw",
336
+ options: [
337
+ {
338
+ name: "Include Rr Omit Raw",
339
+ value: "-include-rr -omit-raw",
340
+ description: "Include request/response pairs in the JSON, JSONL, and Markdown outputs (for findings only) [DEPRECATED use -omit-raw] (default true)"
341
+ },
342
+ {
343
+ name: "Markdown Export",
344
+ value: "-markdown-export",
345
+ description: "Directory to export results in markdown format (string)"
346
+ },
347
+ {
348
+ name: "Matcher Status",
349
+ value: "-matcher-status",
350
+ description: "Display match failure status"
351
+ },
352
+ {
353
+ name: "No Meta",
354
+ value: "-no-meta",
355
+ description: "Disable printing result metadata in cli output"
356
+ },
357
+ {
358
+ name: "Omit Raw",
359
+ value: "-omit-raw",
360
+ description: "Omit request/response pairs in the JSON, JSONL, and Markdown outputs (for findings only)"
361
+ },
362
+ {
363
+ name: "Report Db",
364
+ value: "-report-db",
365
+ description: "Nuclei reporting database (always use this to persist report data) (string)"
366
+ },
367
+ {
368
+ name: "Sarif Export",
369
+ value: "-sarif-export",
370
+ description: "File to export results in SARIF format (string)"
371
+ },
372
+ {
373
+ name: "Timestamp",
374
+ value: "-timestamp",
375
+ description: "Enables printing timestamp in cli output"
376
+ }
377
+ ]
378
+ },
379
+ {
380
+ displayName: "Value",
381
+ name: "value",
382
+ type: "string",
383
+ default: ""
384
+ }
385
+ ]
386
+ },
387
+ {
388
+ displayName: "Configurations",
389
+ name: "configurations",
390
+ values: [
391
+ {
392
+ displayName: "Options",
393
+ name: "key",
394
+ type: "options",
395
+ default: "-allow-local-file-access",
396
+ options: [
397
+ {
398
+ name: "Allow Local File Access",
399
+ value: "-allow-local-file-access",
400
+ description: "Allows file (payload) access anywhere on the system"
401
+ },
402
+ {
403
+ name: "Attack Type",
404
+ value: "-attack-type",
405
+ description: "Type of payload combinations to perform (batteringram,pitchfork,clusterbomb) (string)"
406
+ },
407
+ {
408
+ name: "Client Ca",
409
+ value: "-client-ca",
410
+ description: "Client certificate authority file (PEM-encoded) used for authenticating against scanned hosts (string)"
411
+ },
412
+ {
413
+ name: "Client Cert",
414
+ value: "-client-cert",
415
+ description: "Client certificate file (PEM-encoded) used for authenticating against scanned hosts (string)"
416
+ },
417
+ {
418
+ name: "Client Key",
419
+ value: "-client-key",
420
+ description: "Client key file (PEM-encoded) used for authenticating against scanned hosts (string)"
421
+ },
422
+ {
423
+ name: "Config",
424
+ value: "-config",
425
+ description: "Path to the nuclei configuration file (string)"
426
+ },
427
+ {
428
+ name: "Config Directory",
429
+ value: "-config-directory",
430
+ description: "Override the default config path ($home/.config) (string)"
431
+ },
432
+ {
433
+ name: "Disable Clustering",
434
+ value: "-disable-clustering",
435
+ description: "Disable clustering of requests"
436
+ },
437
+ {
438
+ name: "Disable Redirects",
439
+ value: "-disable-redirects",
440
+ description: "Disable redirects for http templates"
441
+ },
442
+ {
443
+ name: "Env Vars",
444
+ value: "-env-vars",
445
+ description: "Enable environment variables to be used in template"
446
+ },
447
+ {
448
+ name: "Follow Host Redirects",
449
+ value: "-follow-host-redirects",
450
+ description: "Follow redirects on the same host"
451
+ },
452
+ {
453
+ name: "Follow Redirects",
454
+ value: "-follow-redirects",
455
+ description: "Enable following redirects for http templates"
456
+ },
457
+ {
458
+ name: "Force Http2",
459
+ value: "-force-http2",
460
+ description: "Force http2 connection on requests"
461
+ },
462
+ {
463
+ name: "Header",
464
+ value: "-header",
465
+ description: "Custom header/cookie to include in all http request in header:value format (cli, file) (string[])"
466
+ },
467
+ {
468
+ name: "Interface",
469
+ value: "-interface",
470
+ description: "Network interface to use for network scan (string)"
471
+ },
472
+ {
473
+ name: "Max Redirects",
474
+ value: "-max-redirects",
475
+ description: "Max number of redirects to follow for http templates (default 10) (int)"
476
+ },
477
+ {
478
+ name: "Passive",
479
+ value: "-passive",
480
+ description: "Enable passive HTTP response processing mode"
481
+ },
482
+ {
483
+ name: "Report Config",
484
+ value: "-report-config",
485
+ description: "Nuclei reporting module configuration file (string)"
486
+ },
487
+ {
488
+ name: "Reset",
489
+ value: "-reset",
490
+ description: "Reset removes all nuclei configuration and data files (including nuclei-templates)"
491
+ },
492
+ {
493
+ name: "Resolvers",
494
+ value: "-resolvers",
495
+ description: "File containing resolver list for nuclei (string)"
496
+ },
497
+ {
498
+ name: "Response Size Read",
499
+ value: "-response-size-read",
500
+ description: "Max response size to read in bytes (default 10485760) (int)"
501
+ },
502
+ {
503
+ name: "Response Size Save",
504
+ value: "-response-size-save",
505
+ description: "Max response size to read in bytes (default 1048576) (int)"
506
+ },
507
+ {
508
+ name: "Restrict Local Network Access",
509
+ value: "-restrict-local-network-access",
510
+ description: "Blocks connections to the local / private network"
511
+ },
512
+ {
513
+ name: "Show Match Line",
514
+ value: "-show-match-line",
515
+ description: "Show match lines for file templates, works with extractors only"
516
+ },
517
+ {
518
+ name: "Sni",
519
+ value: "-sni",
520
+ description: "Tls sni hostname to use (default: input domain name) (string)"
521
+ },
522
+ {
523
+ name: "Source IP",
524
+ value: "-source-ip",
525
+ description: "Source ip address to use for network scan (string)"
526
+ },
527
+ {
528
+ name: "System Resolvers",
529
+ value: "-system-resolvers",
530
+ description: "Use system DNS resolving as error fallback"
531
+ },
532
+ {
533
+ name: "Tls Impersonate",
534
+ value: "-tls-impersonate",
535
+ description: "Enable experimental client hello (ja3) tls randomization"
536
+ },
537
+ {
538
+ name: "Var",
539
+ value: "-var",
540
+ description: "Custom vars in key=value format (value)"
541
+ },
542
+ {
543
+ name: "Ztls",
544
+ value: "-ztls",
545
+ description: "Use ztls library with autofallback to standard one for tls13 [Deprecated] autofallback to ztls is enabled by default"
546
+ }
547
+ ]
548
+ },
549
+ {
550
+ displayName: "Value",
551
+ name: "value",
552
+ type: "string",
553
+ default: ""
554
+ }
555
+ ]
556
+ },
557
+ {
558
+ displayName: "Interactsh",
559
+ name: "interactsh",
560
+ values: [
561
+ {
562
+ displayName: "Options",
563
+ name: "key",
564
+ type: "options",
565
+ default: "-interactions-cache-size",
566
+ options: [
567
+ {
568
+ name: "Interactions Cache Size",
569
+ value: "-interactions-cache-size",
570
+ description: "Number of requests to keep in the interactions cache (default 5000) (int)"
571
+ },
572
+ {
573
+ name: "Interactions Cooldown Period",
574
+ value: "-interactions-cooldown-period",
575
+ description: "Extra time for interaction polling before exiting (default 5) (int)"
576
+ },
577
+ {
578
+ name: "Interactions Eviction",
579
+ value: "-interactions-eviction",
580
+ description: "Number of seconds to wait before evicting requests from cache (default 60) (int)"
581
+ },
582
+ {
583
+ name: "Interactions Poll Duration",
584
+ value: "-interactions-poll-duration",
585
+ description: "Number of seconds to wait before each interaction poll request (default 5) (int)"
586
+ },
587
+ {
588
+ name: "Interactsh Server",
589
+ value: "-interactsh-server",
590
+ description: "Interactsh server URL for self-hosted instance (default: oast.pro,oast.live,oast.site,oast.online,oast.fun,oast.me) (string)"
591
+ },
592
+ {
593
+ name: "Interactsh Token",
594
+ value: "-interactsh-token",
595
+ description: "Authentication token for self-hosted interactsh server (string)"
596
+ },
597
+ {
598
+ name: "No Interactsh",
599
+ value: "-no-interactsh",
600
+ description: "Disable interactsh server for OAST testing, exclude OAST based templates"
601
+ }
602
+ ]
603
+ },
604
+ {
605
+ displayName: "Value",
606
+ name: "value",
607
+ type: "string",
608
+ default: ""
609
+ }
610
+ ]
611
+ },
612
+ {
613
+ displayName: "Fuzzing",
614
+ name: "fuzzing",
615
+ values: [
616
+ {
617
+ displayName: "Options",
618
+ name: "key",
619
+ type: "options",
620
+ default: "-fuzzing-type",
621
+ options: [
622
+ {
623
+ name: "Fuzzing Type",
624
+ value: "-fuzzing-type",
625
+ description: "Overrides fuzzing type set in template (replace, prefix, postfix, infix) (string)"
626
+ },
627
+ {
628
+ name: "Fuzzing Mode",
629
+ value: "-fuzzing-mode",
630
+ description: "Overrides fuzzing mode set in template (multiple, single) (string)"
631
+ }
632
+ ]
633
+ },
634
+ {
635
+ displayName: "Value",
636
+ name: "value",
637
+ type: "string",
638
+ default: ""
639
+ }
640
+ ]
641
+ },
642
+ {
643
+ displayName: "Uncover",
644
+ name: "uncover",
645
+ values: [
646
+ {
647
+ displayName: "Options",
648
+ name: "key",
649
+ type: "options",
650
+ default: "-uncover",
651
+ options: [
652
+ {
653
+ name: "Uncover",
654
+ value: "-uncover",
655
+ description: "Enable uncover engine"
656
+ },
657
+ {
658
+ name: "Uncover Engine",
659
+ value: "-uncover-engine",
660
+ description: "Uncover search engine (shodan,censys,fofa,shodan-idb,quake,hunter,zoomeye,netlas,criminalip,publicwww,hunterhow) (default shodan) (string[])"
661
+ },
662
+ {
663
+ name: "Uncover Field",
664
+ value: "-uncover-field",
665
+ description: 'Uncover fields to return (ip,port,host) (default "ip:port") (string)'
666
+ },
667
+ {
668
+ name: "Uncover Limit",
669
+ value: "-uncover-limit",
670
+ description: "Uncover results to return (default 100) (int)"
671
+ },
672
+ {
673
+ name: "Uncover Query",
674
+ value: "-uncover-query",
675
+ description: "Uncover search query (string[])"
676
+ },
677
+ {
678
+ name: "Uncover Ratelimit",
679
+ value: "-uncover-ratelimit",
680
+ description: "Override ratelimit of engines with unknown ratelimit (default 60 req/min) (default 60) (int)"
681
+ }
682
+ ]
683
+ },
684
+ {
685
+ displayName: "Value",
686
+ name: "value",
687
+ type: "string",
688
+ default: ""
689
+ }
690
+ ]
691
+ },
692
+ {
693
+ displayName: "Rate Limit",
694
+ name: "rateLimit",
695
+ values: [
696
+ {
697
+ displayName: "Options",
698
+ name: "key",
699
+ type: "options",
700
+ default: "-bulk-size",
701
+ options: [
702
+ {
703
+ name: "Bulk Size",
704
+ value: "-bulk-size",
705
+ description: "Maximum number of hosts to be analyzed in parallel per template (default 25) (int)"
706
+ },
707
+ {
708
+ name: "Concurrency",
709
+ value: "-concurrency",
710
+ description: "Maximum number of templates to be executed in parallel (default 25) (int)"
711
+ },
712
+ {
713
+ name: "Headless Bulk Size",
714
+ value: "-headless-bulk-size",
715
+ description: "Maximum number of headless hosts to be analyzed in parallel per template (default 10) (int)"
716
+ },
717
+ {
718
+ name: "Headless Concurrency",
719
+ value: "-headless-concurrency",
720
+ description: "Maximum number of headless templates to be executed in parallel (default 10) (int)"
721
+ },
722
+ {
723
+ name: "Rate Limit",
724
+ value: "-rate-limit",
725
+ description: "Maximum number of requests to send per second (default 150) (int)"
726
+ },
727
+ {
728
+ name: "Rate Limit Minute",
729
+ value: "-rate-limit-minute",
730
+ description: "Maximum number of requests to send per minute (int)"
731
+ }
732
+ ]
733
+ },
734
+ {
735
+ displayName: "Value",
736
+ name: "value",
737
+ type: "string",
738
+ default: ""
739
+ }
740
+ ]
741
+ },
742
+ {
743
+ displayName: "Optimizations",
744
+ name: "optimizations",
745
+ values: [
746
+ {
747
+ displayName: "Options",
748
+ name: "key",
749
+ type: "options",
750
+ default: "-input-read-timeout",
751
+ options: [
752
+ {
753
+ name: "Input Read Timeout",
754
+ value: "-input-read-timeout",
755
+ description: "Timeout on input read (default 3m0s) (value)"
756
+ },
757
+ {
758
+ name: "Leave Default Ports",
759
+ value: "-leave-default-ports",
760
+ description: "Leave default HTTP/HTTPS ports (eg. host:80,host:443)."
761
+ },
762
+ {
763
+ name: "Max Host Error",
764
+ value: "-max-host-error",
765
+ description: "Max errors for a host before skipping from scan (default 30) (int)"
766
+ },
767
+ {
768
+ name: "No Httpx",
769
+ value: "-no-httpx",
770
+ description: "Disable httpx probing for non-URL input"
771
+ },
772
+ {
773
+ name: "No Mhe",
774
+ value: "-no-mhe",
775
+ description: "Disable skipping host from scan based on errors"
776
+ },
777
+ {
778
+ name: "No Stdin",
779
+ value: "-no-stdin",
780
+ description: "Disable stdin processing"
781
+ },
782
+ {
783
+ name: "Project",
784
+ value: "-project",
785
+ description: "Use a project folder to avoid sending same request multiple times"
786
+ },
787
+ {
788
+ name: "Project Path",
789
+ value: "-project-path",
790
+ description: 'Set a specific project path (default "/tmp") (string)'
791
+ },
792
+ {
793
+ name: "Retries",
794
+ value: "-retries",
795
+ description: "Number of times to retry a failed request (default 1) (int)"
796
+ },
797
+ {
798
+ name: "Scan Strategy",
799
+ value: "-scan-strategy",
800
+ description: "Strategy to use while scanning(auto/host-spray/template-spray) (default auto) (value)"
801
+ },
802
+ {
803
+ name: "Stop At First Match",
804
+ value: "-stop-at-first-match",
805
+ description: "Stop processing HTTP requests after the first match (may break template/workflow logic)"
806
+ },
807
+ {
808
+ name: "Stream",
809
+ value: "-stream",
810
+ description: "Stream mode - start elaborating without sorting the input"
811
+ },
812
+ {
813
+ name: "Timeout",
814
+ value: "-timeout",
815
+ description: "Time to wait in seconds before timeout (default 10) (int)"
816
+ },
817
+ {
818
+ name: "Track Error",
819
+ value: "-track-error",
820
+ description: "Adds given error to max-host-error watchlist (standard, file) (string[])"
821
+ }
822
+ ]
823
+ },
824
+ {
825
+ displayName: "Value",
826
+ name: "value",
827
+ type: "string",
828
+ default: ""
829
+ }
830
+ ]
831
+ },
832
+ {
833
+ displayName: "Headless",
834
+ name: "headless",
835
+ values: [
836
+ {
837
+ displayName: "Options",
838
+ name: "key",
839
+ type: "options",
840
+ default: "-headless",
841
+ options: [
842
+ {
843
+ name: "Headless",
844
+ value: "-headless",
845
+ description: "Enable templates that require headless browser support (root user on Linux will disable sandbox)"
846
+ },
847
+ {
848
+ name: "Headless Options",
849
+ value: "-headless-options",
850
+ description: "Start headless chrome with additional options (string[])"
851
+ },
852
+ {
853
+ name: "List Headless Action",
854
+ value: "-list-headless-action",
855
+ description: "List available headless actions"
856
+ },
857
+ {
858
+ name: "Page Timeout",
859
+ value: "-page-timeout",
860
+ description: "Seconds to wait for each page in headless mode (default 20) (int)"
861
+ },
862
+ {
863
+ name: "Show Browser",
864
+ value: "-show-browser",
865
+ description: "Show the browser on the screen when running templates with headless mode"
866
+ },
867
+ {
868
+ name: "System Chrome",
869
+ value: "-system-chrome",
870
+ description: "Use local installed Chrome browser instead of nuclei installed"
871
+ }
872
+ ]
873
+ },
874
+ {
875
+ displayName: "Value",
876
+ name: "value",
877
+ type: "string",
878
+ default: ""
879
+ }
880
+ ]
881
+ },
882
+ {
883
+ displayName: "Statistics",
884
+ name: "statistics",
885
+ values: [
886
+ {
887
+ displayName: "Options",
888
+ name: "key",
889
+ type: "options",
890
+ default: "-metrics",
891
+ options: [
892
+ {
893
+ name: "Metrics",
894
+ value: "-metrics",
895
+ description: "Expose nuclei metrics on a port"
896
+ },
897
+ {
898
+ name: "Metrics Port",
899
+ value: "-metrics-port",
900
+ description: "Port to expose nuclei metrics on (default 9092) (int)"
901
+ },
902
+ {
903
+ name: "Stats",
904
+ value: "-stats",
905
+ description: "Display statistics about the running scan"
906
+ },
907
+ {
908
+ name: "Stats Interval",
909
+ value: "-stats-interval",
910
+ description: "Number of seconds to wait between showing a statistics update (default 5) (int)"
911
+ },
912
+ {
913
+ name: "Stats JSON",
914
+ value: "-stats-json",
915
+ description: "Display statistics in JSONL(ines) format"
916
+ }
917
+ ]
918
+ },
919
+ {
920
+ displayName: "Value",
921
+ name: "value",
922
+ type: "string",
923
+ default: ""
924
+ }
925
+ ]
926
+ },
927
+ {
928
+ displayName: "Cloud",
929
+ name: "cloud",
930
+ values: [
931
+ {
932
+ displayName: "Options",
933
+ name: "key",
934
+ type: "options",
935
+ default: "-add-datasource",
936
+ options: [
937
+ {
938
+ name: "Add Datasource",
939
+ value: "-add-datasource",
940
+ description: "Add specified data source (s3,github) (string)"
941
+ },
942
+ {
943
+ name: "Add Target",
944
+ value: "-add-target",
945
+ description: "Add target(s) to cloud (string)"
946
+ },
947
+ {
948
+ name: "Add Template",
949
+ value: "-add-template",
950
+ description: "Add template(s) to cloud (string)"
951
+ },
952
+ {
953
+ name: "Cloud",
954
+ value: "-cloud",
955
+ description: "Run scan on nuclei cloud"
956
+ },
957
+ {
958
+ name: "Delete Datasource",
959
+ value: "-delete-datasource",
960
+ description: "Delete specified data source (string)"
961
+ },
962
+ {
963
+ name: "Delete Scan",
964
+ value: "-delete-scan",
965
+ description: "Delete cloud scan by ID (string)"
966
+ },
967
+ {
968
+ name: "Delete Target",
969
+ value: "-delete-target",
970
+ description: "Delete target(s) from cloud (string)"
971
+ },
972
+ {
973
+ name: "Delete Template",
974
+ value: "-delete-template",
975
+ description: "Delete template(s) from cloud (string)"
976
+ },
977
+ {
978
+ name: "Disable Reportsource",
979
+ value: "-disable-reportsource",
980
+ description: "Disable specified reporting source (string)"
981
+ },
982
+ {
983
+ name: "Enable Reportsource",
984
+ value: "-enable-reportsource",
985
+ description: "Enable specified reporting source (string)"
986
+ },
987
+ {
988
+ name: "Get Target",
989
+ value: "-get-target",
990
+ description: "Get target content by ID (string)"
991
+ },
992
+ {
993
+ name: "Get Template",
994
+ value: "-get-template",
995
+ description: "Get template content by ID (string)"
996
+ },
997
+ {
998
+ name: "Limit",
999
+ value: "-limit",
1000
+ description: "Limit the number of output to display (default 100) (int)"
1001
+ },
1002
+ {
1003
+ name: "List Datasource",
1004
+ value: "-list-datasource",
1005
+ description: "List cloud datasource by ID"
1006
+ },
1007
+ {
1008
+ name: "List Output",
1009
+ value: "-list-output",
1010
+ description: "List scan output by scan ID (string)"
1011
+ },
1012
+ {
1013
+ name: "List Reportsource",
1014
+ value: "-list-reportsource",
1015
+ description: "List reporting sources"
1016
+ },
1017
+ {
1018
+ name: "List Scan",
1019
+ value: "-list-scan",
1020
+ description: "List previous cloud scans"
1021
+ },
1022
+ {
1023
+ name: "List Target",
1024
+ value: "-list-target",
1025
+ description: "List cloud target by ID"
1026
+ },
1027
+ {
1028
+ name: "List Template",
1029
+ value: "-list-template",
1030
+ description: "List cloud template by ID"
1031
+ },
1032
+ {
1033
+ name: "No Store",
1034
+ value: "-no-store",
1035
+ description: "Disable scan/output storage on cloud"
1036
+ },
1037
+ {
1038
+ name: "No Tables",
1039
+ value: "-no-tables",
1040
+ description: "Do not display pretty-printed tables"
1041
+ }
1042
+ ]
1043
+ },
1044
+ {
1045
+ displayName: "Value",
1046
+ name: "value",
1047
+ type: "string",
1048
+ default: ""
1049
+ }
1050
+ ]
1051
+ }
1052
+ ]
1053
+ }
1054
+ ]
1055
+ });
1056
+ }
1057
+ }